Versions Compared

Key

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

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

Info

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

Table of Contents

Properties of a REST API method document

Page Properties
idpage_properties_method_REST API

Document type

Метод REST API

Document title

[Document status] REST API [Назва методу] [ID методу]

Guideline ID

GUI-0011

Author

@

Document version

1

Document status

DRAFT

Date of creation

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

Date of update

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

Method API ID

API-005-002-001-0024

Microservices (namespace)

IL

Component

Contracts

Component ID

COM-005-002

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

https://ehealthmisapi1.docs.apiary.io/#reference/public.-contracts/contract-request/public.-create-contract-request

Resource

{{host}}/api/admin/contracts

Scope

private_contracts:write

Protocol type

REST

Request type

POST

Sync/Async

Sync

Public/Private

Private

Purpose

This method allows to create new contract record in DB through the NHS IT system

Logic

WS sets all data for creating contract

Configuration parameters

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

Dictionaries

Provides a list of links to dictionaries that are available in Confluence

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
{
  "start_date": "2017-04-20",
  "end_date": "2017-04-20",
  "status": "VERIFIED",
  "contractor_legal_entity_id": "56440c03-e218-432a-b417-9574b2b287bd",
  "contractor_owner_id": "54fea667-62cf-4688-ae9e-31acc19d986d",
  "contractor_base": "на підставі закону про Медичне обслуговування населення",
  "contractor_payment_details": {
    "bank_name": "Банк номер 1",
    "MFO": "351005",
    "payer_account": "32009102701026"
  },
  "contractor_rmsp_amount": 50000,
  "external_contractor_flag": true,
  "external_contractors": [
    {
      "legal_entity": {
        "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
        "name": "Клініка Ноунейм"
      },
      "contract": {
        "number": "1234567",
        "issued_at": "2018-01-01",
        "expires_at": "2019-01-01"
      },
      "divisions": [
        {
          "id": "2922a240-63db-404e-b730-09222bfeb2dd",
          "name": "Бориспільське відділення Клініки Ноунейм",
          "medical_service": "Послуга ПМД"
        }
      ]
    }
  ],
  "nhs_signer_id": "da8cc932-7bca-4048-a3ff-9b07f901a860",
  "nhs_signer_base": "на підставі наказу",
  "nhs_legal_entity_id": "e5f76afb-4d96-4279-bcf1-0308457e6b64",
  "nhs_payment_method": "prepayment",
  "is_suspended": false,
  "issue_city": "Київ",
  "nhs_contract_price": 50000,
  "contract_number": "0000-9EAX-XT7X-3115",
  "status_reason": "default",
  "parent_contract_id": "09106b70-18b0-4726-b0ed-6bda1369fd52",
  "id_form": "PMD",
  "nhs_signed_date": "2017-04-20",
  "type": "CAPITATION",
  "reason": "не було виконано умов контракту",
  "signed_content_location": "bucket_name/folder_identifier/file_name",
  "medical_programs": [
    "d313342c-0b3c-443b-a92e-afb78d1e8086"
  ]
}

Headers

Key

Value

Mandatory

Description

Example

1

Content-Type

application/json

M

Тип контенту

Content-Type:application/json

2

Authorization

Bearer c2778f3064753ea70de870a53795f5c9

M

Перевірка користувача

Authorization:Bearer c2778f3064753ea70de870a53795f5c9

3

Request data validation

Validations

