Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Page Properties
idENT-005-011-002

ID метода

API-005-011-002-0191

Автор

Viacheslav Tybin (SoE eHealth)

Версія документа

1.0

Статус документа

Status
titledraft

Назва метода (укр.)

Створіть запит на декларацію онлайн

Назва метода (eng.)

Create Declaration Request online

Короткий опис метода

Для створення запиту на декларацію онлайн.

REST API method / Метод REST API (настанова) (remove the link block before publishing the document)

Properties of a REST API method document

Document type

Метод REST API

Document title

Create Declaration Request online

Guideline ID

GUI-0011

Author

Viacheslav Tybin (SoE eHealth)

Document version

1

Document status

DRAFT

Date of creation

ХХ.ХХ.ХХХХ (дата фінальної версії документа – RC або PROD)

Date of update

ХХ.ХХ.ХХХХ (дата зміни версії)

Method API ID

API-005-010-002-0194

Microservices (namespace)

IL

Component

Patient Cabinet

Component ID

COM-005-010

Link на API-специфікацію

https://ehealthmisapi1.docs.apiary.io/#reference/public.-patient-cabinet/cabinet/create-declaration-request-online

Resource

{{host}}//api.ehealth.gov.ua/api/patients/id/encounter_package

Scope

declaration_request:write

Protocol type

REST

Request type

POST

Sync/Async

Sync

Public/Private

Public

Purpose

This method is used to create Declaration Request online (as part of Declaration creation process)

Logic

13526967-f4a7-469e-bb92-b11515c054c0.pngImage Added

Global and configurable parameters

Get global parameters

Invoke Global parameters to get following parameters:

  • ADULT_AGE

  • DECLARATION_TERM

cURL example
Code Block
curl -X GET \
  {:host}/prm/api/global_parameters

Configuration parameters

Description of the configuration parameters that are used when processing a request in the system

Dictionaries

  • EMPLOYEE_TYPE

  • DOCUMENT_TYPE

  • ADDRESS_TYPE

  • SETTLEMENT_TYPE

  • STREET_TYPE

  • PHONE_TYPE

  • DOCUMENT_RELATIONSHIP_TYPE

  • POSITION

  • LEGAL_FORM

  • ACCREDITATION_CATEGORY

  • DIVISION_TYPE

  • GENDER

  • AUTHENTICATION_METHOD

  • PREFERRED_WAY_COMMUNICATION

Input parameters

Description of input parameters

Input parameter

Mandatory

Type

Description

Example

1

composition_id

 M

String ($uuid) (path)

Composition object ID

 89678f60-4cdc-4fe3-ae83-e8b3ebd35c59

2

 

 

 

 

 

Request structure

See on API-specification (посилання на сторінку з API-специфікацією)

Description of the REST API request structure, example

Expand
titleExample
Code Block
{
  "person_id": "4d0d790c-cbf1-44f5-ab21-ba8db67da161",
  "employee_id": "1a8b10ea-ba09-40f2-8f9e-55608e9208c6",
  "division_id": "d290f1ee-6c54-4b01-90e6-d701748f0851"
}

Headers

Key

Value

Mandatory

Description

Example

1

Content-Type

application/json

M

Тип контенту

Content-Type:application/json

2

 Authorization

 Bearer {{access_token}}

 

 

 Authorization:Bearer {{access_token}}

Request data validation

Validate request

Validate request according to JSON Schema

  1. Return 422 with list of validation errors in case of validation fails (422 EView)

Get Person from token

  1. Extract person_id from token.

Validate Person

User can create declaration request via cabinet only for himself

  1. Check that person_id from request ($.person_id) matches with person_id from token

  2. Check tax_id from users.tax_id=persons.tax_id

  3. Check that person_id exists

In case error - return 422 error:

 

Code Block
{:error, [{%{
        description: "Invalid person",
        params: [],
        rule: :invalid
      }, "$.person_id"}]}

 

Validate Employee

  1. Validate that employee_id exists

In case error - return 422 error:

 

Code Block
{:error, [{%{
        description: "Employee not found",
        params: [],
        rule: :invalid
      }, "$.employee_id"}]}

Validate Division

  1. Validate that division_id exists

In case error - return 422 error:

 

Code Block
{:error, [{%{
        description: "Division not found",
        params: [],
        rule: :invalid
      }, "$.division_id"}]}

Calculate patient age

Calculate patient age

Code Block
age = MONTHS_BETWEEN (now(), Person.birth_date) / 12

Check that doctor speciality meets the patient age requirements

Check age requirements according to values in response from previous step.

Doctor speciality

Age

FAMILY DOCTOR

All ages

THERAPIST

Greater or equal to $.data.adult_age

PEDIATRICIAN

Less than $.data.adult_age

Processing

Calculate declaration end/start date

Start date:

Code Block
start_date = Current_date()

End date:

Code Block
if (person.age < 18) {
  end_date = min(birth_date + 18y - 1d, start_date + declaration_term);
} else {
  end_date = start_date + declaration_term;
}

Set default authorization method

Do not check current authorization method in MPI

Set default value to "NA" for all declaration requests online (cabinet)

