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

Skip to end of metadata
Go to start of metadata

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

Compare with Current View Version History

Version 1 Current »

Вимоги

  1. Створення направлення

Apiary

  1. PreQualify Service Request

Валідації

Авторизація

  • Перевірити валідність токену доступу

    • Повернути код (401, 'unauthorized') в разі неуспішної валідації

  • Перевірити, що токен діючий

    • в разі помилки - повернути код (401, 'unauthorized')

  • Перевірити скуопи користувачів на можливість виконання даної дії (scope = 'service_request:write')

    1. Повернути код (403, 'invalid scopes') в разі невалідних скоупів

Перевірити запит використовуючи JSON Schema

Повернути код 422 зі списком помилок валідації в разі неуспішної валідації

Перевірити юридичну особу

  • Перевірити тип юридичної особи: вона повинна бути в конфігураційних параметрах me_allowed_transactions_le_types, має статус = active 

    • в разі помилки повернути код 409 "Action is not allowed for the legal entity"

Перевірити запит на сервіс

  1. Перевірити ID запиту на сервіс на унікальність

    1. $.id повинен бути унікальним

      • в разі помилки повернути код 409 - "Service request with such id already exists"

  2. Реквізити - це загальний ідентифікатор для групи запитів на сервіс та повинен співпадати з одним з епізодів пацієнта по номеру лікування

    1. $.requisition повинен співпадати з одним з епізодів пацієнта по номеру лікування

      1. в разі помилки повернути код 409 - "Incorrect requisition number"

  3. Категорія запитів на сервіси повинні посилатися на валідний довідник

    1. $.category.coding[*].system  == "eHealth/SNOMED/service_request_categories" 

      1. в разі помилки повернути код 409 "Incorrect service request category"

  4. Код процедури повинен посилатися на валідний довідник

    1. $.code.coding[*].system  == "eHealth/SNOMED/procedure_codes" 

      1. в разі помилки повернути код 409 "Incorrect procedure code"

  5. Пацієнт має бути активним

    1. $.patient.identifier.type.coding[*].system == "eHealth/resources"

    2. $.patient.identifier.type.coding[*].code == "patient"

    3. $.patient.identifier.value посилатися на активний MPI (is_active == true та status == 'active')

    4. в разі patients.preperson == true

      1. перевірити PREPERSON_SERVICE_REQUEST_ALLOWED_CATEGORIES (дані з довідника: eHealth/SNOMED/service_request_categories) конфігурація відповідна дозволеним категорія преперсон

        1. в разі помилки повернути код 422 (Category of service request is not allowed for prepersons)

  6. Контекст повинен бути активним візитом

    1. $.context.identifier.type.coding[*].system == "eHealth/resources"

    2. $.context.identifier.type.coding[*].code == "encounter"

    3. $.context.identifier.value посилатися на існуючий візит (status == 'finished')

  7. Створення є валідна дата-час в майбутньому

    1. $.occurrenceDateTime 

      1. $.occurrence_date_time - ISO дата повинна бути більше поточної дати-часу

    2. $.occurrencePeriod.start

      1. $.occurrence_period.start - ISO дата повинна бути більше поточної дати-часу

      2. $.occurrence_period.end - ISO дата повинна бути більше поточної дати-часу та більше ніж $.occurrencePeriod.start

    3. в разі based_on не вказано в запиті

      1. якщо активність плану лікування має detail.scheduled_timing.repeat.bounds_period - перевірити спвіпадіння по періоду bounds_period

      2. якщо активність плану лікування має detail.scheduled_period - перевірити спвіпадіння по періоду scheduled_period

      3. в інщому випадку - перевірити спвіпадіння по періоду care_plan.period

  8. Authored On це валідна дата-час в минулому

    1. $.authored_on - ISO дата повинна бути меньше ніж поточна дата-час

  9. Requester_employee повинен бути активний співробітник з поточною юридичної особою

    1. $.requester_employee.identifier.type.coding[*].system == "eHealth/resources"

    2. $.requester_employee.identifier.type.coding[*].code == "employee"

    3. $.requester_employee.identifier.value посилається на активного співробітника з поточною юридичною особою (employee.status == approved та employee.is_active == true та employee.legal_entity_id == token.client_id)

  10. Requester_legal_enity повинна бути поточна юридична особа

  11. Тип виконавця повинен посилатися на валідний довідник

    1. $.performer_type.coding[*].system  == "eHealth/SNOMED/service_request_performer_roles" 

      1. в разі помилки повернути код 409 "Incorrect service request category"

  12. Супроводжуюча інформація повинна посилатися на валідний об'єкт медичної події (Episode of Care) з вказанням конкретного пацієнта. 

    1. $.supporting_info.identifier.type.coding[*].system == "eHealth/resources"

      1. в разі помилки повернути код 409 "Incorrect supporting info"

  13. Посилання на причину повинна посилатися на валідний об'єкт медичної події (Observation, Condition) з вказанням конкретного пацієнта. 

    1. $.reason_reference.identifier.type.coding[*].system == "eHealth/resources"

    2. $.reason_reference.identifier.type.coding[*].code in ("condition", "observation")

      1. в разі помилки повернути код 409 "Incorrect reason reference"

  14. Дозволений Епізод лікування (Episode of care) повинен посилатися на валідний об'єкт медичної події (Episode of Care) з вказанням конкретного пацієнта. 

    1. $.permitted_episodes.identifier.type.coding[*].system == "eHealth/resources"

    2. $.permitted_episodes.identifier.type.coding[*].code == "episode_of_care"

      1. в разі помилки повернути код 409 "Incorrect reason reference"

  15. Перевірити, що код в існуючому сервісі або групі сервісів дозволений для використання в service_request

    1. в разі, якщо не знайдено або is_active == false повернути код 422 "Service(Service group) not found"

    2. if request_allowed==false повернути код 422 "Service request is not allowed for this service(service_group)"

    3. в разі based_on передано в запиті

      1. якщо service_requests.code.identifier.value це сервіс, перевірити $based_on[].activity.code.identifier.value = service_requests.code.identifier.value

        1. в разі помилки повернути код 422, "Service in activity differs from service in service request"

      2. Якщо service_requests.code.identifier.value це service_group, перевірити $based_on[].activity.code.identifier.value = service_requests.code.identifier.value

        1. в разі помилки повернути код 422, "Service group in care plan activity differ from service group in service request"

      3. якщо service_requests.code.identifier.value це сервіс/група сервісів, перевірити $based_on[].activity.code.identifier.value is service/service group

        1. в разі помилки повернути код 422, "Activity referes to '#{service/service group}' but service request refers to '#{service group/service}'"

  16. Перевірити категорію сервісу на відповідність категорії запиту сервісу в разі, якщо сервіс було визначено як код (не service_group)

    1. Вибрати категорію з PRM.services де id = $.code.identifier.value

      1. якщо PRM.services.category!=$.category OR PRM.services.category не NULL  повернути код 422 "Service category does not match with service request category"

  17. Для кожної програми перевірити, що вона в існуючій програмі сервісів (type=service)

    1. в разі, якщо не знайдено або is_active==false записати результат в колекції даних у відповідності до apiary

    2. в разі, якщо type!= service записати результат в колекції даних у відповідності до apiary - "Invalid program type"

    3. перевірити, що medical_programs.medical_program_settings.care_plan_required == true тоді запит повинен мати based_on з планом лікування та активністю з тою ж програмою

      1. в разі помилки повернути код 422 з повідомленням ("Care plan and activity with the same program should be present in request")

      2. перевірити, що программа відповідє $.activity[].program

        1. в разі помилки повернути код 422 з повідомленням ("Program from activity should be equal to program from request")

  18. Для кожної програми перевірити, що сервіс (або service_group) діючий учасник програми

    1. Вибрати request_allowed, is_active з PRM.program_services де service_id(or group_id) == $.signed_content.code.identifier.value та program_id=$.program.identifier.value

      1. якщо не знайдено або is_active==false записати результат в колекції даних у відповідності до apiary - "Service is not included in the program"

      2. якщо request_allowed==false записати результат в колекції даних у відповідності до apiary -  "Service request is not allowed for this service(service_group) in this programm"

  19. Для кожної програми перевірити, що лікар може створювати запит на сервіс з програмою для поточного пацієнта

    1. $.requester має активну декларацію з OR пацієнта

    2. $.requester works в тій же MSP з лікарем, який має активну декларацію з пацієнтом та для лікаря employee_type== DOCTOR

      1. в разі помилки записати результат в колекції даних у відповідності до apiary - "User is not allowed to create service request with the program for the patient"

  20. Перевірити based_on

    1. якщо вказано, перевірити, що поле є масивом з двома значеннями типу Reference: одна - це валідний ресурс плану лікування, інший - ресурс активності.

      1. в разі помилки повернути код 422 з повідомленням ("expected a minimum of %{min} items but got %{actual}")

    2. Перевірити План лікування:

      1. Вона повинна належати тому ж пацієнту як набір в запиті сервісів

        1. в разі помилки повернути код 422 з повідомленням ("Care plan with such id is not found")

      2. Він повинен бути активним

        1. в разі помилки повернути код 422 з повідомленням ("Care plan is not active")

      3. Дата закінчення періоду плану лікування (якщо заповнено) повинна бути більна ніж поточна дата або більше.

    3. Перевірити вказану активність:

      1. Вона відповідає Плану лікування.

        1. в разі помилки повернути код 422 з повідомленням ("Activity with such id is not found")

      2. Вона має activity.detail.kind=service_request; activity.detail.product_reference=service_request.code[].value.

        1. в разі помилки повернути код 422 з повідомленням ("Invalid activity kind")

      3. Вона має статус scheduled, in_progress 

        1. в разі помилки повернути код 422 з повідомленням ("Invalid activity status")

      4. якщо вказана кількість, то перевірити, що remaining_quantity більше нуля:

        1. в разі помилки повернути код 422, "The number of available services according to the care plan activity has been exhausted"

    4. Перевірити період активності: 

      1. На наявність scheduled_timing:

        1. якщо bounds_period.end відрізняється, то перевірити, що від більше поточної дати або дорівнює.

      2. На наявність scheduled_period:

        1. якщо scheduled_period.endвідрізняється, то перевірити, що від більше поточної дати або дорівнює.

  21. Якщо пацієнт це person - перевірити статус верифікації:

    1. Якщо SR має based_on з валідною активністю, то пропустити перевірку.

    2. Перевірити, що verification_status пацієнта не дорівнює NOT_VERIFIED.

      1. в разі NOT_VERIFIED - повернути помилку 409, "Patient is not verified"

В противному випадку, якщо програма відповідає вимогам - записати "Valid" у відповідності до apiary.

  • No labels