The following attributes must be validated

  1. Validate status

    1. Check that status is one of ('VERIFIED', 'TERMINATED')

      1. in case of error return 422 error $.status ('Invalid contract status')

  2. Validate contractor_legal_entity_id

    1. Check that legal entity exist and is_active = true

      1. in case of error return 409 error $.contractor_legal_entity_id ('Invalid contractor legal entity id')

  3. Validate contractor_owner_id

    1. Check that employee exist

      1. in case of error return 404 error $.contractor_owner_id ('Employee is not found')

    2. Check that contractor_owner_id correspond to contractor_legal_entity_id and employee_type = OWNER and status = APPROVED and is_active = true

      1. in case of error return 422 error $.contractor_owner_id ('Contractor owner must be an active and within current legal entity')

  4. Validate contractor_base

    1. Check that the contractor_base string and maximum length is 255 characters

      1. in case of error return 422 error $.contractor_base ('expected value to have a maximum length of 255 but was %{actual}')

  5. Validate nhs_signer_id

    1. Check that employee exist

      1. in case of error return 404 error $.contractor_owner_id ('Employee is not found')

    2. Check that nhs_signer_id correspond to nhs_legal_entity_id and nhs_legal_entity_id = legal_entities.type = NHS and status = APPROVED and is_active = true

      1. in case of error return 422 error $.contractor_owner_id ('Contractor signer must be an active and within NHS legal entity')

  6. Validate nhs_signer_base

    1. Check that the nhs_signer_base string and maximum length is 255 characters

      1. in case of error return 422 error $.nhs_signer_base ('expected value to have a maximum length of 255 but was %{actual}')

  7. Validate nhs_legal_entity_id

    1. check that legal entity exist and is_active = true and nhs_legal_entity_id=legal_entities.type = NHS

      1. in case of error return 409 error $.contractor_legal_entity_id ('Invalid nhs signer id')

  8. Validate nhs_payment_method

    1. check that nhs_payment_method one of ('BACKWARD', 'FORWARD')

      1. in case of error return 422 error $.nhs_payment_method ('Invalid nhs payment method')

  9. Validate is_suspended

    1. Check that the is_suspended boolean

      1. in case of error return 422 error $.is_suspended ('type mismatch. Expected boolean but got %{actual}')

  10. Validate issue_city

    1. Check that the issue_city string and maximum length is 255 characters

      1. in case of error return 422 error $.issue_city ('expected value to have a maximum length of 255 but was %{actual}')

  11. Validate contract_number

    1. Сheck format contract_number: contract number structure XXXX-1234-5678-C , where:
      XXXX - series: numbers + only some letters (A, E, H, K, M, P, T, X)
      1234-5678 - randomly generated numbers and letters A, E, H, K, M, P, T, X

      1. in case of error return 422 error $.contract_number ('string does not match pattern \"^\\d{4}-[\\dAEHKMPTX]{4}-[\\dAEHKMPTX]{4}$\"')

    2. check there is a contract with such contract_number already exist

      1. in case of error return 422 error $.contract_number ('Verified contract with such number already exists')

  12. Validate nhs_signer_base

    1. Check that nhs_signer_base string and maximum length is 255 characters

      1. in case of error return 422 error $.nhs_signer_base ('expected value to have a maximum length of 255 but was %{actual}')

  13. Validate type

    1. Check that type is 'GB_CBP'

      1. in case of return 409 error $.type ('Invalid contract type')

  14. Validate contractor_payment_details

    1. Check that MFO in the ^[0-9]{6}$ format

      1. in case of error return error 422 $.contractor_payment_details.MFO ('string does not match pattern \"^[0-9]{6}$\')

    2. Check that payer_account in the ^(UA[0-9]{22}|UA[0-9]{27}|[0-9]+)$ format

      1. in case of error return error 422 $.contractor_payment_details.payer_account ('string does not match pattern \"^(UA[0-9]{22}|UA[0-9]{27}|[0-9]+)$')

  15. Validate id_form

    1. Сheck that value exists in the CONTRACT_TYPE dictionary

      1. in case of error return error 422 $.id_form ('value is not allowed in enum')

  16. Validate parent_contract_id

    1. Check that parent_contract_id exist in contracts.id and correspond to contractor_legal_entity_id

      1. in case of error return error 422 $.parent_contract_id ('Parent contract id should be correspond to contractor legal entity')

    2. Check that id from parent_contract_id is Terminated

      1. in case of error return 409 $.parent_contract_id ("Parent contract should be in Terminated status")

  17. Validate medical_programs

    1. Check that medical_programs exist and medical_programs.type = 'SERVICE'

      1. in case of error return 404 $.medical_programs ('Medical program is not found')

    2. Validate that list of medical programs in array doesn't contain duplicates ids:

      1. in case of error return 409 error view $medical_programs ('The list of medical programs contains duplicates')

Processing

  1. Set system attributes

id

Generate uuid

is_active

Const: true

inserted_at

now() timastamp

inserted_by

User from token

updated_at

now() timastamp

updated_by

User from token

...

  1. Audit log (trigger logic)

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": "req-adasdoijasdojsda"
  },
  "data": {
    "id": "8be63914-a278-470b-b868-1af5b9087332",
    "start_date": "2017-04-20",
    "end_date": "2017-04-20",
    "status": "VERIFIED",
    "contractor_legal_entity_id": "56440c03-e218-432a-b417-9574b2b287bd",
    "contractor_owner_id": "54fea667-62cf-4688-ae9e-31acc19d986d",
    "contractor_base": "на підставі закону про Медичне обслуговування населення",
    "contractor_payment_details": {
      "bank_name": "Банк номер 1",
      "MFO": "351005",
      "payer_account": "32009102701026"
    },
    "contractor_rmsp_amount": 50000,
    "external_contractor_flag": true,
    "external_contractors": [
      {
        "legal_entity": {
          "id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
          "name": "Клініка Ноунейм"
        },
        "contract": {
          "number": "1234567",
          "issued_at": "2018-01-01",
          "expires_at": "2019-01-01"
        },
        "divisions": [
          {
            "id": "2922a240-63db-404e-b730-09222bfeb2dd",
            "name": "Бориспільське відділення Клініки Ноунейм",
            "medical_service": "Послуга ПМД"
          }
        ]
      }
    ],
    "nhs_signer_id": "da8cc932-7bca-4048-a3ff-9b07f901a860",
    "nhs_signer_base": "на підставі наказу",
    "nhs_legal_entity_id": "e5f76afb-4d96-4279-bcf1-0308457e6b64",
    "nhs_payment_method": "prepayment",
    "is_suspended": false,
    "issue_city": "Київ",
    "nhs_contract_price": 50000,
    "contract_number": "0000-9EAX-XT7X-3115",
    "status_reason": "default",
    "parent_contract_id": "09106b70-18b0-4726-b0ed-6bda1369fd52",
    "id_form": "PMD",
    "nhs_signed_date": "2017-04-20",
    "type": "CAPITATION",
    "reason": "не було виконано умов контракту",
    "signed_content_location": "bucket_name/folder_identifier/file_name",
    "medical_programs": [
      "d313342c-0b3c-443b-a92e-afb78d1e8086"
    ],
    "is_active": true,
    "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"
  }
}

