ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Purpose

This WS is designed for registration equipments in divisions of legal entities.

Specification

Apiary TBD

Service logic

  1. Only authenticated and authorized HR, ADMIN, OWNER employees can register equipments.
  2. Equipments can be registered in MSP, OUTPATIENT, PRIMARY_CARE and EMERGENCY legal entities.
  3. Equipment can heave only one active link with division. One division can have many equipments.
  4. Legal entity can register equipments for its own divisions only.

Authentication

  1. Verify the validity of access token
    1. Return 401 in case validation fails
  2. Check user scopes in order to perform this action (scope = 'equipment:write')
    1. Return 403 in case invalid scope(s)

Validate legal entity

Check that legal entity is active (status = ACTIVE, SUSPENDED)

  1. Extract client_id from token (token.client_id == legal_entity_id)
  2. Check legal entity status (status = ACTIVE, SUSPENDED)
    1. In case of error - return 409 (Legal entity must be ACTIVE or SUSPENDED)

Validate request

Validate request using JSON schema (TBD)

Validate division

If division_id passed in request body:

  1. Validate division_id in request body - division exists and is_active = true
    1. Return 422 in case validation fails
  2. Check division_id belongs to the same legal_entity_id (from token) as the user
    1. Return 422 with message  "Division is not within current legal entity" in case validation fails.
  3. Check division status =ACTIVE.
    1. Return 422 with message "Division is not active" in case validation fails.

Validate type

Validate that an equipments type is a valid CodeableConcept type value from corresponding dictionary:

  1. Check type.coding[*].system = "eHealth/equipment_types"
    1. in case of error "Submitted system is not allowed for this field"
  2. Check type.coding[*].code value exists in dictionary "eHealth/equipment_types"
    1. in case of error "Submitted code is not allowed for this field"
Example
 "type": {
          "coding": [
              {
                  "system": "eHealth/equipment_types",
                  "code": "MRI"
              }
          ],
          "text": "Magnetic resonance imaging scan"
 }


Validate external identifier 

A legal entity must have only one active equipment with an external_id.

  1. Check external_id within the legal_entity_id.
    1. Return 409 (Duplicated equipment) in case such record already exists

Save object to DB

1. equipments table

ParameterSourceDescription
idUUIDAutogenerated
typeRequest: typeGet from request body
external_idRequest: external_idGet from request body
legal_entity_idToken: client_idExtract client from token
statusConst: ACTIVEBy default ACTIVE for new records
is_activeConst: TRUEAlways TRUE for new records
inserted_atTimestamp: now()Get current date-time
inserted_byToken: user_idExtract user from token
updated_atTimestamp: now()Get current date-time
updated_byToken: user_idExtract user from token

2. equipment_status_hstr table

ParameterSourceDescription
idUUIDAutogenerated
equipment_idUUIDReference to equipments.id
statusConst: ACTIVEBy default ACTIVE for new records
inserted_byToken: user_idExtract user from token
inserted_atTimestamp: now()Get current date-time

3. division_equipment table.

It fills only if division_id is submitted.

ParameterSourceDescription
idUUIDAutogenerated
statusConst: ACTIVEBy default ACTIVE for new records
division_idRequestdivision_idGet from request body
equipment_idUUIDReference to equipments.id
is_activeConst: TRUEAlways TRUE for new records
inserted_atTimestamp: now()Get current date-time
inserted_byToken: user_idExtract user from token
updated_atTimestamp: now()Get current date-time
updated_byToken: user_idExtract user from token



  • No labels