Versions Compared

Key

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

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

Apiary

Ціль

...

Table of Contents

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

Apiary

Ціль

Даний веб-сервіс розроблено для попередньої перевірки даних запиту на рецепт (post) - перевірити, чи можливо використати рецепт для вказаної програми.

Є два типи рецептів:

  • plan - Запит відображає намір перевірки виникнення дії без авторизації. Рецепт з типом plan не може бути відпущено та тільки надає інструкції для адміністрування ЛЗ. Від також не може бути перевірений

  • order - Запит відображає намір авторизації для дії. Рецепт з типом order може бути відпущений

Вхідні параметри (фільтри)

...

Тільки рецепти з типом (намір) order може бути перевірено.

  1. Перевірити намір на рецепт

    1. якщо намір для рецепту == plan - повернути 409, "Plan can't be qualified"

...

Застосовується до програми відповідно до medical program settings:

Ціль перевірки:  Є перелік ЛЗ (які пов'язані з Innms) які можуть використовуватися за програмою. Потрібно перевірити, чи хоча б один з доступних ЛЗ (з `medication_request_allowed` == TRUE)  для Innm з відповідною програмою

...

Відноситься до програм у відповідності до medical program settings:

Перевірити ціль:  Може бути тільки 1 рецепт (ACTIVE, COMPLETED)  на один innm для одного пацієнта у вказаний період часу.

...

  1. Для інформації - статуси чартів: Medication_request

  2. Отримати `check_innm_id`

    Code Block
    SELECT I.innm_child_id
    	FROM ingredients I
    WHERE I.parent_id = $.medication_id 
    	AND I.is_primary = TRUE
    


  3. Отримати рецепт з завершеним відпуском для person_id & check_innm_id


  4. 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)
    


  5. Перевірити наявність (IF EXIST ()  - що є перетином  розрахованого терміну (started_at + ended_at) для еклогу зі значеннями вибраних рецептів (started_at + ended_at) з пов'язаними medication_dispense в статусі (NEW,PROCESSED)).  

    1. якщо знайдено  

      1. додати до відповіді: status = INVALID

      2. додати до відповіді: 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!"

  6. Знайти рецепт по $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) для цієї програми.

  1. Перевірити чи є based_on в запиті

    1. Перевірити значення care_plan_required

      Code Block
      SELECT medical_program_setting->>'care_plan_required'
      FROM medical_programs
      WHERE id = 'medical_program_id';


    2. Якщо care_plan_required відмічено:

      1. перевірити based_on (посилання на care_plan та її активність) в запиті

        1. в разі не знайдено based_on:

          1. додати до відповіді: status = INVALID

          2. додати до відповіді: rejection_reason = "Care plan with activity on "<medical_programs.name>\" is required for for program \"<medical_programs.name>\""

4. Перевірити, що дігнози відповідають програмі

Застосовується дл програм відповідно до medical program settings:

Ціль перевірки: Необхідно перевірити чи рецепт з програмою потребує контекст (взаємодію) з вказаними діагнозами. 

  1. Якщо програма має параметр CONDITIONS_ICD10_AM_ALLOWED в medical_program_settings:

    1. Перевірити, чи первинні діагнози зі взаємодії в контексті має код з eHealth/ICD10_AM/condition_codes dictionary

      1. Перевірити коди діагнозів в CONDITIONS_ICD10_AM_ALLOWED

        1. в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Encounter in context has no primary diagnosis allowed for the medical program“ 

  2. Якщо програма має параметр CONDITIONS_ICPC2_ALLOWED в medical_program_settings:

    1. Перевірити, чи первинні діагнози зі взаємодії в контексті має код з eHealth/ICPC2/condition_codesdictionary

      1. Перевірити коди діагозів з CONDITIONS_ICPC2_ALLOWED

        1. в разі помилки - повернути 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. Перевірити період

Застосовується до програм: будь-які

Ціль перевірки: Потрібно перевірити чи період рецепту не перевищив доступниму кількість днів.

  1. Якщо рецепт має програму з MEDICATION MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях медичної програми:

    1. Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює налаштуванням параметру MEDICATION_REQUEST_MAX_PERIOD_DAY

      1. в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period “Period length exceeds allowed value for the medical program“ program“ 

  2. Якщо рецепт має програму без MEDICATION_REQUEST_MAX_PERIOD_DAY в налаштуваннях програми:

    1. Перевірити, що період рецепту (ended_at - started_at) меньше або дорівнює параметру MEDICATION_REQUEST_MAX_PERIOD_DAY чарту

      в разі помилки - повернути 200 зі

      _PERIOD_DAY чарту

      1. в разі помилки - повернути 200 зі статусом = INVALID та rejection_reason = “Period length exceeds default maximum value“ 

8. Перевірити context

  1. Перевірити що "context" є активною (без помилок) сутністю з відповідного словника, що належить даному пацієнту

    1. Перевірити що сутність в колекції $.data.context.identifier.type.coding[0].code з id == $.data.context.identifier.value належить даному пацієнту

      1.  у разі помилки - повернути 200 з статусом = INVALID та rejection_reason = “Period length exceeds default maximum value“ “Encounter entity is not found for program“

Згенерувати структуру відповіді

...