Table of Contents

Purpose

This WS is designed to return records about Medication requests in person context by search parameters.

Specification

...

Link

...

https://ehealthmisapi1.docs.apiary.io/#reference/public.-reimbursement/medication-request/get-medication-requests-by-search-params

...

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

...

Resource

...

/api/persons/{{person_id}}/medication_requests

...

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

...

Scope

...

medication_request:read

...

Scope для доступу

...

Components

...

ePrescription

...

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

...

Microservices

...

API paragraph not found

...

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

...

Protocol type

...

REST

...

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

...

Request type

...

GET

...

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

...

Sync/Async

...

Sync

...

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

Logic

API paragraph not found

Preconditions

No

Global and configurable parameters

Потрібно вказати глобальні та конфігураційні параметри.

Наприклад:

...

Variable

...

Values

...

Description

...

CARE_PLAN_<category>_ICD10_AM_CONDITIONS_ALLOWED

 

 

...

Values that matches with dictionaryeHealth/ICD10_AM/condition_codes

Example: “E10.32, E11.92”

...

(Example: CARE_PLAN_CLASS_1_ICD10_AM_CONDITIONS_ALLOWED)

Input parameters

Потрібно вказати вхідні параметри запиту. Наприклад, для GET /patients/composition/job/{{asyncJobId}} вхідний параметр:

...

Input parameter

...

Values

...

Type

...

Description

...

Example

...

asyncJobId

...

String

...

Async Job Object ID

Filters

Потрібно вказати фільтри. Наприклад, для GET /api/medication_requests/{{id}}/dispenses?status=PROCESSED фільтр:

...

Filter

...

Values

...

Type

...

Description

...

Example

...

status

...

String

...

Optional

...

PROCESSED

Request structure*

See on Apiary

Example:

...

titleRequest example

...

Table of Contents

Purpose

This WS is designed to return records about Medication requests in person context by search parameters

Specification

Page Properties

Link

https://ehealthmisapi1.docs.apiary.io/#reference/public.-reimbursement/medication-request/get-medication-requests-by-search-params

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

Resource

/api/persons/{{person_id}}/medication_requests

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

Scope

medication_request:read

Scope для доступу

Components

ePrescription

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

Microservices

API paragraph not found

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

Protocol type

REST

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

Request type

GET

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

Sync/Async

Sync

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

Public/Private/Internal

Public

Logic

Технічний опис бізнес-процесу виписування рецепту в ЕСОЗ (загальний процес для усіх рецептурних ЛЗ, в т.ч. і тих, які підлягають реімбурсації)

Процеси роботи з випискою електронних рецептів

Preconditions

MRs should be created

Input parameters

Input parameter

Values

Type

Description

Example

person_id

String

person_id of a patient.

Required.

5e661b15-a39a-4713-b18e-ba03a4a48ecc

Filters

See on Apiary

Authorize

  • Verify the validity of access token

    • 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:read')

    • Return (403, 'Your scope does not allow to access this resource. Missing allowances: medication_request:read') in case of invalid scope(s)

Access to the resource is also managed by ABAC rules (EN).

Headers

Content-Type:application/json

Authorization:Bearer c2778f3064753ea70de870a53795f5c9

Dictionaries

  • MEDICATION_REQUEST_BLOCK_REASON

  • MEDICATION_REQUEST_INTENT

  • MEDICATION_REQUEST_CATEGORY

  • MEDICATION_REQUEST_PRIORITY

  • eHealth/SNOMED/additional_dosage_instructions

  • eHealth/SNOMED/anatomical_structure_administration_site_codes

  • eHealth/SNOMED/route_codes

  • eHealth/SNOMED/administration_methods

  • eHealth/SNOMED/dose_and_rate

  • eHealth/ICD10_AM/condition_codes

  • eHealth/ICPC2/condition_codes

  • ADDRESS_TYPE

  • SETTLEMENT_TYPE

  • STREET_TYPE

  • PHONE_TYPE

  • DIVISION_TYPE

  • POSITION

  • MEDICATION_FORM

  • MEDICATION_UNIT

  • eHealth/clinical_impression_patient_categories

  • LICENSE_TYPE

  • FUNDING_SOURCE

  • MR_BLANK_TYPES

  • MEDICATION_REQUEST_REJECT_REASON

Processing

Service returns all Medication requests related to the person filtered by submitted parameters:

  1. Get all Medication requests by person_id from medication_requests (OPS database).

  2. Validate data consistency:

    • Ensure that requested Medication requests have ABAC context

      • Return 403 ('Access denied') in case of error.

  3. Filter list above by submitted search parameters.

  4. Render a response according to specification with found Medication requests entities.

Response structure

See on Apiary

Example:

