ЕСОЗ - публічна документація
[DRAFT] Private. Update contract [API-005-002-001-0025]
Сторінка знаходиться в процесі розробки. Інформація на ній може бути застарілою.
https://e-health-ua.atlassian.net/wiki/spaces/EN/pages/17591304241 (remove the link block before publishing the document)
- 1 Properties of a REST API method document
- 2 Purpose
- 3 Logic
- 4 Configuration parameters
- 5 Dictionaries
- 6 Input parameters
- 7 Request structure
- 8 Headers
- 9 Request data validation
- 9.1 Validate request
- 10 Processing
- 11 Response structure examples
- 12 HTTP status codes
- 13 Post-processing processes
- 14 Technical modules where the method is used
Properties of a REST API method document
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 |
|
|
2 |
|
|
|
|
|
Request structure
See on API-specification (посилання на сторінку з API-специфікацією)
Description of the REST API request structure, example
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
Validate id
Check that contract with id from URL exist and is_active = true
in case of error return 404 error ('Contract with such id is not found')
Check that contract with such id have type = 'GB_CBP'
in case of error return 409 error ('Only contracts with type GB_CBP can be updated')
Validate status
Check that status is one of ('VERIFIED', 'TERMINATED')
in case of error return 422 error $.status ('Invalid contract status')
Validate contractor_legal_entity_id
Check that legal entity exist and is_active = true
in case of error return 409 error $.contractor_legal_entity_id ('Invalid contractor legal entity id')
Validate contractor_owner_id
Check that employee exist
in case of error return 404 error $.contractor_owner_id ('Employee is not found')
Check that contractor_owner_id correspond to contractor_legal_entity_id and employee_type = OWNER and status = APPROVED and is_active = true
in case of error return 422 error $.contractor_owner_id ('Contractor owner must be an active and within current legal entity')
Validate contractor_base
Check that the contractor_base string and maximum length is 255 characters
in case of error return 422 error $.contractor_base ('expected value to have a maximum length of 255 but was %{actual}')
Validate nhs_signer_id
Check that employee exist
in case of error return 404 error $.contractor_owner_id ('Employee is not found')
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
in case of error return 422 error $.contractor_owner_id ('Contractor signer must be an active and within NHS legal entity')
Validate nhs_signer_base
Check that the nhs_signer_base string and maximum length is 255 characters
in case of error return 422 error $.nhs_signer_base ('expected value to have a maximum length of 255 but was %{actual}')
Validate nhs_legal_entity_id
check that legal entity exist and is_active = true and nhs_legal_entity_id=legal_entities.type = NHS
in case of error return 409 error $.contractor_legal_entity_id ('Invalid nhs signer id')
Validate nhs_payment_method
check that nhs_payment_method one of ('BACKWARD', 'FORWARD')
in case of error return 422 error $.nhs_payment_method ('Invalid nhs payment method')
Validate is_suspended
Check that the is_suspended boolean
in case of error return 422 error $.is_suspended ('type mismatch. Expected boolean but got %{actual}')
Validate issue_city
Check that the issue_city string and maximum length is 255 characters
in case of error return 422 error $.issue_city ('expected value to have a maximum length of 255 but was %{actual}')
Validate contract_number
С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, Xin case of error return 422 error $.contract_number ('string does not match pattern \"^\\d{4}-[\\dAEHKMPTX]{4}-[\\dAEHKMPTX]{4}$\"')
check there is a contract with such contract_number already exist
in case of error return 422 error $.contract_number ('Verified contract with such number already exists')
Validate nhs_signer_base
Check that nhs_signer_base string and maximum length is 255 characters
in case of error return 422 error $.nhs_signer_base ('expected value to have a maximum length of 255 but was %{actual}')
Validate type
Check that type is 'GB_CBP'
in case of return 409 error $.type ('Invalid contract type')
Validate contractor_payment_details
Check that MFO in the ^[0-9]{6}$ format
in case of error return error 422 $.contractor_payment_details.MFO ('string does not match pattern \"^[0-9]{6}$\')
Check that payer_account in the ^(UA[0-9]{22}|UA[0-9]{27}|[0-9]+)$ format
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]+)$')
Validate id_form
Сheck that value exists in the CONTRACT_TYPE dictionary
in case of error return error 422 $.id_form ('value is not allowed in enum')
Validate parent_contract_id
Check that parent_contract_id exist in contracts.id and correspond to contractor_legal_entity_id
in case of error return error 422 $.parent_contract_id ('Parent contract id should be correspond to contractor legal entity')
Check that id from parent_contract_id is Terminated
in case of error return 409 $.parent_contract_id ("Parent contract should be in Terminated status")
Validate medical_programs
Check that medical_programs exist and medical_programs.type = 'SERVICE'
in case of error return 404 $.medical_program_id ('Medical program is not found')
Validate that list of medical programs in array doesn't contain duplicates ids:
in case of error return 409 error view $medical_programs ('The list of medical programs contains duplicates')
Validate request
Only authenticated and authorized user can use this service
Contract must be valid and consistent, i.e. all "foreign keys" must be valid
Deleted contract (is_active = false) couldn't be updated
Processing
Update system attributes
Attribute | Value |
---|---|
updated_at | now() timastamp |
updated_by | User from token |
Update record in DB
Audit log (trigger logic)
Event manager (trigger logic)
Response structure examples
See on API-specification (посилання на сторінку з API-специфікацією)
Description of the REST API response structure, example
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
ЕСОЗ - публічна документація