Table of Contents |
---|
...
З одним запитом може бути додана тільки одна активність до Плану лікування
Активність може бути додана тільки співробітником, який має дозвіл, наданий пацієнтом на редагування даних Плану лікування
Активності додаються в асинхронний спосіб. Результатом додаткої задачі активності повинне бути посилання на створену активність (див. Get Care plan activity by ID).
Активність повинна бути підписана Електронним підписом. Підписаний контент зберігається в файловому сховищі.
...
Отримати ідентифікатор Плану лікування з 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')
...
Expand | ||
---|---|---|
| ||
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 |
...
Зберегти підписаний контент до файлового сховища
Зберегти дату до колекції care_plan_activities в БД у відповідності до https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/2125038856/2125038889/Care+plan+data+model+UA
Зберегти посилання з файлового сховища до $.signed_content_links field в колекції активностей плану лікування
Якщо план лікування має статус = new:
Встановити = active
Перевірити, якщо пацієнт має інший активний та/або новий План лікування з таким же кодо станів в полі addresses:
Якщо такий План лікування знайдено - встановити для таких Планів лікування статус TERMINATED
Створити задачу та повернути його id.