Expand
titleResponse example
Code Block
{
  "meta": {
    "code": 200,
    "url": "https://example.com/resource",
    "type": "object",
    "request_id": "req-adasdoijasdojsda"
  },
  "data": [
    {
      "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
      "status": "ACTIVE",
      "request_number": "0000-243P-1X53-EH38",
      "created_at": "2017-08-17",
      "started_at": "2017-08-17",
      "ended_at": "2017-09-16",
      "dispense_valid_from": "2017-08-17",
      "dispense_valid_to": "2017-09-16",
      "legal_entity": {
        "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
        "name": "Клініка Ноунейм",
        "short_name": "Ноунейм",
        "public_name": "Клініка Ноунейм",
        "type": "MSP",
        "edrpou": "5432345432",
        "status": "ACTIVE"
      },
      "division": {
        "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
        "legal_entity_id": "c8aadb87-ecb9-41ca-9ad4-ffdfe1dd89c9",
        "name": "Бориспільське відділення Клініки Ноунейм",
        "addresses": [
          {
            "type": "RESIDENCE",
            "country": "UA",
            "area": "Житомирська",
            "region": "Бердичівський",
            "settlement": "Київ",
            "settlement_type": "CITY",
            "settlement_id": "b075f148",
            "street_type": "STREET",
            "street": "вул. Ніжинська",
            "building": "15",
            "apartment": "23",
            "zip": "02090"
          }
        ],
        "phones": [
          {
            "type": "MOBILE",
            "number": "+380503410870"
          }
        ],
        "email": "email@example.com",
        "working_hours": {
          "mon": [
            [
              "08.00",
              "12.00"
            ],
            [
              "14.00",
              "18.00"
            ]
          ],
          "tue": [
            [
              "08.00",
              "12.00"
            ]
          ],
          "wed": [
            [
              "08.00",
              "12.00"
            ]
          ],
          "thu": [
            [
              "08.00",
              "12.00"
            ]
          ],
          "fri": [
            [
              "08.00",
              "12.00"
            ]
          ]
        },
        "type": "CLINIC",
        "external_id": "3213213",
        "location": {
          "latitude": 30.1233,
          "longitude": 50.32423
        },
        "dls_id": "2872985",
        "dls_verified": true
      },
      "employee": {
        "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
        "position": "P6",
        "party": {
          "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
          "no_tax_id": true,
          "first_name": "Петро",
          "last_name": "Іванов",
          "second_name": "Миколайович",
          "email": "email@example.com",
          "phones": [
            {
              "type": "MOBILE",
              "number": "+380503410870"
            }
          ]
        }
      },
      "person": {
        "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
        "short_name": "Петро І. І.",
        "age": 35
      },
      "medication_info": {
        "medication_id": "4a63b858-c138-4921-9341-ae9e384bcbd6",
        "medication_name": "Аміодарон 200мг таблетки",
        "form": "PILL",
        "dosage": {
          "numerator_unit": "MG",
          "numerator_value": 200,
          "denumerator_unit": "PILL",
          "denumerator_value": 1
        },
        "ingredients": [
          {
            "id": "1349a693-4db1-4a3f-9ac6-8c2f9e541982",
            "name": "Інсулін деглюдек",
            "name_original": "Insulin degludec",
            "sctid": "52574003",
            "dosage": {
              "numerator_unit": "MG",
              "numerator_value": 200,
              "denumerator_unit": "PILL",
              "denumerator_value": 1
            },
            "is_primary": true
          }
        ],
        "medication_qty": 10.34
      },
      "medical_program": {
        "id": "c7d52544-0bd4-4129-97b0-2d72633e0490",
        "name": "Доступні ліки",
        "medical_program_settings": {
          "care_plan_required": true,
          "employee_types_to_create_medication_request": [
            "SPECIALIST",
            "DOCTOR"
          ],
          "skip_mnn_in_treatment_period": true,
          "skip_employee_validation": true,
          "speciality_types_allowed": [
            "ENDOCRINOLOGY",
            "PEDIATRIC_NEUROLOGY"
          ],
          "conditions_icd10_am_allowed": [
            "A00.0",
            "A00.1"
          ],
          "conditions_icpc2_allowed": [
            "A01",
            "A02"
          ],
          "providing_conditions_allowed": [
            "INPATIENT",
            "OUTPATIENT"
          ],
          "medication_request_max_period_day": 90,
          "skip_medication_request_employee_declaration_verify": true,
          "skip_medication_request_legal_entity_declaration_verify": true,
          "multi_medication_dispense_allowed": true,
          "skip_medication_dispense_sign": true,
          "medication_request_notification_disabled": true,
          "skip_contract_provision_verify": true,
          "medication_dispense_period_day": 90
        },
        "medical_program_settings_text": "Some text",
        "is_active": true,
        "medication_dispense_allowed": true,
        "medication_dispense_allowed_text": "Some text",
        "medication_request_allowed": true,
        "medication_request_allowed_text": "Some text",
        "type": "MEDICATION",
        "funding_source": "NHS",
        "inserted_at": "2017-04-20T19:14:13Z",
        "inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e",
        "updated_at": "2017-04-20T19:14:13Z",
        "updated_by": "2922a240-63db-404e-b730-09222bfeb2dd"
      },
      "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/composition_types",ucum/units",
                "code": "NEWBORNmg"
      }     ]   },
  "event": [     {       "codehigh": {
          "coding": [      "value": 0,
                 {"unit": "mg",
                "system": "eHealth/composition_eventsucum/units",
                "code": "COMPOSITION_VALIDITY_PERIODmg"
          }    }
     ]       },
      "period": {      "rate_ratio": {
    "start": "2020-06-26T15:22:53.403Z",         "endnumerator": "2020-07-26T15:22:53.403Z"
{
     }     }   ],   "subjectvalue": 0,
  {      "type": {       "codingunit": [
"mg",
       {           "system": "eHealth/ucum/compositionunits",
                "code": "stringmg"
   
    }       ],   },
   "text": "string"     },     "valuedenominator": "e49abc30-6d17-11ea-b83c-673680173afa"{
  },   "encounter": {     "type": {       "codingvalue": [
  0,
     {           "systemunit": "eHealth/compositionmg",
          "code": "string"     "system": "eHealth/ucum/units",
  }       ],       "textcode": "stringmg"
     },     "value": "e49abc30-6d17-11ea-b83c-673680173afa"   },
  "author": {     "type": {   }
   "coding": [      },
  {           "system"max_dose_per_period": "eHealth/composition",{
            "codenumerator": "string" {
              "value": 0,
}       ],       "textunit": "stringmg",
    },     "value": "e49abc30-6d17-11ea-b83c-673680173afa"
  },   "sectionsystem": {
    "focus": {eHealth/ucum/units",
      "type": {         "codingcode": "mg"
 [           {},
            "systemdenominator": "eHealth/composition",{
              "code": "string"value": 0,
           }   "unit": "mg",
    ],          "textsystem": "string"eHealth/ucum/units",
       },       "valuecode": "e49abc30-6d17-11ea-b83c-673680173afamg"
    }     },   "extension":}
