Versions Compared

Key

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

...

Даний веб-сервіс дозволяє додати активність до визначеного Плану лікування.

Основні положення

  1. З одним запитом може бути додана тільки одна активність до Плану лікування

  2. Активність може бути додана тільки співробітником, який має дозвіл, наданий пацієнтом на редагування даних Плану лікування

  3. Активності додаються в асинхронний спосіб. Результатом додаткої задачі активності повинне бути посилання на створену активність (див. Get Care plan activity by ID).

  4. Активність повинна бути підписана Електронним підписом. Підписаний контент зберігається в файловому сховищі.

Специфікація

Apiary

Авторизація

...

  • Перевірити, що значення посилань відповідає значенням з масиву медичних станів (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)

5. Ціль

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

...

  • Перевірити, що значення false

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

Логіка сервісу

  1. Зберегти підписаний контент до файлового сховища

  2. Зберегти дату до колекції care_plan_activities в БД у відповідності до https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/2125038889/Care+plan+data+model+UA

  3. Зберегти посилання з файлового сховища до $.signed_content_links field в колекції активностей плану лікування

  4. Якщо план лікування має статус = new:

    • Встановити = active

    • Перевірити, якщо пацієнт має інший активний та/або новий План лікування з таким же кодо станів в полі addresses:

      • Якщо такий План лікування знайдено - встановити для таких Планів лікування статус TERMINATED

  5. Створити задачу та повернути його id.

Ціль

Даний веб-сервіс дозволяє додати активність до визначеного Плану лікування.

Основні положення

  1. З одним запитом може бути додана тільки одна активність до Плану лікування

  2. Активність може бути додана тільки співробітником, який має дозвіл, наданий пацієнтом на редагування даних Плану лікування

  3. Активності додаються в асинхронний спосіб. Результатом додаткої задачі активності повинне бути посилання на створену активність (див. Get Care plan activity by ID).

  4. Активність повинна бути підписана Електронним підписом. Підписаний контент зберігається в файловому сховищі.

Специфікація

Apiary

Авторизація

...

  • Отримати 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. Мітка “не виконувати”

...

  • Перевірити, що значення false

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

Логіка сервісу

  1. Зберегти підписаний контент до файлового сховища

  2. Зберегти дату до колекції care_plan_activities в БД у відповідності до https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/2125038889/Care+plan+data+model+UA

  3. Зберегти посилання з файлового сховища до $.signed_content_links field в колекції активностей плану лікування

  4. Якщо план лікування має статус = new:

    • Встановити = active

    • Перевірити, якщо пацієнт має інший активний та/або новий План лікування з таким же кодо станів в полі addresses:

      • Якщо такий План лікування знайдено - встановити для таких Планів лікування статус TERMINATED

  5. Створити задачу та повернути його id.