<aside> <img src="/icons/snippet_gray.svg" alt="/icons/snippet_gray.svg" width="40px" /> JSON-схеми, які зараз використовуються по напрямках лікування зі збором потреби за методологією:

<aside> <img src="/icons/asterisk_gray.svg" alt="/icons/asterisk_gray.svg" width="40px" />

Крім стандартних, до JSON-схеми додано декілька кастомних параметрів. Один з них — параметр createEntitiesByDefault, який відповідає за автоматичне (на стороні BE) створення записів у відповідній сутності. Якщо значення параметра true — при створенні заявки на потреби запис буде створено на BE автоматично, якщо false — запис може бути створено лише вручну користувачем.

Для схеми PatientTreatmentGroup враховується значення параметра createEntitiesByDefault ******лише самої схеми, для схеми PatientsQuantity додатково перевіряється значення параметра createEntitiesByDefault ******батьківської схеми PatientTreatmentGroup: якщо PatientsQuantity має значення параметра true, а в схемі PatientTreatmentGroup параметр false, то запис не буде створено (оскільки не буде створено “батьківський” запис).

</aside>

</aside>

<aside> <img src="/icons/dependency_gray.svg" alt="/icons/dependency_gray.svg" width="40px" />

Підхід до використання JSON-схем наступний:

sequenceDiagram

		actor U as User
    participant S as e-Stock BE
    participant MIS as MIS
    activate S
    Note over S: Configure JSON-schemas for each direction
    deactivate S
    U ->> MIS: Create requisition
    MIS ->> S: **POST** **/v1/requisitions**
    activate S
    S -->> MIS: {id}
    deactivate S
    MIS ->> S: **GET /v1/requisitions/{id}**
    activate S
    ****S -->> MIS: {full_requisition_info}
    deactivate S
    MIS -->> U: Open requisition page
    U ->> MIS: Click on patients page
    MIS ->> S: **GET** **/v1/requisitions/{requisitionId}/patients/schemaConfigurations**
    activate S
    ****S -->> MIS: {JSON-schemas}
    deactivate S
    MIS ->> S: **GET /v1/requisitions/{requisitionId}/patients/{patientId}, GET /v1/requisitions/{requisitionId}/patients/treatmentGroups**
    activate S 
    ****S -->> MIS: {full_patients_data}
    deactivate S
    alt "schemaGroup": "PATIENTS_DATA_BASED"
        MIS -->> U: Open patients page (full or empty), according to the JSON-schemas 
    else "schemaGroup": "PATIENTS_QUANTITY_BASED"
        MIS -->> U: Open patient_quantity page (full or empty), according to the JSON-schemas 
    else "schemaGroup": "PATIENTS_QUANTITY_COHORT_BASED"
        MIS -->> U: Open cohort page (full or empty), according to the JSON-schemas 
    end     

Тобто:

  1. На боці BE e-Stock для кожного напрямку лікування конфігуруються JSON-схеми
  2. МІС здійснює запит GET /v1/requisitions/{requisitionId}/patients/schemaConfigurations
  3. МІС отримує JSON-схеми, які мають використовуватись конкретно для цієї заявки
  4. Залежно від параметра schemaGroup МІС відображає або сторінку з додаванням пацієнтів, або кількості пацієнтів, або когорти
  5. Залежно від отриманих в схемах атрибутів МІС відображає поля, які користувач має заповнити. При цьому кожна схема відповідає сутності, яка використовується: