ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

ID метода

API-005-011-002-0191

Автор

Viacheslav Tybin (SoE eHealth)

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

1.0

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

DRAFT

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

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

Назва метода (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.png

Global and configurable parameters

Get global parameters

Invoke Global parameters to get following parameters:

  • ADULT_AGE

  • DECLARATION_TERM

cURL example
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

Input parameter

Mandatory

Type

Description

Example

1

2

 

 

 

 

 

Request structure

See on API-specification

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

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

  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:

 

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

 

Validate Employee

  1. Validate that employee_id exists

In case error - return 422 error:

 

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

Validate Division

  1. Validate that division_id exists

In case error - return 422 error:

 

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

Calculate patient age

Calculate patient age

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:

start_date = Current_date()

End date:

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

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

1

Базові

2

201

 Response

 

3

401

 Validation fails

4

403

 Invalid scope(s)

5

422

Division not found

6

422

Employee not found

7

 

422

Invalid person

8

422

Validation failed

9

Специфічні

10

 

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

  • No labels