Table of Contents |
---|
...
Specification
Page Properties | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Verify Care plan:
It should belong to the same person as set in MRR
in case of error return 422 with msg ("Care plan not found")
It should be in active status
Verify submitted Activity:
It belongs to the Care plan.
in case of error return 422 with msg ("Activity not found")
It has activity.detail.kind=medication_request; activity.detail.product_reference=medication_id.
in case of error return 422 with msg ("Invalid activity kind")
It has scheduled, in_progress status
in case of error return 422 with msg ("Invalid activity status")
If it hasquantitythen calculateremaining quantity:select all MRR in status NEW which based on current activityselect all MR in statuses ACTIVE, COMPLETED based on current activitycalculate reserved at the moment medication quantity as sum of medication_qty in the filtered MRR and MR list, including medication_qty from current MRRcalculate remaining quantity by subtracting reserved quantity from activity quantityCheckremaining quantityis greater then or equal to zeroin case of error return 409 "The total amount of the prescribed medication quantity exceeds quantity in care plan activity"
check that medical_program_id equal to $.activity[].program
in case of error return 422 with msg ("Medical program from activity should be equal to medical program from request")
Validate started_at/ended_at of Medication request Request:
if care plan activity has detail.scheduled_timing.repeat.bounds_period - validate started_at/ended_at within bounds_period
if care plan activity has detail.scheduled_period - validate started_at/ended_at within scheduled_period
else - validate started_at/ended_at within care_plan.period
in the case of started_at/ended_at is not within care_plan.period return 422 with msg ("Invalid care plan period")
...
Expand | ||
---|---|---|
| ||
|
Processing
Save signed content to media storage
Update Medication dispense data in OPS DB:
set status = ‘PROCESSED’
updated_by = user_id
updated_at = now()
Update related Medication request data in OPS DB:
set status = ‘COMPLETED’
updated_by = user_id
updated_at = now()
Write changes to event manager (Medication dispense and Medication request)
Change Care plan activity (If related medication request has reference on Care plan, then corresponding care plan activity should be changed after Medication dispense processed):
Set activity status to in_progress if previous activity status was scheduled
Check the MD identifier in outcome_reference attribute of the activity:
if not found:
Add reference on the medication dispense resource to the outcome_reference attribute .
If quantity in the activity was set - validate $.activity.details.remaining_quantity_type:
if $.activity.details.remaining_quantity_type =for_request than:
select all MRR in status NEW which based on current activity
select all MR in statuses ACTIVE based on current activity
select all MD (medication dispenses) in status PROCESSED related to the Medication requests which are in status COMPLETE, REJECTED, EXPIRED
calculate:
reserved_qty as sum of medication_qty in the filtered MRR and MR list
dispensed_qty as sum of medication_qty in the filtered MD list
calculate and update remaining quantity by subtracting reserved_quantity and dispensed_qty from activity quantity
if $.activity.details.remaining_quantity_type = for_use than:
select all MD in status PROCESSED related to MR which based on care plan and current activity
calculate dispensed quantity in the current activity as sum of medication_qty in the filtered MD list
calculate remaining quantity by subtracting dispensed quantity from activity quantity
update remaining_quantity value in the activity with calculated value
If found, then skip updating activity (it means that activity has been already updated by event from current MD processing).
HTTP status codes
Page Properties | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|