Table of Contents | ||||
---|---|---|---|---|
|
...
eHealth/activity_remaining_quantity_types
eHealth/activity_kinds
Request structure
See on Apiary
...
Verify the validity of access token
Return (401, 'Invalid access token') in case of validation fails
Verify that token is not expired
in case of error - return (401, 'Invalid access token')
Check user scopes in order to perform this action (scope = 'care_plan:write')
Return (403, 'Your scope does not allow to access this resource. Missing allowances: care_plan:write') in case of invalid scope(s)
If BLOCK_UNVERIFIED_PARTY_USERS is true, then check party's data match following condition: verification_status != NOT_VERIFIED or (verification_status = NOT_VERIFIED and updated_at <= current_date - UNVERIFIED_PARTY_PERIOD_DAYS_ALLOWED):
in case not match - return 403 ("Access denied. Party is not verified")
Headers
Наприклад:
Content-Type:application/json
Authorization:Bearer {{access_token}}
API-key:{{mis_client_secret}}
...
Validate value in the field $.detail.kind, required
Check value in
enum: medication_request, service_request, device_requestthe dictionaryeHealth/activity_kinds
Return 422 ('value is not allowed in enum')
...
If $detail.kind=medication_request:
Check $.detail.product_reference field is submitted and has Reference type
in case it isn’t submitted - return 422 ('can't be blank')
in case of wrong type - return 422 ('type mismatch')
Check the value is valid reference on medication resource.
Return 422 ('Cannot refer to <resource>for kind = medication_request')
Check medication:
is active
in case of error - return 422 ('Medication should be active')
type is INNM_DOSAGE
in case of error - return 422 ('Medication does not exist')
If $.detail.kind=service_request:
Check $.detail.product_reference field is submitted and has Reference type
in case it isn’t submitted - return 422 ('can't be blank')
in case of wrong type - return 422 ('type mismatch')
Check that value is a reference on service or service_group
Return 422 ('Cannot refer to <resource> for kind = service_request')
Check service or service_group is active
Return 422 ('<Service/Service group> should be active')
If $.detail.kind=device_request:
Validate product_reference:
Check there value is valid Reference on device_definition resource
Return 422 ('Cannot refer to <resource> for kind = device_request')
Check the device_definition is active
Return 422 ('Device definition is not active')
Validate classification types of the device_definition:
Check at least one classification type is allowed by dictionary configuration “prescribable_device_codes”
in case of error - return 422 ('Value is not allowed by {{dictionary_configuration_name}} dictionary configuration”
If one of the classification types has also included in dictionary configuration “assistive_devices”, then check speciality of the author (speciality_officio=true) in the
ASSISTIVE_DEVICES_SPECIALITIES_ALLOWED
chart parameterin case not found in the chart parameter - return 422 ('Speciality is not allowed for {{dictionary_configuration_name}} dictionary configuration”
Validate product_codeable_concept:
Check that value matches with active values indevice_definition_classification_type
dictionary.Return 422 ('value is not allowed in enum')
Check that product_codeable_concept.coding[] array contains only 1 element
in case of error - return 422 ('Exceeded max count of elements in the array')
Check that product_codeable_concept.coding[].code is an active value from the dictionary specified in product_codeable_concept.coding[].system
in case of error - return 422 ('value is not allowed in enum')
Check that value is allowed by dictionary configuration “prescribable_device_codes”
in case of error - return 422 ('Value is not allowed by {{dictionary_configuration_name}} dictionary configuration”
If value also included in dictionary configuration “assistive_devices”, then check speciality of the author (speciality_officio=true) in the ASSISTIVE_DEVICES_SPECIALITIES_ALLOWED chart parameter
in case not found in the chart parameter - return 422 ('Speciality is not allowed for {{dictionary_configuration_name}} dictionary configuration”
Check there is no another activities (status=scheduled, in_progress) in the Care plan with the same product_reference or product_codeable_concept, and program = $.detail.program (including the equality of program absence/null value)
Return 422 (“Another activity with status ‘scheduled' or ‘in_progress' already exists in the current Care plan within current program value“)
...
Сheck program exists and active
in case not found or is_active==false return 404 "Program not found"
Validate product is program participant:
If product is medication - validate:
that medication has brand that is an active member of the program (program_medications table) or medication itself is an active member of the program
in case not found or is_active==false return 422 "Medication is not included in the program"
that care_plan_activity_allowed for program medication == true
in case ==false return 422 "Forbidden to create care plan activity for this medication!"
If product is service - validate that service is an active member of the program
in case not found or is_active==false return 422 "Service is not included in the program"
if product is service_group - validate that service group is an active member of the program
in case not found or is_active==false return 422 "Service group is not included in the program"
If product is code
fromdevice_definition_classification_type
dictionary(product_codeable_concept was set) or product is device_definition (product_reference was set):Find all program devices with:
is_active=true
care_plan_activity_allowed = true
period (start_date and end_date) that includes current date
max_daily_count >= $.quantity.value/($.detail.scheduled_period.end - $.detail.scheduled_period.start + 1). Count scheduled_period length in days, without taking into account time
related to the Device Definitions that has successfully passed Quantity and Product validations before
in case not found return 422 ('No appropriate participants found for this medical program')
Validate medical program settings (prm.medical_programs table):
if there is a parameter SPECIALITY_TYPES_ALLOWED:
Check author’s speciality is present in SPECIALITY_TYPES_ALLOWED
in case of error - return 422 “Author’s specialty doesn't allow to create activity with medical program from request”
if there is a parameter CONDITIONS_ICD10_AM_ALLOWED or/and CONDITIONS_ICPC2_ALLOWED:
Check related Care plan has condition codes in
addresses
field that correspond to codes pointed in CONDITIONS_ICD10_AM_ALLOWED or/and CONDITIONS_ICPC2_ALLOWED (depending on dictionary - eHealth/ICD10_AM/condition_codes or eHealth/ICPC2/condition_codes)in case of error - return 422 “Care plan diagnosis is not allowed for the medical program“
If there is a parameter PROVIDING_CONDITIONS_ALLOWED:
Check related Care plan has a value in
terms_of_service
field that is included in the list of PROVIDING_CONDITIONS_ALLOWED parameterin case of error - return 422 “Care plan’s terms of service are not allowed for the medical program“
if there is a parameter patient_categories_allowed:
check that patient_categories_allowed has codes in $.detail.reason_reference.[].clinical_impression.code.[].code that correspond to codes pointed in patient_categories_allowed
in case of error - return 422 "Clinical impression with patient category should be present in request for this medical program".
if there is parameter device_request_allowed_code_types and activity kind=device_request, then check values in the array of values:
if it includes
CLASSIFICATION_TYPE
- it is allowed to set $.detail.product_codeable_concept in the activityif it includes
DEVICE_DEFINITION
- it is allowed to set $.detail.product_reference in the activityin case of a mismatch between the filled field and the config values - return 422 ("<Device definition/Device classification type> is not allowed to set for this medical program").
...
Save signed content to media storage
Save data to care_plan_activities collection in DB according to Care plan data model
add
unit
(and its value) field intoquantity
,daily_amount
, objects based onsystem
,code
out of MEDICATION_UNITor SERVICE_UNIT dictionary.add
system
,code
,unit
fields intoremaining_quantity
based onquantity
object
Save link from media storage to the $.signed_content_links field in care plan activities collection
If Care plan has status = new:
Set care plan status = active
Check if patient has another active or/and new Care plans with such condition code in the addresses field and the same terms of service:
If such Care plans found - set these Care plans statuses to TERMINATED (related activities doesn`t change their status)
Set $.details.remaining_quantity_type:
If $.details.kind = medication_request or device_request, then check $.details.quantity:
if $.details.quantity = null then set $.details.remaining_quantity_type = null
if $.details.quantity is not null then:
set $.details.remaining_quantity_type = for_request
If $.details.kind = service_request check $.details.quantity:
if $.details.quantity = null then set $.details.remaining_quantity_type = null
if $.details.quantity is not null then check $.details.quantity.code:
if $.details.quantity.code is not null then set $.details.remaining_quantity_type = for_request
if $.details.quantity.code = null then set $.details.remaining_quantity_type = for_use
Create job and return it’s id.
...
Page Properties | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|