You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 13
Next »
Purpose
This API allows to cancel Care plan in cases it has been rejected or entered in error.
https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/2125038637/care+plan#%D0%92%D1%96%D0%B4%D0%BC%D1%96%D0%BD%D0%B0-%D0%BF%D0%BB%D0%B0%D0%BD%D1%83-%D0%BB%D1%96%D0%BA%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F
Specification
Sign message (pkcs7) that consists of signed content, digital signature, and signer public key
Important
Signed content of care plan must be equal to care plan stored in DB. See Get Care plan by ID
Activities should not be presented in signed content.
$.status_reason must be added to signed content
Logic
This method must be used to cancel of existing patient's Care plan. Method receives signed message (pkcs7) that consists of signed content, digital signature and signer public key. All signature fields will be validated (including signer certificate authority)
Key points
It can be cancelled by author of the Care plan who has an Approval granted by the patient on write Care plan resource
Cancel should be signed with DS. So, all the Care plan data (without activities data) should be submitted.
Status of the Care plan changed in async way. The result of the job should be a link on the Care plan details.
Global and configurable parameters
https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/2125039308/Care+Plan+dictionaries+and+configurable+parameters+UA#%D0%9A%D0%BE%D0%BD%D1%84%D1%96%D0%B3%D1%83%D1%80%D0%B0%D1%86%D1%96%D0%B9%D0%BD%D1%96-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B8
https://e-health-ua.atlassian.net/wiki/spaces/EH/pages/583402009/Medical+Events+Dictionaries+and+configurations#ME_ALLOWED_TRANSACTIONS_LE_TYPES
Input parameter | Values | Type | Description | Example |
---|
patient_id | | String | MPI identifier of the patient | 7c3da506-804d-4550-8993-bf17f9ee0402
|
id | | String | Care Plan identifier | 7c3da506-804d-4550-8993-bf17f9ee0403
|
Filters
No
eHealth/care_plan_categories
eHealth/care_plan_cancel_reasons
eHealth/care_plan_complete_reasons
eHealth/ICD10_AM/condition_codes
PROVIDING_CONDITION
Request structure
See on Apiary
Example:
Request example
{
"signed_data": "ew0KICAicGVyaW9kIjogew0KIC..."
}
Dummy Cancel Care plan
Example:
Request example
{
"id": "90a9e15b-b71b-4caf-8f2e-ff247e8a5600",
"based_on": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "care_plan"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"part_of": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "care_plan"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"category": {
"coding": [
{
"system": "eHealth/care_plan_categories",
"code": "diabetics"
}
]
},
"title": "Diabetics health plan",
"description": "Some description of the care plan",
"period": {
"start": "2018-08-02T10:45:16.000Z",
"end": "2018-08-02T11:00:00.000Z"
},
"supporting_info": [
{
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "episode_of_care"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
}
],
"note": "Some notes",
"intent": "order",
"encounter": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "encounter"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"addresses": [
{
"coding": [
{
"system": "eHealth/ICD10_AM/condition_codes",
"code": "E11.9"
}
]
}
],
"author": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "employee"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"contributor": [
{
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "employee"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
}
],
"terms_of_service": {
"coding": [
{
"system": "PROVIDING_CONDITION",
"code": "INPATIENT"
}
]
},
"inform_with": {
"auth_method_id": "cc949559-5dfe-420f-ac05-065e443b2cc6"
},
"status": "active",
"subject": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "patient"
}
]
},
"value": "7c3da506-804d-4550-8993-bf17f9ee0403"
}
},
"status_history": [
{
"status": "active",
"status_reason": {
"coding": [
{
"system": "eHealth/care_plan_cancel_reasons",
"code": "some code"
}
]
},
"inserted_at": "2018-08-02T10:45:16.000Z",
"inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e"
}
],
"requisition": "0123-4567-89AB-CEIK",
"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",
"status_reason": {
"coding": [
{
"system": "eHealth/care_plan_cancel_reasons",
"code": "some code"
}
]
}
}
Authorize
Verify the validity of access token
Verify that token is not expired
Check user scopes in order to perform this action (scope = 'care_plan:write')
Request to process the request using a token in the headers
Наприклад:
Request data validation and processing
Validate legal entity
Validate User
Validate data consistency
Validate Digital Sign
Validate status transition
Get Care plan by id
Check status:
Validate status reason
Validate value in the field $.status_reason, required
Validate field type is codeable concept
Check that codeable concept refers to eHealth/care_plan_cancel_reasons
dictionary
Validate value within specified above
Validate activities
Validate content
Signed content must match with Care plan in DB in order to be changed
Render Care plan from DB
Exclude $.status_reason from signed content
Compare rendered Care plan and signed content
In case both object doesn't match - return 422 ('Signed content doesn't match with previously created care plan')
Processing
Service logic
Save signed content to media storage
Update Care plan status (update also updated_at, updated_by)
Set $.status_reason and $.status_history
Response structure
See on Apiary
Example:
Response example
{
"data": {
"id": "90a9e15b-b71b-4caf-8f2e-ff247e8a5600",
"based_on": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "care_plan"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"part_of": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "care_plan"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"category": {
"coding": [
{
"system": "eHealth/care_plan_categories",
"code": "diabetics"
}
]
},
"title": "Diabetics health plan",
"description": "Some description of the care plan",
"period": {
"start": "2018-08-02T10:45:16.000Z",
"end": "2018-08-02T11:00:00.000Z"
},
"supporting_info": [
{
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "episode_of_care"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
}
],
"note": "Some notes",
"intent": "order",
"encounter": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "encounter"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"addresses": [
{
"coding": [
{
"system": "eHealth/ICD10_AM/condition_codes",
"code": "E11.9"
}
]
}
],
"author": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "employee"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
},
"contributor": [
{
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "employee"
}
]
},
"value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
}
}
],
"terms_of_service": {
"coding": [
{
"system": "PROVIDING_CONDITION",
"code": "INPATIENT"
}
]
},
"inform_with": {
"auth_method_id": "cc949559-5dfe-420f-ac05-065e443b2cc6"
},
"status": "active",
"subject": {
"identifier": {
"type": {
"coding": [
{
"system": "eHealth/resources",
"code": "patient"
}
]
},
"value": "7c3da506-804d-4550-8993-bf17f9ee0403"
}
},
"status_history": [
{
"status": "active",
"status_reason": {
"coding": [
{
"system": "eHealth/care_plan_cancel_reasons",
"code": "some code"
}
]
},
"inserted_at": "2018-08-02T10:45:16.000Z",
"inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e"
}
],
"requisition": "0123-4567-89AB-CEIK",
"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"
},
"meta": {
"code": 201,
"url": "http://example.com/resource",
"type": "object",
"request_id": "req-adasdoijasdojsda"
}
}
Response example
{
"data": {
"status": "pending",
"eta": "2018-08-02T10:45:16.000Z",
"links": [
{
"entity": "job",
"href": "/Jobs/NBXk9EyErUZv1RhXgyvgg"
}
]
},
"meta": {
"code": 202,
"url": "http://example.com/resource",
"type": "object",
"request_id": "req-adasdoijasdojsda"
}
}
Post-processing processes
HTTP status codes