Generate printout form

Invoke MAN to render print form.

Declaration request printout template:

DECLARATION_REQUEST_PRINTOUT_FORM_TEMPLATE_ID: "4"

Set IL.declaration_request.printout_content as MANResponse.$.data

Save request to DB

Response structure examples

See on API-specification (посилання на сторінку з API-специфікацією)

Description of the REST API response structure, example

Expand
titleExample
Code Block
{
  "meta": {
    "code": 201,
    "url": "https://example.com/resource",
    "type": "object",
    "request_id": "6617aeec-15e2-4d6f-b9bd-53559c358f97#17810"
  },
  "data": {
    "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
    "seed": "hash",
    "start_date": "2017-03-02",
    "end_date": "2017-03-02",
    "person": {
      "first_name": "Петро",
      "last_name": "Іванов",
      "second_name": "Миколайович",
      "birth_date": "1991-08-19",
      "birth_country": "Україна",
      "birth_settlement": "Вінниця",
      "gender": "MALE",
      "email": "email@example.com",
      "tax_id": "3126509816",
      "secret": "secret",
      "documents": [
        {
          "type": "PASSPORT",
          "number": "АА120518",
          "expiration_date": "2021-02-28",
          "issued_by": "Рокитнянським РВ ГУ МВС Київської області",
          "issued_at": "2017-02-28"
        }
      ],
      "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"
        }
      ],
      "authentication_methods": [
        {
          "type": "OTP",
          "phone_number": "+38093*****85"
        }
      ],
      "preferred_way_communication": "email",
      "emergency_contact": {
        "first_name": "Петро",
        "last_name": "Іванов",
        "second_name": "Миколайович",
        "phones": [
          {
            "type": "MOBILE",
            "number": "+380503410870"
          }
        ]
      },
      "confidant_person": [
        {
          "relation_type": "PRIMARY",
          "first_name": "Петро",
          "last_name": "Іванов",
          "second_name": "Миколайович",
          "birth_date": "1991-08-19",
          "birth_country": "Україна",
          "birth_settlement": "Вінниця",
          "gender": "MALE",
          "email": "confidant_person@example.com",
          "tax_id": "3126509816",
          "secret": "secret",
          "unzr": "19900101-00099",
          "preferred_way_communication": "email",
          "documents_person": [
            {
              "type": "PASSPORT",
              "number": "АА120518",
              "expiration_date": "2021-02-28",
              "issued_by": "Рокитнянським РВ ГУ МВС Київської області",
              "issued_at": "2017-02-28"
            }
          ],
          "documents_relationship": [
            {
              "type": "BIRTH_CERTIFICATE",
              "number": "АА120518",
              "issued_by": "Рокитнянським РВ ГУ МВС Київської області",
              "issued_at": "2017-02-28"
            }
          ],
          "phones": [
            {
              "type": "MOBILE",
              "number": "+380503410870"
            }
          ]
        }
      ],
      "patient_signed": false,
      "process_disclosure_data_consent": true
    },
    "scope": "family doctor",
    "declaration_number": "0000-12H4-245D",
    "declaration_id": "8311ab82-e341-4da0-8a95-235ec9885e23",
    "status": "NEW",
    "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"
          }
        ]
      },
      "speciality": "FAMILY_DOCTOR"
    },
    "legal_entity": {
      "name": "Клініка Ноунейм",
      "short_name": "Ноунейм",
      "legal_form": "140",
      "public_name": "ЦПМСД №1",
      "edrpou": "5432345432",
      "licenses": [
        {
          "license_number": "fd123443",
          "issued_by": "Кваліфікацйна комісія",
          "issued_date": "2017-02-28",
          "expiry_date": "2017-02-28",
          "active_from_date": "2017-02-28",
          "what_licensed": "реалізація наркотичних засобів",
          "order_no": "ВА43234"
        }
      ],
      "accreditation": {
        "category": "SECOND",
        "issued_date": "2017-02-28",
        "expiry_date": "2017-02-28",
        "order_no": "fd123443",
        "order_date": "2017-02-28"
      },
      "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",
      "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b"
    },
    "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",
      "type": "clinic",
      "external_id": "3213213",
      "dls_id": "2872985",
      "dls_verified": true
    },
    "content": "Declaration content",
    "channel": "CABINET"
  },
  "urgent": {
    "authentication_method_current": {
      "type": "NA",
      "number": "+38093*****85"
    },
    "documents": [
      {
        "type": "PASSPORT",
        "url": "https://storage.ehealth.world"
      }
    ]
  }
}

HTTP status codes

Response code

HTTP Status code

Message

Internal name

Description

Response code

HTTP Status code

Message

Internal name

Description

1

Базові

2

201

 Response

 

3

401

Unauthorized

 

Помилка підтвердження

4

401

 Validation fails

5

403

 Invalid scope(s)

6

1000

404

Composition not found

COMPOSITION_NOT_FOUND_404

Не знайдено медичний висновок

7

422

Division not found

8

422

Employee not found

9

 

422

Invalid person

10

422

Validation failed

11

Специфічні

12

 

422

Only for active MPI record can be created 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