Info |
---|
REST API method / Метод REST API (настанова) (remove the link block before publishing the document) |
...
Page Properties | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||
|
...
Input parameter | Mandatory | Type | Description | Example | |
---|---|---|---|---|---|
1 | -- | -- | -- | -- | -- |
Request structure
See on API-specification (посилання на сторінку з API-специфікацією)
Description of the REST API request structure, example
Expand | ||
---|---|---|
| ||
|
...
Verify the validity of access token
in case of error - return 401 (“Invalid access token”) in case of validation fails
Verify that token is not expired
in case of error - return 401 (“Invalid access token”)
Check user scopes in order to perform this action (scope = 'medication_request_request:write')
return 403 (“Your scope does not allow to access this resource. Missing allowances: medication_request_request:write”) in case of invalid scope(s)
If BLOCK_UNVERIFIED_PARTY_USERS is true, then check party's data match following condition: verification_status != NOT_VERIFIED or (verification_status = NOT_VERIFIED and updated_at <= current_date - UNVERIFIED_PARTY_PERIOD_DAYS_ALLOWED):
in case not match - return 403 ("Access denied. Party is not verified")
Validate container_dosage field
...
Validate $.container_dosage field by schemata
$.container_dosage.code and $.container_dosage.value should be both filled
in case of error return 422 error ("required property %{property} was not present")
$.container_dosage.system should be “MEDICATION_UNIT”
in case of error return 422 error ("value is not allowed in enum")
if $.container_dosage is filled then $.container_dosage.unit should be checked with the MEDICATION_UNIT dictionary by $.container_dosage.code as a key.in case of error return 422 error ("value is not allowed in enum")
Check if there is at list one record of Brand with requested primary container volume
a. if not exist - return 404 error (message: "Not found any appropriate medication with such container parameters")
Validate priority
Check by schemata if $.priority is filled with the value of MEDICATION_REQUEST_PRIORITY dictionary
in case of error return 422 error ("value is not allowed in enum")
...
Validate that created_at, started_at, ended_at in date format
in case invalid return 422 with msg ("expected \"%{actual}\" to be a valid ISO 8601 date")
Validate ended_at >= started_at
if invalid - return 422 error (message: "Ended date must be >= Started date!")
Validate started_at >= created_at, but not greater than (created_at + MEDICATION_REQUEST_REQUEST_EXTENDED_LIMIT_STARTED_AT_DAYS)
if invalid - return 422 error (message: "The start date should be equal to or greater than the creation date, but the difference between them should be not exceed {{MEDICATION_REQUEST_REQUEST_EXTENDED_LIMIT_STARTED_AT_DAYS}} day(s).")
Validate started_at >= current_date()if invalid - return 422 error (message: "Started date must be >= current date!")
Validate created_at >= current_date() - MEDICATION_REQUEST_REQUEST_DELAY_INPUT chart param
if invalid - return 422 error (message: "Create date must be >= Current date - MRR delay input!")
Validate started_at regarding frequency of receiving drugs
get $.medical_programs.medical_program_setting by medical_program_id from request
validate skip_mnn_in_treatment_period variable
in case skip_mnn_in_treatment_period == FALSE (or absent)
validate request according to logic: PreQualify Medication request: 2. Check absence the same medications for the programs
in case skip_mnn_in_treatment_period == TRUE
skip validating frequency of receiving drugs
Validate created_at regarding frequency of receiving drugs
get $.medical_programs.medical_program_setting by medical_program_id from request
validate skip_mnn_in_treatment_period variable
in case skip_mnn_in_treatment_period == FALSE (or absent)
validate request according to logic: PreQualify Medication request: 2. Check absence the same medications for the programs
in case skip_mnn_in_treatment_period == TRUE
skip validating frequency of receiving drugs
Validate period length (ended_at - started_at):
If medical program has been submitted:
validate request according to logic: PreQualify Medication request: 7. Validate period
else:
Check that medication request period less than or equal to MEDICATION_REQUEST_MAX_PERIOD_DAY parameter from charts
in case of error - return 409 “Period length exceeds default maximum value“
...
Verify Care plan:
It should belong to the same person as set in MRR
in case of error return 422 with msg ("Care plan not found")
It should be in active status
Verify submitted Activity:
It belongs to the Care plan.
in case of error return 422 with msg ("Activity not found")
It has activity.detail.kind=medication_request; activity.detail.product_reference=medication_id.
in case of error return 422 with msg ("Invalid activity kind")
It has scheduled, in_progress status.
in case of error return 422 with msg ("Invalid activity status")
if it has quantity then calculate remaining quantity:
validate $.activity.details.remaining_quantity_type:
if $.activity.details.remaining_quantity_type =for_request than:
select all MRR in status NEW which based on current activity
select all MR in statuses ACTIVE based on current activity
select all MD (medication dispenses) in status PROCESSED related to the Medication requests which are in status COMPLETE, REJECTED, EXPIRED
calculate:
reserved_qty as sum of medication_qty in the filtered MRR and MR list
dispensed_qty as sum of medication_qty in the filtered MD list
current_qty as medication_qty from current MRR
calculate remaining quantity by subtracting reserved_quantity, dispensed_qty, current_qty from activity quantity
if $.activity.details.remaining_quantity_type = for_use than:
select all MRR in status NEW which based on current activity
select all MR in statuses ACTIVE, COMPLETED based on current activity
calculate reserved at the moment medication quantity as sum of medication_qty in the filtered MRR and MR list, including medication_qty from current MRR
calculate remaining quantity by subtracting reserved quantity from activity quantity
Check remaining quantity is greater then or equal to zero
in case of error return 409 "The total amount of the prescribed medication quantity exceeds quantity in care plan activity"
check that medical_program_id equal to $.activity[].program
in case of error return 422 with msg ("Medical program from activity should be equal to medical program from request")
Validate started_at/ended_at of Medication request Request:
if care plan activity has detail.scheduled_timing.repeat.bounds_period - validate started_at/ended_at within bounds_period
if care plan activity has detail.scheduled_period - validate started_at/ended_at within scheduled_period
else - validate started_at/ended_at
crossingwithin care_plan.periodin the case of started_at/ended_at is not within care_plan.period return 422 with msg ("Invalid care plan period")
...
Validate medical_program_id is present in the request
in case of error return 422 ("required property medical_program_id was not present")
Validate medical_program_id - medical_program_id exists
in case of error return 422 ("Medical program not found")
Validate medical_programs.medication_request_allowed parameter
check if medication_request_allowed == true
in case of error return 422 with msg ("Forbidden to create medication request for this medical program!")
Validate medical_programs.medical_program_setting parameters
check if care_plan_required == true then the request should contain a based_on with care plan and activity that contains the same medical program
in case of error return 422 with msg ("Care plan and activity with the same medical program should be present in request")
If there is conditions_icd10_am_allowed parameter, then:
Check if primary diagnosis from the encounter in context has code from eHealth/ICD10_AM/condition_codes dictionary
Check diagnosis code in conditions_icd10_am_allowed
in case of error - return 422 “Encounter in context has no primary diagnosis allowed for the medical program“
If there is conditions_icpc2_allowed parameter, then:
Check if primary diagnosis from the encounter in context has code from eHealth/ICPC2/condition_codes dictionary
Check diagnosis code in conditions_icpc2_allowed
in case of error - return 422 “Encounter in context has no primary diagnosis allowed for the medical program“.
if skip_medication_request_employee_declaration_verify = false or null/absent
then: get $.declarations by employee_id, person_id, status=ACTIVE
if not found - return 422 error "Only doctors with an active declaration with the patient can create medication request!"
else skip declaration verification on employee level (if true).
if skip_medication_request_legal_entity_declaration_verify = false or null/absent
then: get $.declarations by employee's legal_entity_id, person_id, status=ACTIVE
if not found - return 422 error "Only legal entity with an active declaration with the patient can create medication request!"
else skip declaration verification on legal entity level (if true).
If medical program has funding_source = LOCAL , then invoke validation described at PreQualify Medication request request | 11.-Check-provision-for-a-programs
...
set:
dispense_valid_from = created_at
dispensed_valid_to = dispensed_valid_from + dispense_period
Fill 'data' structure for Response & save in IL.medication_request_requests
If encounter is present in the request context then based on it - fill the IL.medication_request_requests.context_episode_id
Fill separately
data_employee_id,
data_intent,
data_based_on_care_plan_id,
data_based_on_activity_id,
data_context_id,
data_patient_id,
data_legal_entity_id
Update based_on
If the medication request request is based on activity with quantity - set remaining_quantity for the activity which was calculated at validation Create Medication Request: Validate based_on (p. 2.d.1 )
Generate content for response
...
Response structure examples
See on API-specification (посилання на сторінку з API-специфікацією)
Description of the REST API response structure, example
Expand | ||
---|---|---|
| ||
|
...
Response code | HTTP Status code | Message | Internal name | Description | |
---|---|---|---|---|---|
1 | Базові | ||||
23 | 401 | 4 | 5 | 6 | |
7 | Специфічні | ||||
Invalid access token | Недійсний токен доступу | ||||
3 | 403 | Your scope does not allow to access this resource. Missing allowances: medication_request_request:write | Для вашої ролі відсутній доступ до цього ресурсу. Необхідний доступ на редагування заявки на електронний рецепт | ||
4 | 403 | Access denied. Party is not verified | Доступ заборонено. Працівник не перевірений | ||
5 | 404 | Not found any appropriate medication with such container parameters | Не знайдено жодного лікарського засобу з такими параметрами первинної упаковки | ||
6 | 409 | Employee is not active | Співробітник не активний в системі | ||
7 | 409 | Invalid legal entity type | Недопустимий тип юридичної особи | ||
8 | 409 | Patient is not verified | Пацієнт не верифікований | ||
9 | 409 | Period length exceeds default maximum value | Тривалість періоду перевищує максимальне значення, що визначене системою | ||
10 | 409 | {$.data.context.identifier.type.coding[*].code} not found | {$.data.context.identifier.type.coding[*].code} не знайдено | ||
11 | 409 | Entity in status "entered-in-error" can not be referenced | Не дозволено посилатися на об'єкт у статус "Внесений помилково" | ||
12 | 409 | Entity without related episode can not be referenced | - | ||
13 | 409 | Incorrect additional instruction | Неправильна додаткова інструкція | ||
14 | 409 | Incorrect site | У додатковій інструкції неправильно вказана інформація про частини тіла | ||
15 | 409 | Incorrect route | У додатковій інструкції неправильно вказана інформація про шлях введення лікарського засобу в організм | ||
16 | 409 | Incorrect method | У додатковій інструкції неправильно вказана інформація про метод/спосіб введення лікарського засобу в організм | ||
17 | 409 | Incorrect dose and rate type | У додатковій інструкції неправильно вказана інформація про дозу і спосіб визначення дозування лікарського засобу | ||
18 | 409 | The total amount of the prescribed medication quantity exceeds quantity in care plan activity | Загальна кількість лікарського засобу, що зазначена у заявці на рецепт перевищує кількість лікарського засобу, що доступна у призначенні плану лікування | ||
19 | |||||
20 | Специфічні | ||||
21 | 422 | required property %{property} was not present | Обов'язкові поля %{property} не вказані | ||
22 | 422 | value is not allowed in enum | Недопустиме значення | ||
23 | 422 | Prior prescription is not found | Первинний рецепт не знайдено | ||
24 | 422 | Employee not found | Співробітника не знайдено | ||
25 | 422 | Employee does not belong to legal entity from token | Працівник не належить до поточного закладу | ||
26 | 422 | Employee type can't create medication request with medical program from request | Працівник даного типу не може обрати таку медичну програму в заявці на рецепт | ||
27 | 422 | Only doctors with an active declaration with the patient can create medication request with medical program from request! | Лише лікарі, які мають активну декларацію з пацієнтом, можуть створити електронний рецепт за програмою, вказаною в запиті | ||
28 | 422 | Only legal entity with an active declaration with the patient can create medication request with medical program from request | Тільки у закладі, в якому пацієнт подав декларацію і вона в статусі "Активна" може бути створено електронний рецепт за програмою, вказаною в запиті | ||
29 | 422 | Employee's specialty doesn't allow create medication request with medical program from request | Спецальність співробітника не допускає створення рецепта із зазначеною програмою | ||
30 | 422 | Division not found | Відділення юридичної особи не знайдено | ||
31 | 422 | Only employee of active divisions can create medication request! | Лише працівник активного підрозділу може створити заявку на рецепт | ||
32 | 422 | Legal entity not found | Юридичну особу лікарні не знайдено | ||
33 | 422 | Only active legal entity can provide medication request | Лише у діючій юридиній особі може бути створена заявка на рецепт | ||
34 | 422 | Person not found | Пацієнта не знайдено в системі | ||
35 | 422 | Only for active MPI record can be created medication request! | Лише для пацієнта в статусі "активний" можна створити заявку на рецепт | ||
36 | 422 | expected \"%{actual}\" to be a valid ISO 8601 date | Очікується, що \"%{actual}\" буде датою в форматі ISO 8601 | ||
37 | 422 | Ended date must be >= Started date! | Дата закінчення курсу лікування має дорівнювати чи бути пізніше дати початку курсу лікування | ||
38 | 422 | The start date should be equal to or greater than the creation date, but the difference between them should be not exceed {{MEDICATION_REQUEST_REQUEST_EXTENDED_LIMIT_STARTED_AT_DAYS}} day(s | Дата початку повинна бути такою ж або пізнішою за дату створення, але різниця між ними не повинна перевищувати {{MEDICATION_REQUEST_REQUEST_EXTENDED_LIMIT_STARTED_AT_DAYS}} день(днів) | ||
39 | 422 | Create date must be >= Current date - MRR delay input! | Дата створення повинна бути >= Поточна дата - 3 доби | ||
40 | 422 | Medication not found | Лікарський засіб не знайдено | ||
41 | 422 | Only medication with type `INNM_DOSAGE` can be use for created medication request! | Виписування електронного рецепту можливе лише з використанням лікарської форми лікарського засобу, що складається з МНН, дозування та форми випуску | ||
42 | 422 | Only active innm_dosage can be use for created medication request! | Обрана лікарська форма неактивна. Лише активну лікарську форму можна використати для створення заявки на рецепт | ||
43 | 422 | required property context was not present | Інформація про контекст відсутня | ||
44 | 422 | Sequence must be unique | Послідовність повинна бути унікальною | ||
45 | 422 | Care plan not found | План лікування не знайдено | ||
46 | 422 | Activity not found | Призначення не знайдено | ||
47 | 422 | Invalid activity kind | Невірний тип призначення | ||
48 | 422 | Invalid activity status | Невірний статус призначення | ||
49 | 422 | Medical program from activity should be equal to medical program from request | Програма відшкодування у заявці на рецепт повинна бути такою ж як і в призначенні на лікарський засіб | ||
50 | 422 | Invalid care plan period | Недійсний період плану лікування | ||
51 | 422 | required property medical_program_id was not present | Необхідний ідентифікатор медичної програми відсутній | ||
52 | 422 | Medical program not found | Програма реімбурсації не знайдена | ||
53 | 422 | Forbidden to create medication request for this medical program! | Заборонено створювати електронний рецепт за цією медичною програмою | ||
54 | 422 | Care plan and activity with the same medical program should be present in request | У заявці на рецепт мають бути зазначені план лікування та призначення на лікарський засіб з однаковою програмою відшкодування | ||
55 | 422 | Encounter in context has no primary diagnosis allowed for the medical program | У контексті обрано посилання на взаємодію без первинного діагнозу, що визначений для обраної програми відшкодування | ||
56 | 422 | Only doctors with an active declaration with the patient can create medication request! | Лише лікарі, які мають активну декларацію з пацієнтом, можуть створити електронний рецепт! | ||
57 | 422 | Only legal entity with an active declaration with the patient can create medication request! | Тільки у закладі, в якому пацієнт подав декларацію і вона в статусі "Активна" може бути створено електронний рецепт! |
Post-processing processes
Description of actions performed on data after processing
Technical modules where the method is used
List of pages describing technical modules where the method is used
Page Properties Report | ||||
---|---|---|---|---|
|
...