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

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

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

...

Note

Сторінка знаходиться в процесі розробки. Інформація на ній може бути застарілою.

/wiki/spaces/EN/pages/17591304241 (remove the link block before publishing the document)

Properties of a REST API method document

Document type

Метод REST API

Document title

[DRAFT] Create Declaration Request online [API-005-010-002-0194]

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

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 systemN/A

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

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

Input parameter

Mandatory

Type

Description

Example

1

composition_id

 M

String ($uuid) (path)

Composition object ID

Example

1

2

 

 

 

 

 

Request structure

See on API-specification (посилання на сторінку з API-специфікацією)Description of the REST API request structure, example

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

Headers

...

Headers

...

Request data validation

...

Mandatory

...

Description

...

Example

...

Content-Type

...

application/json

...

M

...

Тип контенту

...

Content-Type:application/json

...

 Authorization

...

 Bearer {{access_token}}

...

 

...

 

...

 Authorization:Bearer {{access_token}}

...

Authorize

  1. Verify the validity of access token

    1. Return 401 in case validation fails

  2. Check user scopes in order to perform this action (scope = 'declaration_request:write')

    1. Return 403 in case invalid scope(s)

Authorize

  1. Verify the validity of access token

    1. Return 401 in case validation fails

  2. Check user scopes in order to perform this action (scope = 'declaration_request:write')

    1. Return 403 in case invalid scope(s)

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

...

In case error - return 422 error:

Code Block

...

code
language
json
{:error, [{%{
        description: "Invalid person",
        params: [],
        rule: :invalid
      }, "$.person_id"}]}

...

Validate Employee

  1. Validate that employee_id exists

In case error - return 422 error: 

code
Code Block
language
json
{: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
languagejson
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
languagejson
start_date = Current_date()

End date:

Code Block
languagejson
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.

...

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
languagejson
{
  "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

54

403

 Invalid scope(s)

6

1000

404

Composition not found

COMPOSITION_NOT_FOUND_404

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

75

422

Division not found

86

422

Employee not found

97

 

422

Invalid person

108

422

Validation failed

119

Специфічні

1210

 

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 N/A

Technical modules where the method is used