Versions Compared

Key

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

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

Apiary

Ціль

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

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

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

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

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

  • created_at

  • started_at

  • ended_at

  • person_id 

  • employee_id 

  • division_id

  • medication_id 

  • medication_qty

  • programs

Авторизація

  1. Перевірити валідність токену доступу

  2. Перевірити скоупи користувача (scope = 'medication_request_request:write') на можливість виконання даної дії

    1. в разі помилки - згенерувати відповідь 401

Перевірити запит (JSON схема)

  1. Перевірити запит, використовуючи схему JSON. 

    1. в разі помилки повернути 422 з повідомленням ("required property %{property} was not present")

Перевірити тип рецепту

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

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

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

Логіка перевірки (перевірка можливості використання програми)

  • Кожна медична програма може мати її унікальні стани для відпуску рецептів. Стани можуть визначатися, як на аналізі персональної інформації, так і на списку ЛЗ, термінів, локації та їх комбінації.

  • На сьогодні є тільки стани для наступних програм "Dostupni liky", "Netsukrovyy diabet", "Insuliny z doplatoyu", "Insuliny bezoplatno", “Epilepsiya“, “Rozlady psykhiky ta povedinky“ і ми їх перевіряємо.

  • Також, можливо мати відпуск рецепту без програми.

  • В будь-якому випадку, для медичної програми потребується окремий блок логічної вітки.

  • Перевірити сумісність тільки програм, які є доступні в беклог (масиві).

  • Якщо статус програми невалідний, причина повинна бути збережена та повернута у відповідь.

Перевірити відповідність програмі

Деякі перевірки (нижче по тексту) повинні виконуватися для програми

  1. якщо проходять - зберегти відповідь для програми - status = VALID

1. Перевірити відповідність INNM програмі

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

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

  1. Перевірити відповідність innm з переліком ЛЗ для програми

    1.  

    2. якщо дані не знайдено:

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

      2. додати до відповіді: rejection_reason = "Innm not on the list of approved innms for program \"<medical_programs.name>\""

...

Code Block
SELECT * 
FROM program_medications PM
    INNER JOIN medical_programs MP
      ON PM.medical_program_id=MP.id
		INNER JOIN medications M
			ON M.id = PM.medication_id
				AND M.type =  'BRAND'
        AND MP.medication_request_allowed = TRUE
		INNER JOIN ingredients I
			ON I.parent_id = M.id
				AND I.is_primary = TRUE
				AND I.medication_child_id = PM.medication_id
WHERE PM.medical_program_id = 'medical_program_id'
         AND MP.is_active = TRUE
         AND M.is_active = TRUE;

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

  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!"

...

Знайти рецепт по $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 відмічено:

  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_REQUEST_MAX_PERIOD_DAY в налаштуваннях медичної програми:

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

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

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

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

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

8. Перевірити контекст

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

    1. Перевірити, що сутність в колекції $.data.context.identifier.type.coding[0].code with id == $.data.context.identifier.value that belongs to the current patient

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

    2. Перевірити, що діагнози взаємодії не є пустими в $.encounter.diagnosis

      1. в разі помилки - повернути код 422 ('Encounter without diagnosis can not be referenced')

9. Перевірити персону

Валідно для програм: будь-яких

Цілі перевірок: Необхідно перевірити, що персона має необхідні статуси верифікації для отримання мед препаратів.

Перевірити статус персони згідно опису в Create Medication request Request

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

...

Note

The page is not supported. The method requirements can be found here [DRAFT] PreQualify Medication Request Request [API-005-008-003-0161]

Table of Contents
maxLevel7
minLevel1

Призначення

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

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

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

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

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

Page Properties

Link

https://uaehealthapi.docs.apiary.io/#reference/public.-reimbursement/medication-request-requests/prequalify-medication-request-request

Посилання на Apiary або Swagger

Resource

/api/medication_request_requests/prequalify

Посилання на ресурс, наприклад: /api/persons/create

Scope

medication_request_request:write

Scope для доступу

Components

ePrescription, Reimbursement

Зазначається перелік бізнес компонентів, які використовують цей метод, наприклад: ePrescription

Microservices

Немає даних

Перелік мікросервісів, які використовує метод API, наприклад: Auth, ABAC

Protocol type

REST

Тип протоколу, який використовується запитом, наприклад: SOAP | REST

Request type

POST

Тип запиту API, наприклад: GET, POST, PATCH…

Sync/Async

Sync

Метод є синхронним чи асинхронним?

Логіка

Немає даних

Передумови

Немає даних

Глобальні та конфігураційні параметри

Немає даних

Вхідні параметри

Немає

Фільтри

Немає

Структура запиту

Дивись на Apiary

Приклад:

