Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

REST API method / Метод REST API (настанова) /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

...

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"
}

...

In case error - return 422 error: 

code
Code Block
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"}]}

...

In case error - return 422 error:

 

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

...

Calculate patient age

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

...

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;
}

...

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"
      }
    ]
  }
}

...