Purpose
Specification
Apiary: Activate equipment
Service logic
- Only authenticated and authorized HR, ADMIN, OWNER employees from MSP, OUTPATIENT, PRIMARY_CARE, EMERGENCY legal entities can activate equipments.
- Only INACTIVE equipment can be deactivated
- Legal entity can activate only its own equipments
Authentication
- Verify the validity of access token
- Return 401 in case validation fails
- Check scopes in order to perform this action (scope = 'equipment:write')
- Return 403 in case invalid scope(s)
Validate legal entity
Check that legal entity is active (status = ACTIVE, SUSPENDED)
- Extract client_id from token (token.client_id == legal_entity_id)
- Check legal entity status (status = ACTIVE, SUSPENDED)
- In case of error - return 409 (Legal entity must be ACTIVE or SUSPENDED)
Validate division
Check that division is active
- Check division status (status = ACTIVE)
- In case of error - return 409 (Division must be active)
Validate equipment
- Check that equipment with such ID exists in the system (is_active = true)
- In case of error - return 404
- Check that equipment belongs to the same legal entity as the user
- In case of error - return 403
Validate transition
Only INACTIVE equipment can be activated
Available transitions
- INACTIVE → ACTIVE
In other cases - return 409 error with message "INACTIVE equipment cannot be ACTIVATED"
Update object in DB
1. equipments table
Patameter | Source | Description |
---|---|---|
status | Const: ACTIVE | By default ACTIVE for activated records |
updated_at | Timestamp: now() | Get current date-time |
updated_by | Token: user_id | Extract user from token |
Save object to DB
1. equipment_status_hstr table
Parameter | Source | Description |
---|---|---|
id | UUID | Autogenerated |
equipment_id | UUID | Reference to equipments.id |
status | Const: ACTIVE | By default ACTIVE for activated records |
inserted_by | Token: user_id | Extract user from token |
inserted_at | Timestamp: now() | Get current date-time |