Overview
This web service is designed to create new episode of care for the patient.
Specification
Validation
Validate token
- Verify the validity of access token
- Return 401 in case validation fails
- Verify token is not expired
- in case of error return 401
Validate scopes
- Check user scopes in order to perform this action (scope = 'episode:write')
- Return 403 in case invalid scope(s)
Validate declaration
In order to perform this action, primary doctor must have active declaration with the patient
- Validate declaration using Method
- in case of error 403
Request validation
- Validate patient status
- Medical_data status for this patient must be in "active" status
- in case of error return 409 - "Patient is not active"
- Medical_data status for this patient must be in "active" status
- Validate episode id is uniqie
- $.id is unique
in case of error return 422 - "Episode with such id already exists"
- $.id is unique
- Validate request according to JSON Schema LINK
- in case of error return 422
Validate type = "Primary care"- resolved by JSON schemaValidate status= "active"- resolved by JSON schema- Validate managing_organization
- Only one item is allowed in coding array
- in case of error return 422 "Only one item is allowed in "coding" array "
- $.managing_organization.identifier.type.coding.[0].code = "legal_entity"
- in case of error return 422 "Only legal_entity could be submitted as a managing_organization"
- $.managing_organization.identifier.value = token.client_id
- in case of error return 409 "User can create an episode only for the legal entity for which he works"
- $.managing_organization.identifier.type.coding.[0].system = "eHealth/resources"
- in case of error return 422 "Submitted system is not allowed for this field"
- Only one item is allowed in coding array
- Validate period
- $.period.start <= current_date
- in case of error return 422 - "Start date of episode must be in past"
- $.period.end is absent
- in case of error return 422 - "End date of episode could not be submitted on creation"
- $.period.start <= current_date
- Validate care_manager
- $.care_manager.identifier.type.coding.[0].code = "employee"
- in case of error return 422 "Only employee could be submitted as a care_manager"
- $.care_manager.identifier.type.coding.[0].system = "eHealth/resources"
- in case of error return 422 "Submitted system is not allowed for this field"
- $.care_manager.identifier.value must meet the following requirements
- PRM.employee.type = "DOCTOR"
- in case of error return 409 "Employee submitted as a care_manager is not a doctor "
- PRM.employee.status= "active"
- in case of error return 409 "Doctor submitted as a care_manager is not active "
- PRM.employee.legal_entity = token.client_id
- in case of error return 409 "User can create an episode only for the doctor that works for the same legal_entity"
- PRM.employee.type = "DOCTOR"
- $.care_manager.identifier.type.coding.[0].code = "employee"
Error example:
{:error, [{ %{ description: "Episode with such id already exists" , params: [], rule: :invalid }, "$.id" }]} |