[     {     },
 "valueCode": "AUTHORIZE_WITH",       "valueUuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
 "max_dose_per_administration": {
   },     {       "valueCodevalue": "IS_ACCIDENT"0,
      "valueBoolean":  true     }"unit": "mg",
    {        "valueCodesystem": "TREATMENT_VIOLATIONeHealth/ucum/units",
            "valueStringcode": "late_arrival"mg"
          },
       {
    "max_dose_per_lifetime": {
    "valueCode": "TREATMENT_VIOLATION_DATE",       "valueDatevalue": "2020-12-12"
  0,
 },     {       "valueCodeunit": "IS_INTOXICATEDmg",
       "valueBoolean": true     }"system": "eHealth/ucum/units",
    {        "valueCodecode": "IS_FOREIGN_TREATMENT",mg"
          }
  "valueBoolean": true     },
      {],
      "valueCoderejected_at": "IS_FORCE_RENEW2022-01-28",
      "valueBoolean": true
    }
  ]
}

Authorize

  • Verify the validity of access token

    • 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:read')

    • Return (403, 'Your scope does not allow to access this resource. Missing allowances: medication_request:read') in case of invalid scope(s)

Access to the resource is also managed by ABAC rules .

Headers*

Наприклад:

  • Content-Type:application/json

  • Authorization:Bearer c2778f3064753ea70de870a53795f5c9

  • api-key:uXhEczJ56adsfh3Ri9SUkc4en

Validate request*

Наприклад:

  1. Validate request using JSON schema

    1. In case validation failed - generate 422 error

Expand
titleJSON schema
Code Block
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "verification_code": {
      "type": "string"
    }
  },
  "required": [
    "verification_code"
  ],
  "additionalProperties": false
}

Request data validation*

Валідація даних

Parameters that are used when processing the request

Configuration parameters

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

Dictionaries

Потрібно вказати довідники, які використовує метод API

Processing

Service returns all Medication requests related to the person filtered by submitted parameters:

  1. Get all Medication requests by person_id from medication_requests (OPS database).

  2. Validate data consistency:

    • Ensure that requested Medication requests have ABAC context

      • Return 403 ('Access denied') in case of error.

  3. Filter list above by submitted search parameters.

  4. Render a response according to specification with found Medication requests entities.

Response structure*

See on Apiary

Example:

Expand
titleResponse example
Code Block
{
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "status": "PENDING",
    "eta": "string",
    "doneAt": "string",
    "links": [
      {
        "entity": "eHealth/composition",
        "href": "composition/0daaad78-6cfb-11ea-9cd6-afab698838bc",
        "error": "string"
      }
    ]rejected_by": "e8e5a969-74d8-4620-8496-f5e41f2e8312",
      "reject_reason": "Incompatible drugs",
      "reject_reason_code": "PATIENT_REJECT",
      "is_blocked": false,
      "block_reason": "Підозра на фрод",
      "block_reason_code": "WRONG_QTY_DRUG",
      "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
      }
    }
  ],
  "paging": {
    "page_number": 2,
    "page_size": 50,
    "total_entries": 1000,
    "total_pages": 23
  }
}

Post-processing processes

...

No

HTTP status codes

...

Page Properties

HTTP status code

Message

What caused the error

 200

 Response

  

401 

 Invalid access token

 

 

Backward compatibility

...

403

  • Your scope does not allow to access this resource. Missing allowances: medication_request:read;

  • Access denied