Table of Contents | ||||
---|---|---|---|---|
|
...
Use this method to approve previously created Declaration Request.
Specification
Link |
Resource | /api/v3/declaration_requests/{{id}}/actions/approve |
Scope | declaration_request:approve |
Components | Declarations |
Using |
API paragraph not found
Using Microservices
Microservices | il/api ops/api |
Protocol type | REST |
Request type | PATCH |
Sync/Async | Sync |
Public/Private/Internal | Public |
...
Key points
In case if persons current authentication
...
method is OTP, request
...
body must contain
verification_code
...
field with OTP.
For any other authentication method, request body
...
must be empty
...
Before approve patient's scanned documents should be uploaded to the (Signed URL's). All links are generated for one one-page document in jpeg format. Document should be no more than 10 MB. If make declaration request via cabinet then nothing must be uploaded to URL. Clients can use signed URL's to directly access s3 storage and upload files via API.
Input parameters
...
Filter
...
Values
...
Type
...
Description
...
Example
...
id
...
String
...
Required
...
b075f148-7f93-4fc2-b2ec-2d81b19a9b7b
Request structure
Code Block |
---|
{
"verification_code": 3748
}
|
Authorize
Verify the validity of access token
Check user scopes declaration_request:write in order to perform this action
In case error - generate 401 response
Request to process the request using a token in the headers
Headers
Content-Type:application/json
Authorization:Bearer c2778f3064753ea70de870a53795f5c9
, but additional documents upload is needed for OFFLINE authentication method.
Validate request
Validate request using JSON schema
In case validation failed - generate 422 error
JSON Schema
Expand | ||
---|---|---|
|
Validation data request
Authorize user
Verify the validity of access token
Check user scopes declaration_request:write in order to perform this action
In case error - generate 401 response
Validate person verification status
validate patient's verification_status is not equal to NOT_VERIFIED.
in case of error return 409, "Patient is not verified"
Processing
Get declaration request details
Get declaration request from IL_DB.declaration_request
Determine authorization method
Get authorization_method from IL_DB.declaration_request
|
If authentication_method_current is NULL - return Error
...
If authentication_method_current = OTP - verify SMS code
If authentication_method_current = NA - verify Parent declaration
Verify code
Invoke verification module to verify OTP
Check uploaded documents
Invoke Media Content Storage to check documents exist
Generate hash ‘seed’
Generate hash seed
- Hash of previous block in declarations chain or other random component that should be signed with declaration
Change patient request
Change entity status in IL_DB.declaration_request to APPROVED
Set updated_at - now() (Get current date-time)
Set updated_by - user_id (Extract user from token)
Generate printout form
Invoke MAN to render print form.
Request mapping:
...
Parameter
...
Source
...
id
...
DECLARATION REQUEST
cURL example
...
Verify Parent declaration
Get parent_declaration_id from IL_DB.declaration_requests.parent_declaration_id:
If parent_declaration_id is null, validate declaration request with current authentication_method_current = NA logic
If parent_declaration_id is not null, check that parent declaration exists and in status 'active'
In case of error - return 404 (‘Active parent declaration was not found’)
Processing
Generate printout form
Prepare data for declaration request printout form
Call MAN service to render printout form
Get template id from config (
DECLARATION_REQUEST_PRINTOUT_FORM_TEMPLATE_ID
)Prepare printout content based on declaration request data
Render printout form and save to declaration request
Set IL.declaration_request.printout_content:
Expand |
---|
|
Response structure
...
title | Request example (code 201) |
---|
...
Change patient_signed and process_disclosure_data_consent values
If parent_declaration_id is not null and authentication_method_current = NA, update following fields values at data_to_be_signed ": { "id": "b099f148-7f93-4fc2-b2ec-2d81b19a9b7b", "declaration_number": "0000-12H4-245D", "declaration_id": "8311ab82-e341-4da0-8a95-235ec9885e23", "start_date": "2017-03-02", "end_date": "2017-03-02", "content": "Declaration content", "channel": "MIS", "person": { "id": "5fb57a5d-1457-430e-9678-c81cec72779f", "first_name": "Петро", "last_name": "Іванов", "second_name": "Миколайович", "birth_date": "2009-07-05", "birth_country": "Україна", "birth_settlement": "Вінниця", "gender": "MALE", "email": "email@example.com", "no_tax_id": false, "tax_id": "3999869394", "secret": "secret", "documents": [ { "type": "BIRTH_CERTIFICATE", "number": "АА120518", "issued_by": "Рокитнянським РВ ГУ МВС Київської області", "issued_at": "2017-02-28", "expiration_date": "2027-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" } ], "unzr": "20090705-00011", "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": "1972-10-26", "birth_country": "Україна", "birth_settlement": "Вінниця", "gender": "MALE", "tax_id": "2659719350", "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" } ], "email": "emaill@example.com" } ], "preferred_way_communication": "email", "patient_signed": false, "process_disclosure_data_consent": true }, "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" } ] } }, "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 }, "seed": "hash", "authorize_with": "cc949559-5dfe-420f-ac05-065e443b2cc6" } } }
Expand | ||
---|---|---|
| ||
|
Post-processing processes
API paragraph not foundfield:
patient_signed = null
process_disclosure_data_consent = null
Generate hash ‘seed’
Generate hash seed
- Hash of previous block in declarations chain or other random component that should be signed with declaration
Change declaration request
Change entity
status
in IL_DB.declaration_request to APPROVEDSet
status_reason
to doctor_confirmedSet
is_shareable
to trueSet
updated_at
- now() (Get current date-time)Set
updated_by
- user_id (Extract user from token)
HTTP status codes
HTTP status code | Message | What caused the error |
---|---|---|
201 | Response |
|
401 | Invalid scopes | |
409 | Patient is not verified | |
422 | This doctor has X declarations and could not sign more |
Backward compatibility
...