Сторінка знаходиться в процесі розробки. Інформація на ній може бути застарілою.
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-002-0053
Microservices (namespace)
IL
Component
Contracts
Component ID
COM-005-002
Link на API-специфікацію
Resource
{{host}}/api/contract_requests/{{id}}/actions/sign_nhs
Scope
contract_request:sign
Protocol type
REST
Request type
PATCH
Sync/Async
Sync
Public/Private
Private
Purpose The process is initiated by responsible person from NHS side which created and approved contract request previously and involves the transfer of a signed contract request with electronic digital signature.
Process is asynchronous. If all validations are successfully completed, the asynchronous process of creating a contract starts by processing the message.
Contract must be 2 time signed: from legal_entity and NHS sides. There is a particular order who must signed first - NHS side. After that legal entity owner can either sign contract request (will be created contract) or terminate contract request.
Logic This WS is designed to sign contract request from NHS side. Contract request's status must be ='PENDING_NHS_SIGN'. Method receives signed message (pkcs7) including signed content, digital signature, digital stamp and signer public key in signed_content property. All signature fields will be validated (including signer certificate authority).This service will store signed copy of Contract Request in Media Content Storage. Signed content MUST consists of JSON object with Contract Request data and printout template. Object that need to be signed is returned by Get Contract request details response, JSON.Path: $.data. data.prinout content must be changed to Print out content taken from Get Contract Request Printout Content
In DS EDRPOU/DRFO must be equal to contractor_legal_entity.edrpou
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
1 id
String
b075f148-7f93-4fc2-b2ec-2d81b19a9b7b
2
Request structure See on API-specification (посилання на сторінку з API-специфікацією)
Description of the REST API request structure, example
Example
{
"signed_content": "ewogICJpZCI6ICIwOTEwNmI3MC0xOGIwLTQ3MjYtYjBlZC02YmRhMTM2OWZkNTIiLAogICJjb250cmFjdG9yX2xlZ2FsX2VudGl0eSI6IHsKICAgICJpZCI6ICJkZjlmNzBlZS00YjEyLTQ3NDAtYjBmNS1iYjVhZWExMTY4NjMiLAogICAgIm5hbWUiOiAi0JrQu9GW0L3RltC60LAg0J3QvtGD0L3QtdC50LwiLAogICAgImVkcnBvdSI6ICIzMjMyMzQ1NCIsCiAgICAiYWRkcmVzc2VzIjogWwogICAgICB7CiAgICAgICAgInR5cGUiOiAiUkVTSURFTkNFIiwKICAgICAgICAiY291bnRyeSI6ICJVQSIsCiAgICAgICAgImFyZWEiOiAi0JbQuNGC0L7QvNC40YDRgdGM0LrQsCIsCiAgICAgICAgInJlZ2lvbiI6ICLQkdC10YDQtNC40YfRltCy0YHRjNC60LjQuSIsCiAgICAgICAgInNldHRsZW1lbnQiOiAi0JrQuNGX0LIiLAogICAgICAgICJzZXR0bGVtZW50X3R5cGUiOiAiQ0lUWSIsCiAgICAgICAgInNldHRsZW1lbnRfaWQiOiAiNDM0MzI0MzIiLAogICAgICAgICJzdHJlZXRfdHlwZSI6ICJTVFJFRVQiLAogICAgICAgICJzdHJlZXQiOiAi0LLRg9C7LiDQndGW0LbQuNC90YHRjNC60LAiLAogICAgICAgICJidWlsZGluZyI6ICIxNSIsCiAgICAgICAgImFwYXJ0bWVudCI6ICIyMyIsCiAgICAgICAgInppcCI6ICIwMjA5MCIKICAgICAgfQogICAgXQogIH0sCiAgImNvbnRyYWN0b3Jfb3duZXIiOiB7CiAgICAiaWQiOiAiYjA3NWYxNDgtN2Y5My00ZmMyLWIyZWMtMmQ4MWIxOWE5YjdiIiwKICAgICJmaXJzdF9uYW1lIjogItCf0LXRgtGA0L4iLAogICAgImxhc3RfbmFtZSI6ICLQhtCy0LDQvdC+0LIiLAogICAgInNlY29uZF9uYW1lIjogItCc0LjQutC+0LvQsNC50L7QstC40YciCiAgfSwKICAiY29udHJhY3Rvcl9iYXNlIjogItC90LAg0L/RltC00YHRgtCw0LLRliDQt9Cw0LrQvtC90YMg0L/RgNC+INCc0LXQtNC40YfQvdC1INC+0LHRgdC70YPQs9C+0LLRg9Cy0LDQvdC90Y8g0L3QsNGB0LXQu9C10L3QvdGPIiwKICAiY29udHJhY3Rvcl9wYXltZW50X2RldGFpbHMiOiB7CiAgICAiYmFua19uYW1lIjogItCR0LDQvdC6INC90L7QvNC10YAgMSIsCiAgICAiTUZPIjogIjM1MTAwNSIsCiAgICAicGF5ZXJfYWNjb3VudCI6ICIzMjAwOTEwMjcwMTAyNiIKICB9LAogICJjb250cmFjdG9yX3Jtc3BfYW1vdW50IjogNTAwMDAsCiAgImV4dGVybmFsX2NvbnRyYWN0b3JfZmxhZyI6IHRydWUsCiAgImV4dGVybmFsX2NvbnRyYWN0b3JzIjogewogICAgImxlZ2FsX2VudGl0eSI6IHsKICAgICAgImlkIjogImIwNzVmMTQ4LTdmOTMtNGZjMi1iMmVjLTJkODFiMTlhOWI3YiIsCiAgICAgICJuYW1lIjogItCa0LvRltC90ZbQutCwINCd0L7Rg9C90LXQudC8IgogICAgfSwKICAgICJjb250cmFjdCI6IHsKICAgICAgIm51bWJlciI6ICIxMjM0NTY3IiwKICAgICAgImlzc3VlZF9hdCI6ICIyMDE4LTAxLTAxIiwKICAgICAgImV4cGlyZXNfYXQiOiAiMjAxOS0wMS0wMSIKICAgIH0sCiAgICAiZGl2aXNpb25zIjogWwogICAgICB7CiAgICAgICAgImlkIjogIjI5MjJhMjQwLTYzZGItNDA0ZS1iNzMwLTA5MjIyYmZlYjJkZCIsCiAgICAgICAgIm5hbWUiOiAi0JHQvtGA0LjRgdC/0ZbQu9GM0YHRjNC60LUg0LLRltC00LTRltC70LXQvdC90Y8g0JrQu9GW0L3RltC60Lgg0J3QvtGD0L3QtdC50LwiLAogICAgICAgICJtZWRpY2FsX3NlcnZpY2UiOiAi0J/QvtGB0LvRg9Cz0LAg0J/QnNCUIgogICAgICB9CiAgICBdCiAgfSwKICAiY29udHJhY3Rvcl9lbXBsb3llZV9kaXZpc2lvbnMiOiBbCiAgICB7CiAgICAgICJlbXBsb3llZV9pZCI6IHsKICAgICAgICAiaWQiOiAiYjA3NWYxNDgtN2Y5My00ZmMyLWIyZWMtMmQ4MWIxOWE5YjdiIiwKICAgICAgICAiZmlyc3RfbmFtZSI6ICLQn9C10YLRgNC+IiwKICAgICAgICAibGFzdF9uYW1lIjogItCG0LLQsNC90L7QsiIsCiAgICAgICAgInNlY29uZF9uYW1lIjogItCc0LjQutC+0LvQsNC50L7QstC40YciLAogICAgICAgICJzcGVjaWFsaXRpZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJzcGVjaWFsaXR5IjogIlRIRVJBUElTVCIsCiAgICAgICAgICAgICJzcGVjaWFsaXR5X29mZmljaW8iOiB0cnVlLAogICAgICAgICAgICAibGV2ZWwiOiAiRklSU1QiLAogICAgICAgICAgICAicXVhbGlmaWNhdGlvbl90eXBlIjogIkFXQVJESU5HIiwKICAgICAgICAgICAgImF0dGVzdGF0aW9uX25hbWUiOiAi0JDQutCw0LTQtdC80ZbRjyDQkdC+0LPQvtC80L7Qu9GM0YbRjyIsCiAgICAgICAgICAgICJhdHRlc3RhdGlvbl9kYXRlIjogIjIwMTciLAogICAgICAgICAgICAidmFsaWRfdG9fZGF0ZSI6ICIyMDIwIiwKICAgICAgICAgICAgImNlcnRpZmljYXRlX251bWJlciI6ICJBQi8yMTMzMSIKICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0sCiAgICAgICJzdGFmZl91bml0cyI6IDAuNSwKICAgICAgImRlY2xhcmF0aW9uX2xpbWl0IjogMjAwMCwKICAgICAgImRpdmlzaW9uIjogewogICAgICAgICJpZCI6ICIyOTIyYTI0MC02M2RiLTQwNGUtYjczMC0wOTIyMmJmZWIyZGQiLAogICAgICAgICJuYW1lIjogItCR0L7RgNC40YHQv9GW0LvRjNGB0YzQutC1INCy0ZbQtNC00ZbQu9C10L3QvdGPINCa0LvRltC90ZbQutC4INCd0L7Rg9C90LXQudC8IiwKICAgICAgICAiYWRkcmVzc2VzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJSRVNJREVOQ0UiLAogICAgICAgICAgICAiY291bnRyeSI6ICJVQSIsCiAgICAgICAgICAgICJhcmVhIjogItCW0LjRgtC+0LzQuNGA0YHRjNC60LAiLAogICAgICAgICAgICAicmVnaW9uIjogItCR0LXRgNC00LjRh9GW0LLRgdGM0LrQuNC5IiwKICAgICAgICAgICAgInNldHRsZW1lbnQiOiAi0JrQuNGX0LIiLAogICAgICAgICAgICAic2V0dGxlbWVudF90eXBlIjogIkNJVFkiLAogICAgICAgICAgICAic2V0dGxlbWVudF9pZCI6ICI0MzQzMjQzMiIsCiAgICAgICAgICAgICJzdHJlZXRfdHlwZSI6ICJTVFJFRVQiLAogICAgICAgICAgICAic3RyZWV0IjogItCy0YPQuy4g0J3RltC20LjQvdGB0YzQutCwIiwKICAgICAgICAgICAgImJ1aWxkaW5nIjogIjE1IiwKICAgICAgICAgICAgImFwYXJ0bWVudCI6ICIyMyIsCiAgICAgICAgICAgICJ6aXAiOiAiMDIwOTAiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGhvbmVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJNT0JJTEUiLAogICAgICAgICAgICAibnVtYmVyIjogIiszODA1MDM0MTA4NzAiCiAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZW1haWwiOiAiZW1haWxAZXhhbXBsZS5jb20iLAogICAgICAgICJ3b3JraW5nX2hvdXJzIjogewogICAgICAgICAgIm1vbiI6IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICIwOC4wMCIsCiAgICAgICAgICAgICAgIjEyLjAwIgogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIjE0LjAwIiwKICAgICAgICAgICAgICAiMTguMDAiCiAgICAgICAgICAgIF0KICAgICAgICAgIF0sCiAgICAgICAgICAidHVlIjogWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIjA4LjAwIiwKICAgICAgICAgICAgICAiMTIuMDAiCiAgICAgICAgICAgIF0KICAgICAgICAgIF0sCiAgICAgICAgICAid2VkIjogWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIjA4LjAwIiwKICAgICAgICAgICAgICAiMTIuMDAiCiAgICAgICAgICAgIF0KICAgICAgICAgIF0sCiAgICAgICAgICAidGh1IjogWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIjA4LjAwIiwKICAgICAgICAgICAgICAiMTIuMDAiCiAgICAgICAgICAgIF0KICAgICAgICAgIF0sCiAgICAgICAgICAiZnJpIjogWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIjA4LjAwIiwKICAgICAgICAgICAgICAiMTIuMDAiCiAgICAgICAgICAgIF0KICAgICAgICAgIF0sCiAgICAgICAgICAic2F0IjogW10sCiAgICAgICAgICAic3VuIjogW10KICAgICAgICB9LAogICAgICAgICJtb3VudGFpbl9ncm91cCI6IGZhbHNlCiAgICAgIH0KICAgIH0KICBdLAogICJpZF9mb3JtIjogIjUiLAogICJuaHNfc2lnbmVyX2Jhc2UiOiAi0L3QsCDQv9GW0LTRgdGC0LDQstGWINC90LDQutCw0LfRgyIsCiAgIm5oc19jb250cmFjdF9wcmljZSI6IDUwMDAwLAogICJuaHNfcGF5bWVudF9tZXRob2QiOiAicHJlcGF5bWVudCIsCiAgIm5oc19wYXltZW50X2RldGFpbHMiOiB7CiAgICAiYmFua19uYW1lIjogItCR0LDQvdC6INC90L7QvNC10YAgMSIsCiAgICAiTUZPIjogIjM1MTAwNSIsCiAgICAicGF5ZXJfYWNjb3VudCI6ICIzMjAwOTEwMjcwMTAyNiIKICB9LAogICJzdGF0dXMiOiAiTkVXIiwKICAic3RhdHVzX3JlYXNvbiI6ICLQndC1INCy0ZbQtNC/0L7QstGW0LTQsNGUINC/0L7Qv9C10YDQtdC00L3RltC8INC00L7QvNC+0LLQu9C10L3QvtGB0YLRj9C8IiwKICAibmhzX3NpZ25lciI6IHsKICAgICJpZCI6ICJiMDc1ZjE0OC03ZjkzLTRmYzItYjJlYy0yZDgxYjE5YTliN2IiLAogICAgImZpcnN0X25hbWUiOiAi0J/QtdGC0YDQviIsCiAgICAibGFzdF9uYW1lIjogItCG0LLQsNC90L7QsiIsCiAgICAic2Vjb25kX25hbWUiOiAi0JzQuNC60L7Qu9Cw0LnQvtCy0LjRhyIKICB9LAogICJuaHNfbGVnYWxfZW50aXR5X2lkIjogewogICAgImlkIjogImRmOWY3MGVlLTRiMTItNDc0MC1iMGY1LWJiNWFlYTExNjg2MyIsCiAgICAibmFtZSI6ICLQmtC70ZbQvdGW0LrQsCDQndC+0YPQvdC10LnQvCIsCiAgICAiZWRycG91IjogIjMyMzIzNDU0IiwKICAgICJhZGRyZXNzZXMiOiBbCiAgICAgIHsKICAgICAgICAidHlwZSI6ICJSRVNJREVOQ0UiLAogICAgICAgICJjb3VudHJ5IjogIlVBIiwKICAgICAgICAiYXJlYSI6ICLQltC40YLQvtC80LjRgNGB0YzQutCwIiwKICAgICAgICAicmVnaW9uIjogItCR0LXRgNC00LjRh9GW0LLRgdGM0LrQuNC5IiwKICAgICAgICAic2V0dGxlbWVudCI6ICLQmtC40ZfQsiIsCiAgICAgICAgInNldHRsZW1lbnRfdHlwZSI6ICJDSVRZIiwKICAgICAgICAic2V0dGxlbWVudF9pZCI6ICI0MzQzMjQzMiIsCiAgICAgICAgInN0cmVldF90eXBlIjogIlNUUkVFVCIsCiAgICAgICAgInN0cmVldCI6ICLQstGD0LsuINCd0ZbQttC40L3RgdGM0LrQsCIsCiAgICAgICAgImJ1aWxkaW5nIjogIjE1IiwKICAgICAgICAiYXBhcnRtZW50IjogIjIzIiwKICAgICAgICAiemlwIjogIjAyMDkwIgogICAgICB9CiAgICBdCiAgfSwKICAiaXNzdWVfY2l0eSI6ICLQmtC40ZfQsiIsCiAgImNvbnRyYWN0X251bWJlciI6ICIwMDAwLTlFQVgtWFQ3WC0zMTE1IiwKICAiY29udHJhY3RfaWQiOiAiZGY5ZjcwZWUtNGIxMi00NzQwLWIwZjUtYmI1YWVhMTE2ODYzIiwKICAic3RhcnRfZGF0ZSI6ICIyMDE3LTA0LTIwIiwKICAiZW5kX2RhdGUiOiAiMjAxNy0wNC0yMCIsCiAgInByaW50b3V0X2NvbnRlbnQiOiAiQ29udHJhY3QgcmVxdWVzdCBjb250ZW50Igp9",
"signed_content_encoding": "base64"
}
Headers
1 Content-Type
application/json
M
Тип контенту
Content-Type:application/json
2 Authorization
Bearer c2778f3064753ea70de870a53795f5c9
M
Перевірка користувача
Authorization:Bearer c2778f3064753ea70de870a53795f5c9
3
Request data validation Validate EDRPOU Check that EDRPOU in Certificate details exists and not empty
in case of error return 422 error ('Invalid EDRPOU in DS')
Check that EDRPOU in Certificate details is equal to EDRPOU in legal entity
Get client_id from token.
Find prm.legal_entities id by client_id
Compare EDRPOU in Certificate with legal_entities.edrpou
In case validation fails - generate 422 error
Get party.last_name using nhs_signer_id from contract_request
employees.employee_id=nhs_signer_id and client_id=employee.legal_entity_id → party.last_name
Convert prm.parties.LAST_NAME and Certificate details.SURNAME to uppercase
Compare prm.parties.LAST_NAME and Certificate details.SURNAME as Cyrillic letters
In case validation fails - generate 422 error
Validate DRFO Get parties.tax_id using party_users.party_id by user_id.
Compare DRFO in Certificate with party.tax_id
Convert DRFO and TAX_ID to uppercase
Compare DRFO and TAX_ID as Cyrillic letters
Convert DRFO to Cyrillic and compare as Cyrillic letters
In case validation fails - generate 422 error
Validate Digital Stamp Check that EDRPOU in Digital Stamp details exists and not empty
in case of error return 422 error ('Invalid EDRPOU in DS')
Check that EDRPOU in Certificate details is equal to EDRPOU in legal entity
Get client_id from token.
Find prm.legal_entities id by client_id
Compare EDRPOU in Certificate with legal_entities.edrpou
In case validation fails - generate 422 error
Check that EDRPOU in Digital Stamp details is equal to EDRPOU in Digital signature
Get EDRPOU from Digital signature.
Get EDRPOU from Digital Stamp.
Compare EDRPOU in Digital signature with Digital signature
In case validation fails - generate 422 error
Check employee Contract_request can be signed by owner or nhs_signer with necessary scopes in equal legal_entity_id and same id as was previously input in contract_request.
Extract legal_entity_id (client_id) from token. Take contract_request_id.
Check client_id=nhs_legal_entity_id (nhs_side) - in case of error return 403 Error ('Invalid client id')
Validate that contract_request hasn't been signed by nhs_side already
Check if status= 'PENDING_NHS_SIGNED'
In case of error return 422 error ('The contract can't be signed by status')
Digital signature Decode content that is encrypted in an electronic digital signature. Use Digital signature WS. Method checks digital signature and returns result.
Check signed contentCheck decoded signed content with previously created on IL.db.
SELECT data
FROM contract_requests
WHERE id = {:id}
In case if they are not equal - generate 422 error (message: "Signed content does not match the previously created content")
Validate request Validate request using JSON schema
In case validation fails - generate 422 error
Check contract request status
If status is not PENDING_NHS_SIGN - return error 422 'Incorrect status'
Validate contractor_divisions
Check divisions belongs to legal_entity and divisions.status='active'
in case of error return 422 error view $divisions ('Division must be active and within current legal_entity')
Capitation only: Validate contractor_employee_divisions
Employees from employee_divisions has employee_type='DOCTOR', status='APPROVED'
in case of error return 422 error view $employee ('Employee must be an active DOCTOR')
Check contractor_employee_divisions.division_id is present in contractor_divisions.id
in case of error return 422 error $divisions ('The division is not belong to contractor_divisions ')
Check contract_number is null
in case of error return 422 error view $employee ('Employee can't be updated via Contract Request')
Validate start_date
start_date>now()
in case of error return 422 error $start_date ('Start date must be greater than create date')
Check whether all id is resolved and valid. For
Invoke service Get Printout Form by Contract Request ID and compare to $printout_content from request
in case of error return 422 error $printout_content ('Invalid printout content')
Reimbursement only: Validate medical_program_id is an ID of an ACTIVE medical program with type 'medication'
in case of error return 409: "Program is not active"
For Capitation only: do not sing optional fields contractor_employee_divisions, external_contractor_flag and external_contractors
Processing Save signed contract to media storage Get url for declaration upload
action
'GET'
bucket
'CONTRACT_REQUESTS'
resource_id
: CONTRACT_REQUEST_ID
resource_name
: CONTRACT_NAME
timestamp
:TIMESTAMP
Upload signed contract to media storage.
Save Printout form After status is changed to NHS_SIGNED save printout_content to db.contract_requests.printout_content by $contract_id
Update contract request Change contract_request.status='NHS_SIGNED'
set nhs_signed_date=now()::date
Add status to event manager After status was changed (status = NHS_SIGNED) - add new status to event_manager
event_type
StatusChangeEvent
entity_type
Contract_request
entity_id
$.id
properties.status.new_value
$.status
event_time
$.update_at
changed_by
$.changed_by
Dictionaries Response structure examples Description of the REST API response structure, example
Response example
{
"meta": {
"code": 201,
"url": "https://example.com/resource",
"type": "object",
"request_id": "req-adasdoijasdojsda"
},
"data": {
"id": "09106b70-18b0-4726-b0ed-6bda1369fd52",
"contract_type": "CAPITATION",
"contractor_legal_entity": {
"id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"name": "Клініка Ноунейм",
"edrpou": "32323454",
"addresses": [
{
"type": "RESIDENCE",
"country": "UA",
"area": "Житомирська",
"region": "Бердичівський",
"settlement": "Київ",
"settlement_type": "CITY",
"settlement_id": "b075f148",
"street_type": "STREET",
"street": "вул. Ніжинська",
"building": "15",
"apartment": "23",
"zip": "02090"
}
]
},
"contractor_owner": {
"id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
"party": {
"first_name": "Петро",
"last_name": "Іванов",
"second_name": "Миколайович"
}
},
"contractor_base": "на підставі закону про Медичне обслуговування населення",
"contractor_payment_details": {
"bank_name": "Банк номер 1",
"MFO": "351005",
"payer_account": "32009102701026"
},
"contractor_rmsp_amount": 50000,
"contractor_divisions": [
{
"id": "2922a240-63db-404e-b730-09222bfeb2dd",
"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",
"working_hours": {
"mon": [
[
"08.00",
"12.00"
],
[
"14.00",
"18.00"
]
],
"tue": [
[
"08.00",
"12.00"
]
],
"wed": [
[
"08.00",
"12.00"
]
],
"thu": [
[
"08.00",
"12.00"
]
],
"fri": [
[
"08.00",
"12.00"
]
]
},
"mountain_group": false
}
],
"contractor_employee_divisions": [
{
"employee": {
"id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
"party": {
"first_name": "Петро",
"last_name": "Іванов",
"second_name": "Миколайович"
},
"speciality": {
"speciality": "THERAPIST",
"speciality_officio": true,
"level": "FIRST",
"qualification_type": "AWARDING",
"attestation_name": "Академія Богомольця",
"attestation_date": "2017-02-28",
"valid_to_date": "2020-02-28",
"certificate_number": "AB/21331"
}
},
"staff_units": 0.5,
"declaration_limit": 2000,
"division_id": "2922a240-63db-404e-b730-09222bfeb2dd"
}
],
"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": "Послуга ПМД"
}
]
}
],
"id_form": "PMD_1",
"nhs_signer": {
"id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
"party": {
"first_name": "Петро",
"last_name": "Іванов",
"second_name": "Миколайович"
}
},
"nhs_legal_entity": {
"id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"name": "Клініка Ноунейм",
"edrpou": "32323454",
"addresses": [
{
"type": "RESIDENCE",
"country": "UA",
"area": "Житомирська",
"region": "Бердичівський",
"settlement": "Київ",
"settlement_type": "CITY",
"settlement_id": "b075f148",
"street_type": "STREET",
"street": "вул. Ніжинська",
"building": "15",
"apartment": "23",
"zip": "02090"
}
]
},
"nhs_signer_base": "на підставі наказу",
"nhs_contract_price": 50000,
"nhs_payment_method": "BACKWARD",
"status": "NEW",
"status_reason": "Не відповідає попереднім домовленостям",
"issue_city": "Київ",
"contract_number": "0000-9EAX-XT7X-3115",
"contract_id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"parent_contract_id": "22e416c4-5747-41cd-9f73-c3a85cdee885",
"start_date": "2017-04-20",
"end_date": "2017-04-20",
"printout_content": "Contract request content",
"previous_request_id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"assignee_id": "22e416c4-5747-41cd-9f73-c3a85cdee885"
}
}
Response example
{
"meta": {
"code": 201,
"url": "https://example.com/resource",
"type": "object",
"request_id": "req-adasdoijasdojsda"
},
"data": {
"id": "09106b70-18b0-4726-b0ed-6bda1369fd52",
"contract_type": "REIMBURSEMENT",
"contractor_legal_entity": {
"id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"name": "Клініка Ноунейм",
"edrpou": "32323454",
"addresses": [
{
"type": "RESIDENCE",
"country": "UA",
"area": "Житомирська",
"region": "Бердичівський",
"settlement": "Київ",
"settlement_type": "CITY",
"settlement_id": "b075f148",
"street_type": "STREET",
"street": "вул. Ніжинська",
"building": "15",
"apartment": "23",
"zip": "02090"
}
]
},
"contractor_owner": {
"id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
"party": {
"first_name": "Петро",
"last_name": "Іванов",
"second_name": "Миколайович"
}
},
"contractor_base": "на підставі закону про Медичне обслуговування населення",
"contractor_payment_details": {
"bank_name": "Банк номер 1",
"MFO": "351005",
"payer_account": "32009102701026"
},
"id_form": "RMB-1",
"nhs_signer": {
"id": "b075f148-7f93-4fc2-b2ec-2d81b19a9b7b",
"party": {
"first_name": "Петро",
"last_name": "Іванов",
"second_name": "Миколайович"
}
},
"nhs_legal_entity": {
"id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"name": "Клініка Ноунейм",
"edrpou": "32323454",
"addresses": [
{
"type": "RESIDENCE",
"country": "UA",
"area": "Житомирська",
"region": "Бердичівський",
"settlement": "Київ",
"settlement_type": "CITY",
"settlement_id": "b075f148",
"street_type": "STREET",
"street": "вул. Ніжинська",
"building": "15",
"apartment": "23",
"zip": "02090"
}
]
},
"nhs_signer_base": "на підставі наказу",
"nhs_contract_price": 50000,
"nhs_payment_method": "BACKWARD",
"status": "NEW",
"status_reason": "Не відповідає попереднім домовленостям",
"issue_city": "Київ",
"contract_number": "0000-9EAX-XT7X-3115",
"contract_id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"parent_contract_id": "22e416c4-5747-41cd-9f73-c3a85cdee885",
"start_date": "2017-04-20",
"end_date": "2017-04-20",
"printout_content": "Contract request content",
"previous_request_id": "df9f70ee-4b12-4740-b0f5-bb5aea116863",
"assignee_id": "22e416c4-5747-41cd-9f73-c3a85cdee885",
"medical_programs": [
"3914a240-63db-404e-b730-09222bfeb2d0"
]
}
}
HTTP status codes
1 2
200
3
401
Unauthorized
Помилка підтвердження
4
403
Invalid client id
5 1000
404
Composition not found
COMPOSITION_NOT_FOUND_404
Не знайдено медичний висновок
6
422
Division must be active and within current legal_entity
7
422
Employee must be an active DOCTOR
8
422
Employee can't be updated via Contract Request
9
422
Invalid EDRPOU in DS
10
422
Invalid printout content
11
422
Incorrect status
12
422
Start date must be greater than create date
13
422
The contract can't be signed by status
14
422
The division is not belong to contractor_divisions
15 16
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