Table of Contents | ||||
---|---|---|---|---|
Table of Contents | ||||
|
Специфікація
Ціль
Даний веб-сервіс розроблено для попередньої перевірки даних запиту на рецепт (post) - перевірити, чи можливо використати рецепт для вказаної програми.
...
Застосовується до програми відповідно до medical program settings:
Ціль перевірки: Є перелік ЛЗ (які пов'язані з Innms) які можуть використовуватися за програмою. Потрібно перевірити, чи хоча б один з доступних ЛЗ (з `medication_request_allowed` == TRUE) для Innm з відповідною програмою
Перевірити відповідність innm з переліком ЛЗ для програми
якщо дані не знайдено:
додати до відповіді: status = INVALID
додати до відповіді: rejection_reason = "Innm not on the list of approved innms for program \"<medical_programs.name>\""
|
2. Перевірити відсутність таких же ЛЗ для програми
Відноситься до програм у відповідності до medical program settings:
Перевірити ціль: Може бути тільки 1 рецепт (ACTIVE, COMPLETED) на один innm для одного пацієнта у вказаний період часу.
Приклад перевірки: без перетину часу
EP | Передумови # 1 | Результат валідації #1 | Передумови #2 | Результат валідації #2 | Передумови #3 | Результат валідації #2 |
---|---|---|---|---|---|---|
PreQualifyMedicationRequestRequest | Відсутні записи MedicationRequest | OK | Створений запис в MedicationRequest | Не валідно | Рецепт відпущено (COMPLETED) | Не валідно |
QualifyMedicationRequestByID | Відсутні записи MedicationRequest | Не можливо | Створений запис в MedicationRequest | OK | Рецепт відпущено (COMPLETED) | Не валідно |
Для інформації - статуси чартів: Medication_request
Отримати `check_innm_id`
Code Block SELECT I.innm_child_id FROM ingredients I WHERE I.parent_id = $.medication_id AND I.is_primary = TRUE
Отримати рецепт з завершеним відпуском для person_id & check_innm_id
Code Block SELECT * FROM medication_requests MR INNER JOIN medications MED ON MED.id = MR.medication_id INNER JOIN ingredients I ON I.parent_id = MED.id AND I.innm_child_id = `check_innm_id` AND I.is_primary = TRUE WHERE MR.person_id == $.person_id AND MR.status IN (ACTIVE, COMPLETED) AND NOT( $.started_at> MR.ended_at OR $.ended_at < MR.started_at)
Перевірити наявність (IF EXIST () - що є перетином розрахованого терміну (started_at + ended_at) для еклогу зі значеннями вибраних рецептів (started_at + ended_at) з пов'язаними medication_dispense в статусі (NEW,PROCESSED)).
якщо знайдено
додати до відповіді: status = INVALID
додати до відповіді: rejection_reason = "It can be only 1 active/ completed medication request request or medication request per one innm for the same patient at the same period of time!"
Знайти рецепт по $innm_dosge, $medical_program_id, $person_id and max(end_date). В разі наявності рецепту з ended_at>=current_date тоді наступний може бути виконано в
якщо (ended_at - started_at) => mrr_standart_duration то
NEW created_at >= ended at - max_mrr_renew_days>=current_dayв разі помилки повернути помилку 422 ('It's to early to create new medication request for such innm_dosage and medical_program_id')
якщо (ended_at - started_at) < mrr_standart_duration то
NEW created_at >= ended_at - min_mrr_renew_days>=current_dayв разі помилки повернути помилку 422 ('It's to early to create new medication request for such innm_dosage and medical_program_id')
3. Перевірити що план лікування є обов'язковим для програми
Застосовується дл програм відповідно до medical program settings:
Перевірити ціль: Потрібно перевірити, якщо рецепт з програмою потребує план лікування (з `care_plan_required` == TRUE) для цієї програми.
Перевірити чи є based_on в запиті
Перевірити значення care_plan_required
Code Block SELECT medical_program_setting->>'care_plan_required' FROM medical_programs WHERE id = 'medical_program_id';
Якщо care_plan_required відмічено:
перевірити based_on (посилання на care_plan та її активність) в запиті
в разі не знайдено based_on:
додати до відповіді: status = INVALID
додати до відповіді: rejection_reason = "Care plan with activity on "<medical_programs.name>\" is required for for program \"<medical_programs.name>\""
4. Перевірити, що дігнози відповідають програмі
Застосовується дл програм відповідно до medical program settings:
Ціль перевірки: Необхідно перевірити чи рецепт з програмою потребує контекст (взаємодію) з вказаними діагнозами.
Якщо програма має параметр CONDITIONS_ICD10_AM_ALLOWED в medical_program_settings:
Перевірити, чи первинні діагнози зі взаємодії в контексті має код з eHealth/ICD10_AM/condition_codes dictionary
Перевірити коди діагнозів в CONDITIONS_ICD10_AM_ALLOWED
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Encounter in context has no primary diagnosis allowed for the medical program“
Якщо програма має параметр CONDITIONS_ICPC2_ALLOWED в medical_program_settings:
Перевірити, чи первинні діагнози зі взаємодії в контексті має код з eHealth/ICPC2/condition_codesdictionary
Перевірити коди діагозів з CONDITIONS_ICPC2_ALLOWED
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Encounter in context has no primary diagnosis allowed for the medical program“
5. Перевірити співробітника
Застосовується до програм: будь-які
Ціль перевірки: Необхідно перевірити, чи рецепт з програмою дозволяється створювати вказаним співробітником.
Перевірити employee_id як описано в Create Medication request Request
6. Перевіри ти план лікування та активність
Застосовується до програм: будь-які
Ціль перевірки: Необхідно перевірити, чи рецепт з програмою дозволяється створювати для вказаної програми та активності.
Перевірити based_on як описано в Create Medication request Request
7. Перевірити період
Застосовується до програм: будь-які
Ціль перевірки: Потрібно перевірити чи період рецепту не перевищив доступниму кількість днів.
Якщо рецепт має програму з MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях медичної програми:
Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює налаштуванням параметру MEDICATION_REQUEST_MAX_PERIOD_DAY
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period length exceeds allowed value for the medical program“
Якщо рецепт має програму без MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях програми:
Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює параметру MEDICATION_REQUEST_MAX_PERIOD_DAY чарту
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period length exceeds default maximum value“
8. Перевірити
...
контекст
Перевірити, що "context" є активною (без помилок) сутністю з відповідного словникаактивна сутність (не entered-in-error) з відповідного довідника, що належить даному поточному пацієнту
Перевірити, що сутність в колекції $.data.context.identifier.type.coding[0].code з with id == $.data.context.identifier.value належить даному пацієнту
уthat belongs to the current patient
в разі помилки - повернути код 200 з зі статусом = INVALID та rejection_reason = “Encounter entity is not found for program“
9. Перевірити персону
Валідно для програм: будь-яких
Цілі перевірок: Необхідно перевірити, що персона має необхідні статуси верифікації для отримання мед препаратів.
Перевірити статус персони згідно опису в Create Medication request Request
Згенерувати структуру відповіді
...