HTTP status codes

Response code

HTTP Status code

Message

Internal name

Description

1

Базові

2

201

3

401

Unauthorized

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

4

404

Employee is not found

5

404

Employee is not found

6

1000

404

Composition not found

COMPOSITION_NOT_FOUND_404

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

7

404

Medical program is not found

8

409

Invalid contractor legal entity id

9

409

Invalid nhs signer id

10

409

Invalid contract type

11

409

Parent contract should be in Terminated status

12

409

The list of medical programs contains duplicates

13

422

Invalid contract status

14

422

Contractor owner must be an active and within current legal entity

15

422

Contractor signer must be an active and within NHS legal entity

16

17

422

expected value to have a maximum length of 255 but was %{actual}

18

422

Invalid nhs payment method

19

422

Parent contract id should be correspond to contractor legal entity

20

422

string does not match pattern \"^\\d{4}-[\\dAEHKMPTX]{4}-[\\dAEHKMPTX]{4}$\

21

422

string does not match pattern \"^[0-9]{6}$\

22

422

string does not match pattern \"^(UA[0-9]{22}|UA[0-9]{27}|[0-9]+)$

23

422

type mismatch. Expected boolean but got %{actual

24

422

Verified contract with such number already exists

25

422

value is not allowed in enum

26

Специфічні

27

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

Page Properties Report
headingsID ТМ, Статус
cqllabel = "tr-mis"

...