Expand
titleRequest example
Code Block
{
  "medication_request_request": {
    "person_id": "585044f5-1272-4bca-8d41-8440eefe7d26",
    "employee_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
    "division_id": "881d6dee-dd3d-43f3-8983-922354c0e6ce",
    "created_at": "2017-08-17",
    "started_at": "2017-08-17",
    "ended_at": "2017-09-16",
    "medication_id": "1349a693-4db1-4a3f-9ac6-8c2f9e541982",
    "medication_qty": 10.34,
    "intent": "plan",
    "category": "community",
    "based_on": [
      {
        "identifier": {
          "type": {
            "coding": [
              {
                "system": "eHealth/resources",
                "code": "care_plan"
              }
            ]
          },
          "value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
        }
      },
      {
        "identifier": {
          "type": {
            "coding": [
              {
                "system": "eHealth/resources",
                "code": "activity"
              }
            ]
          },
          "value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
        }
      }
    ],
    "context": {
      "identifier": {
        "type": {
          "coding": [
            {
              "system": "eHealth/resources",
              "code": "encounter"
            }
          ]
        },
        "value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
      }
    },
    "dosage_instruction": [
      {
        "sequence": 1,
        "text": "0.25mg PO every 6-12 hours as needed for menses from Jan 15-20, 2015.  Do not exceed more than 4mg per day",
        "additional_instruction": [
          {
            "coding": [
              {
                "system": "eHealth/SNOMED/additional_dosage_instructions",
                "code": "311504000"
              }
            ]
          }
        ],
        "patient_instruction": "0.25mg PO every 6-12 hours as needed for menses from Jan 15-20, 2015.  Do not exceed more than 4mg per day",
        "timing": {
          "event": [
            "2017-04-20T19:14:13Z"
          ],
          "repeat": {
            "bounds_duration": {
              "value": 10,
              "unit": "days",
              "system": "eHealth/ucum/units",
              "code": "d"
            },
            "count": 2,
            "count_max": 4,
            "duration": 4,
            "duration_max": 6,
            "duration_unit": "d",
            "frequency": 1,
            "frequency_max": 2,
            "period": 4,
            "period_max": 6,
            "period_unit": "d",
            "day_of_week": [
              "mon"
            ],
            "time_of_day": [
              "2017-04-20T19:14:13Z"
            ],
            "when": [
              "WAKE"
            ],
            "offset": 4
          },
          "code": {
            "coding": [
              {
                "system": "TIMING_ABBREVIATIONS",
                "code": "patient"
              }
            ]
          }
        },
        "as_needed_boolean": true,
        "site": {
          "coding": [
            {
              "system": "eHealth/SNOMED/anatomical_structure_administration_site_codes",
              "code": "344001"
            }
          ]
        },
        "route": {
          "coding": [
            {
              "system": "eHealth/SNOMED/route_codes",
              "code": "46713006"
            }
          ]
        },
        "method": {
          "coding": [
            {
              "system": "eHealth/SNOMED/administration_methods",
              "code": "419747000"
            }
          ]
        },
        "dose_and_rate": {
          "type": {
            "coding": [
              {
                "system": "eHealth/dose_and_rate",
                "code": "'ordered'"
              }
            ]
          },
          "dose_range": {
            "low": {
              "value": 0,
              "unit": "mg",
              "system": "eHealth/ucum/units",
              "code": "mg"
            },
            "high": {
              "value": 0,
              "unit": "mg",
              "system": "eHealth/ucum/units",
              "code": "mg"
            }
          },
          "rate_ratio": {
            "numerator": {
              "value": 0,
              "unit": "mg",
              "system": "eHealth/ucum/units",
              "code": "mg"
            },
            "denominator": {
              "value": 0,
              "unit": "mg",
              "system": "eHealth/ucum/units",
              "code": "mg"
            }
          }
        },
        "max_dose_per_period": {
          "numerator": {
            "value": 0,
            "unit": "mg",
            "system": "eHealth/ucum/units",
            "code": "mg"
          },
          "denominator": {
            "value": 0,
            "unit": "mg",
            "system": "eHealth/ucum/units",
            "code": "mg"
          }
        },
        "max_dose_per_administration": {
          "value": 0,
          "unit": "mg",
          "system": "eHealth/ucum/units",
          "code": "mg"
        },
        "max_dose_per_lifetime": {
          "value": 0,
          "unit": "mg",
          "system": "eHealth/ucum/units",
          "code": "mg"
        }
      }
    ],
    "priority": "routine",
    "prior_prescription": {
      "identifier": {
        "type": {
          "coding": [
            {
              "system": "eHealth/resources",
              "code": "medication_request"
            }
          ]
        },
        "value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
      }
    },
    "container_dosage": {
      "system": "MEDICATION_UNIT",
      "code": "ML",
      "value": 4
    }
  },
  "programs": [
    {
      "id": "59781de0-2e64-4359-b716-bcc05a32c10f"
    }
  ]
}

