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. Активність повинна бути підписана Електронним підписом. Підписаний контент зберігається в файловому сховищі.

...

  • Отримати ідентифікатор Плану лікування з URL

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

    • належить пацієнту (з url)

      • в разі помилки - повернути код 422 ('Care plan with such id is not found')

    • не в final status

      • в разі помилки - повернути код 422 ('Invalid care plan status')

    • Для Плану лікування period.end >= current date.

      • в разі помилки - повернути код 422 ('Care Plan end date is expired')

...

  • Отримати 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') у випадку, коли співробітник не має дозволу на редагування

...

  • Перевірити значення на відповідність схеми типу Period

    • в разі помилки валідації - повернути код 422

  • Перевірити значення для $.CarePlan.Period

    • для помилки валідації period.end - повернути код 422 ('Period end time must be within care plan period range, after period start date')

    • для помилки валідації period.start - повернути код 422 ('Period start time must be within care plan period range')

...

  • Перевірити, що значення є валідним посилання на підрозділ

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

    • Повернути 422 ('Division is not active')

9.

...

Виконавець

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

...

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

    • якщо не знайдено або 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“

Expand
titleЯк перевіряти мед препарат в програмі. Приклад

SELECT *

FROM medications MI -- 2nd level: Medication - type = INNM_DOSAGE

INNER JOIN ingredients I

ON I.medication_child_id = MI.id

AND I.is_primary =TRUE

INNER JOIN medications MED -- 3rd level: Medication - type = BRAND

ON MED.type == BRAND

AND I.parent_id = MED.id

AND MED.is_active == TRUE

INNER JOIN program_medications MP

ON MP.medical_program_id == `$.product.identifier.value`

MED.id = MP.medication_id

AND MP.is_active == TRUE

AND MP.medication_request_allowed == TRUE

WHERE MI.id == $.medication_id

AND MI.type == INNM_DOSAGE

AND MI.is_active == TRUE

...

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

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

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

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

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

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

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

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