Table of Contents |
---|
Специфікація
Ціль
...
Table of Contents |
---|
Специфікація
Ціль
Даний веб-сервіс розроблено для попередньої перевірки даних запиту на рецепт (post) - перевірити, чи можливо використати рецепт для вказаної програми.
Є два типи рецептів:
plan - Запит відображає намір перевірки виникнення дії без авторизації. Рецепт з типом plan не може бути відпущено та тільки надає інструкції для адміністрування ЛЗ. Від також не може бути перевірений
order - Запит відображає намір авторизації для дії. Рецепт з типом order може бути відпущений
Вхідні параметри (фільтри)
...
Тільки рецепти з типом (намір) order може бути перевірено.
Перевірити намір на рецепт
якщо намір для рецепту == plan - повернути 409, "Plan can't be qualified"
...
Застосовується до програми відповідно до medical program settings:
Ціль перевірки: Є перелік ЛЗ (які пов'язані з Innms) які можуть використовуватися за програмою. Потрібно перевірити, чи хоча б один з доступних ЛЗ (з `medication_request_allowed` == TRUE) для Innm з відповідною програмою
...
Відноситься до програм у відповідності до medical program settings:
Перевірити ціль: Може бути тільки 1 рецепт (ACTIVE, COMPLETED) на один innm для одного пацієнта у вказаний період часу.
...
Для інформації - статуси чартів: 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 MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях медичної програми:
Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює налаштуванням параметру MEDICATION_REQUEST_MAX_PERIOD_DAY
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period “Period length exceeds allowed value for the medical program“ program“
Якщо рецепт має програму без MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях програми:
Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює параметру MEDICATION_REQUEST_MAX_PERIOD_DAY чарту
в разі помилки - повернути 200 зі_PERIOD_DAY чарту
в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period length exceeds default maximum value“
8. Перевірити context
Перевірити що "context" є активною (без помилок) сутністю з відповідного словника, що належить даному пацієнту
Перевірити що сутність в колекції $.data.context.identifier.type.coding[0].code з id == $.data.context.identifier.value належить даному пацієнту
у разі помилки - повернути 200 з статусом = INVALID та rejection_reason = “Period length exceeds default maximum value“ “Encounter entity is not found for program“
Згенерувати структуру відповіді
...