Авторизація

  1. Перевірити валідність токену доступу

  2. Перевірити скоупи користувача (scope = 'medication_request_request:write') на можливість виконання даної дії

    1. в разі помилки - згенерувати відповідь 401

Headers

Content-Type:application/json

Authorization:Bearer c2778f3064753ea70de870a53795f5c9

Перевірити запит

  1. Перевірити запит, використовуючи схему JSON. 

    1. в разі помилки повернути 422 з повідомленням ("required property %{property} was not present")

Перевірити дані запиту

Перевірити тип рецепту

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

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

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

Логіка перевірки (перевірка можливості використання програми)

  • Кожна медична програма може мати її унікальні стани для відпуску рецептів. Стани можуть визначатися, як на аналізі персональної інформації, так і на списку ЛЗ, термінів, локації та їх комбінації.

  • На сьогодні є тільки стани для наступних програм "Dostupni liky", "Netsukrovyy diabet", "Insuliny z doplatoyu", "Insuliny bezoplatno", “Epilepsiya“, “Rozlady psykhiky ta povedinky“ і ми їх перевіряємо.

  • Також, можливо мати відпуск рецепту без програми.

  • В будь-якому випадку, для медичної програми потребується окремий блок логічної вітки.

  • Перевірити сумісність тільки програм, які є доступні в беклог (масиві).

  • Якщо статус програми невалідний, причина повинна бути збережена та повернута у відповідь.

Перевірити відповідність програмі

Деякі перевірки (нижче по тексту) повинні виконуватися для програми

  1. якщо проходять - зберегти відповідь для програми - status = VALID

1. Перевірити відповідність INNM програмі

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

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

  1. Перевірити відповідність innm з переліком ЛЗ для програми

    1.  

    2. якщо дані не знайдено:

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

      2. додати до відповіді: rejection_reason = "Innm not on the list of approved innms for program \"<medical_programs.name>\""

Code Block
SELECT * 
FROM program_medications PM
    INNER JOIN medical_programs MP
      ON PM.medical_program_id=MP.id
		INNER JOIN medications M
			ON M.id = PM.medication_id
				AND M.type =  'BRAND'
        AND MP.medication_request_allowed = TRUE
		INNER JOIN ingredients I
			ON I.parent_id = M.id
				AND I.is_primary = TRUE
				AND I.medication_child_id = PM.medication_id
WHERE PM.medical_program_id = 'medical_program_id'
         AND MP.is_active = TRUE
         AND M.is_active = TRUE;

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) 

Не валідно

  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_REQUEST_MAX_PERIOD_DAY в налаштуваннях медичної програми:

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

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

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

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

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

8. Перевірити контекст

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

    1. Перевірити, що сутність в колекції $.data.context.identifier.type.coding[0].code with id == $.data.context.identifier.value that belongs to the current patient

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

    2. Перевірити, що діагнози взаємодії не є пустими в $.encounter.diagnosis

      1. в разі помилки - повернути код 422 ('Encounter without diagnosis can not be referenced')

9. Перевірити персону

Валідно для програм: будь-яких

Цілі перевірок: Необхідно перевірити, що персона має необхідні статуси верифікації для отримання мед препаратів.

Перевірити статус персони згідно опису в Create Medication request Request

Параметри, які застосовуються при опрацюванні запиту

Конфігураційні параметри

Доступ до методу визначається скоупом medication_request_request:write. Дозвіл на даний скоуп визначається адміністратором Системи шляхом конфігурування скоупів в контексті клієнтів і ролей.

Довідники

Немає даних

Обробка

Немає даних

Структура відповіді

Зібрати масив для всіх програм в беклог зі статусами (VALID or INVALID) та rejection_reason

Дивись на Apiary

Приклад:

Expand
titleResponse example
Code Block
{
  "meta": {
    "code": 200,
    "url": "https://example.com/resource",
    "type": "object",
    "request_id": "req-adasdoijasdojsda"
  },
  "data": [
    {
      "program_id": "59781de0-2e64-4359-b716-bcc05a32c10f",
      "program_name": "Програма \"Доступні ліки\"",
      "status": "INVALID",
      "rejection_reason": "Innm not on the list of approved innms for program 'DOSTUPNI LIKI' !"
    }
  ]
}

Подальша обробка

Немає

HTTP статус коди

HTTP статус код

Повідомлення

Що викликало помилку

200

 Відповідь

 

401

Помилка неавторизованого доступу

409

Помилка

422

 Помилка

 

Зворотна сумісність

Немає даних