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-0025

Microservices (namespace)

IL

Component

Contracts

Component ID

COM-005-002

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

Resource

{{host}}/api/admin/contracts/{{id}}

Scope

private_contracts:write

Protocol type

REST

Request type

PUT

Sync/Async

Sync

Public/Private

Private

Purpose

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

Logic

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

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

id

 

String

 

801f37f5-52c8-477e-aba5-a1d01876d210

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

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

The following attributes must be validated

  1. Validate id

    1. Check that contract with id from URL exist and is_active = true

      1. in case of error return 404 error ('Contract with such id is not found')

    2. Check that contract with such id have type = 'GB_CBP'

      1. in case of error return 409 error ('Only contracts with type GB_CBP can be updated')

  2. Validate status

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

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

  3. 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')

  4. 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')

  5. 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}')

  6. 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')

  7. 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}')

  8. 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')

  9. 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')

  10. 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}')

  11. 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}')

  12. 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')

  13. 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}')

  14. Validate type

    1. Check that type is 'GB_CBP'

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

  15. 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]+)$')

  16. 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')

  17. 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")

  18. Validate medical_programs

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

      1. in case of error return 404 $.medical_program_id ('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')

Validate request

  1. Only authenticated and authorized user can use this service

  2. Contract must be valid and consistent, i.e. all "foreign keys" must be valid

  3. Deleted contract (is_active = false) couldn't be updated

Processing

  1. Update system attributes

Attribute

Value

updated_at

now() timastamp

updated_by

User from token

  1. Update record in DB

  1. Audit log (trigger logic)

  1. Event manager (trigger logic)

Response structure examples

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

Description of the REST API response structure, example

Expand
titleExample
Code Block
{
  "meta": {
    "code": 200,
    "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

1000

401

Unauthorized

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

3

1000

404

Composition not found

COMPOSITION_NOT_FOUND_404

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

4

404

Contract with such id is not found

5

404

Employee is not found

6

404

Medical program is not found

7

409

Invalid contractor legal entity id

8

409

Invalid nhs signer id

9

409

Invalid contract type

10

409

Only contracts with type GB_CBP can be updated

11

409

Parent contract should be in Terminated status

12

409

The list of medical programs contains duplicates

13

422

Contractor owner must be an active and within current legal entity

14

422

Contractor signer must be an active and within NHS legal entity

15

422

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

16

422

Invalid nhs payment method

17

422

Invalid contract status

18

422

Parent contract id should be correspond to contractor legal entity

19

422

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

20

422

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

21

422

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

22

422

type mismatch. Expected boolean but got %{actual}

23

422

Verified contract with such number already exists

24

422

value is not allowed in enum

25

Специфічні

26

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"