Table of Contents |
---|
...
Page Properties | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|
Logic
Generate structure for response
...
Check the program exists and is active
in case of error - return reject_reason = “Medical program not found”
Check the program is of type DEVICE
in case of error - return reject_reason = “Invalid program type”
Check request_allowed = true for the program
in case of error - return reject_reason = “It is not allowed to create Device requests for the program”
Check there is at least one appropriate participant for a program:
Find program_devices, that:
is active
has device_request_allowed=true
its validity period (start_date and end_date) includes current date
has max_daily_count is null or max_daily_count >= $.quantity.value/(occurence_period.end - occurence_period.start + 1)
relates to the Device Definition found at the Validate Device definition step
in case not found - return reject_reason = “No appropriate participants found for this medical program“
Make validation according to /wiki/spaces/CSI/pages/17467605147:
If skip_employee_validation = false (null/absent), then $.requester should be validated:
If employee_types_to_create_request parameteris set, then check if it contains employee type of the requester
in case is not found - return reject_reason = “Employee type of the requester doesn't allow to create Device Request with the medical program”
In case employee type of the requester is SPECIALIST, then additional validations may be performed:
If speciality_types_allowed is set, then check if it contains speciality of the requester (speciality_officio=true):
in case is not found - return reject_reason = "Employee's specialty of the requester doesn't allow to create Device Request with the medical program"
In case employee type of the requester is DOCTOR, then additional validations may be performed:
if skip_request_employee_declaration_verify = false (null/absent), then get declaration by employee_id of the requester, person_id and status=ACTIVE
in case is not found - return reject_reason = "Only doctors with an active declaration with the patient can create Device Request with the medical program"
if skip_request_legal_entity_declaration_verify = false (null/absent), then get declaration by requester's legal_entity_id, person_id and status=ACTIVE
in case is not found - return reject_reason = "Only legal entity with an active declaration with the patient can create Device Request with the medical program"
If conditions_icd10_am_allowed is set and $.encounter has primary diagnosis code from the
eHealth/ICD10_AM/condition_codes
dictionary, then check this code is in the conditions_icd10_am_allowed parameterin case is not found - return reject_reason = "Encounter in the request has no primary diagnosis allowed for the medical program”
If conditions_icpc2_allowed is set and $.encounter has primary diagnosis code from the
eHealth/ICD10_AM/condition_codes
dictionary, then check this code is in the conditions_icpc2_allowed parameterin case is not found - return reject_reason = "Encounter in the request has no primary diagnosis allowed for the medical program”
If skip_treatment_period = false (null/absent), then:
Get all active/completed Device Requests with $.code, $.medical_program_id, $person_id
If such was found, get the Device Request with the latest occurrence_period.end date and check:
its occurrence_period.end less then $.occurrence_period.start from the request
in case of error - return reject_reason = ”It can be only one active / completed Device Request for the same code and patient at the same period of time”
if its occurrence_period.end greater than or equal to current date, then in addition check:
If occurrence_period of found Device Request is greater than or equal to DEVICE_REQUEST_STANDARD_DURATION, then $.authored_on from the request should be greater then (occurrence_period.ended at - DEVICE_REQUEST_MAX_RENEW_DAY) of the found Device Request
else $.authored_on from the request should be greater then (occurrence_period.ended at - DEVICE_REQUEST_MIN_RENEW_DAY)
in case of error - return reject_reason = “It's to early to create new Device Request for such code and medical program”
If request_max_period_day is set, then check if it is not exceeded by the number of days in the $.occurrence_period of the request
if exceeded - return reject_reason = “Occurrence period length exceeds allowed value for the medical program“
...