Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

  • Перевірити, що значення посилань відповідає значенням з масиву медичних станів (condition), обстежень (observation) або діагностичних звітів (diagnostic report) або клінічних враженьоцінок.

    • в разі помилки - повернути код 422 ('value is not allowed in enum')

  • Перевірити, що кожне посилання:

    • валідна медична подія

    • належить пацієнту ($.subject)

      • в разі помилки - повернути код 422 ('<medical event type> with such ID is not found')

  • Якщо $.detail.reason_reference=clinical_impression:

    • Перевірити, що клінічні враження клінічна оцінка це валідна основа для clinical_impression.code.coding.code та CLINICAL_IMPRESSION_PATIENT_CATEGORIES_<CODE.CODING.CODE>_VALIDITY_PERIOD конфігураційного параметру: різниця між now() та clinical_impression.inserted_at дата повинні бути меньше ніж значення конфігураційного параметру (вказано в config для відповідної категорії плану лікування) для коду клінічного враженняклінічної оцінки

      • в разі помилки - повернути 422 ("Clinical impression with patient category exceeds validity period")

    • Перевірити, що клінічне враження клінічна оцінка базується на активному налаштуванні бізнес-правил (існуючий запис в колекції rule_engine_rules зі is_active=true, code.code=clinical_impression.code.coding.code, code.system=clinical_impression.code.coding.system)

      • якщо істина - перевірити, що клінічне враження клінічна оцінка досі відповідає конфігураційному правилу

        • в разі помилки - повернути 422 (“Clinical impression with patient category does not correspond to rule engine rule“)

      • якщо не істина - пропустити перевірку правил

5. Ціль

Перевірити заповненність значенням поля $.detail.goal

...

  • Перевірити, що програма існує та активна

    • якщо не знайдено або is_active==false повернути код 404 "Program not found"

  • Перевірити, що продукт доступний для вказаної програми:

    • Якщо продукт це медпрепарат medication - перевірити, що медпрепарат має вказаний бренд, який є активним для програми (таблиця program_medications)

      • якщо не знайдено або is_active==false повернути 422 "Medication is not included in the program"

    • Якщо продукт це сервіс (service) - перевірити, що сервіс є активним учасником програми

      • якщо не знайдено або is_active==false повернути 422 "Service is not included in the program"

    • Якщо продукт це група сервісів (service_group) - перевірити, що група сервісів є активним учасником програми

      • якщо не знайдено або is_active==false повернути 422 "Service group is not included in the program"

  • Перeвірити налаштування медичної програми (prm.medical_programs table):

    • якщо вказано параметр SPECIALITY_TYPES_ALLOWED:

      • Перевірити, що спеціальність автора відповідає SPECIALITY_TYPES_ALLOWED

        • в разі помилки - повернути 422 “Author’s specialty doesn't allow to create activity with medical program from request”

    • якщо вказано параметр CONDITIONS_ICD10_AM_ALLOWED або/та CONDITIONS_ICPC2_ALLOWED:

      • Перевірити, що пов'язаний план лікування містить коди станів в полі addresses , який посилається на коди, вказані в CONDITIONS_ICD10_AM_ALLOWED або/та CONDITIONS_ICPC2_ALLOWED (залежно від довідника - eHealth/ICD10_AM/condition_codes або eHealth/ICPC2/condition_codes)

        • в разі помилки - повернути 422 “Care plan diagnosis with code #{condition_code} is not allowed for the medical program“

    • Якщо вказано параметр PROVIDING_CONDITIONS_ALLOWED:

      • Перевірити, що пов'язаний план лікування має значення в полі terms_of_service та включений в список параметрів PROVIDING_CONDITIONS_ALLOWED

        • в разі помилки - повернути 422 “Care plan’s terms of service are not allowed for the medical program“

...

  • Отримати person_id з URL

  • Перевірити, що статус пацієнта активний

    • в разі помилки - повернути код 409 ('Person is not active')

  • Перевірити, що verification_status не рівний NOT_VERIFIED.

    • в разі помилки повернути код 409, "Patient is not verified"

Перевірити користувача

  • Отримати user_id з токену.

  • Перевірити, що користувач належить активному та погодженому співробітнику для даної юридичної особи (token), що:

    • має активний дозвіл наданий пацієнтом на редагування даних Плану лікування (id плану лікування з URL)

      • Повернути 403 ('Access denied') у випадку, коли співробітник не має дозволу на редагування

...

  • Перевірити тип активності medication_request

    • Повернути помилку 422 ('Field is allowed for medication request activities only') для випадків коли тип не дорівнює medication_request

11. Медична програма

Перевірити, що поле вказано для типу = medication_request

  • Якщо $.detail.kind=medication_request, перевірити, що $.program is submitted

    • в разі помилки - повернути 422 ("Medical program must be submitted for kind = medication_request")

Перевірити вказане значення в полі $.program

  • Перевірити, що програма існує та активна

    • якщо не знайдено або is_active==false повернути код 404 "Program not found"

  • Перевірити, що продукт доступний для вказаної програми:

    • Якщо продукт це медпрепарат medication - перевірити, що медпрепарат має вказаний бренд, який є активним для програми (таблиця program_medications)

      • якщо не знайдено або is_active==false повернути 422 "Medication is not included in the program"

    • Якщо продукт це сервіс (service) - перевірити, що сервіс є активним учасником програми

      • якщо не знайдено або is_active==false повернути 422 "Service is not included in the program"

    • Якщо продукт це група сервісів (service_group) - перевірити, що група сервісів є активним учасником програми

      • якщо не знайдено або is_active==false повернути 422 "Service group is not included in the program"

  • Перeвірити налаштування медичної програми (prm.medical_programs table):

    • якщо вказано параметр SPECIALITY_TYPES_ALLOWED:

      • Перевірити, що спеціальність автора відповідає SPECIALITY_TYPES_ALLOWED

        • в разі помилки - повернути 422 “Author’s specialty doesn't allow to create activity with medical program from request”

    • якщо вказано параметр CONDITIONS_ICD10_AM_ALLOWED або/та CONDITIONS_ICPC2_ALLOWED:

      • Перевірити, що пов'язаний план лікування містить коди станів в полі addresses , який посилається на коди, вказані в CONDITIONS_ICD10_AM_ALLOWED або/та CONDITIONS_ICPC2_ALLOWED (залежно від довідника - eHealth/ICD10_AM/condition_codes або eHealth/ICPC2/condition_codes)

        • в разі помилки - повернути 422 “Care plan diagnosis with code #{condition_code} is not allowed for the medical program“

    • Якщо вказано параметр PROVIDING_CONDITIONS_ALLOWED:

      • Перевірити, що пов'язаний план лікування має значення в полі terms_of_service та включений в список параметрів PROVIDING_CONDITIONS_ALLOWED

        • в разі помилки - повернути 422 “Care plan’s terms of service are not allowed for the medical program“

  • якщо є параметр patient_categories_allowed:

    • перевірити, що patient_categories_allowed має коди в $.detail.reason_reference.[].clinical_impression.code.[].code, що відповідає кодам, вказаним в patient_categories_allowed

      • в разі помилки - повернути 422 "Clinical impression with patient category should be present in request for this medical program"

12. Мітка “не виконувати”

...