ЕСОЗ - публічна документація
RC_Update program medication registry (CSI-2140)
Purpose
The service is designed to uploading updates to the program medication registry. The process uses the jabba service. Upon execution of the request, a job is created, on the basis of which tasks are created. Each task is one request to create entity from registry.
Key points
This is a GraphQL method that is used in Administration panel only.
Only authenticated and authorized NHS employee with appropriate scope can update program medication registry.
Update program medication registry file should be in .csv format.
Specification
Authorization
Verify the validity of access token
in case of error - 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 = 'medication_registry:write')
return 403 (“Your scope does not allow to access this resource. Missing allowances: medication_registry:write”) in case of invalid scope(s)
Validate request
Check request using schema
Return 422 with the list of validation errors in case validation fails
Check that registerType = 'UPDATE_PROGRAM_MEDICATION_REGISTRY'
Return 422
Invalid register_type
in case validation fails
Check csv_data input according to file structure
Return 422 with the list of validation errors in case validation fails
Check csv_data input file size - csv file with max 30000 lines is allowed.
Return 422
The number of tasks for the job with a sequential execution strategy is limited to 30,000
in case validation fails
File examples:
Service logic
Validate input according to schema
Create job with type
update_medication_registry
For each line of input file create separate task of job
Each task must validate existing and update entities of program medications registry:
Extract and search program medications by
program_medications.id
from filein case program medication is not found - return
FAILED
task status with error ('Program medication <program_medication.id> does not exist')in case program medication is found - update the record with the rest of the values:
Attribute | Source and Logic | Type and Constraints | O/M |
---|---|---|---|
id | program_medications.id | uuid | M |
medication_request_allowed | program_medications.medication_request_allowed | bool | M |
care_plan_activity_allowed | program_medications.care_plan_activity_allowed | bool | M |
inserted_by | user_id, from token | uuid | M |
updated_by | user_id, from token | uuid | M |
inserted_at | now(), auto | timestamp | M |
updated_at | now(), auto | timestamp | M |
reimbursement.reimbursement_amount | program_medication.reimbursement.reimbursement_amount | float8 in jsonb | M |
reimbursement.percentage_discount | program_medication.reimbursement.percentage_discount | float8 in jsonb | M |
wholesale_price | program_medications.wholesale_price | float8 | O |
consumer_price | program_medications.consumer_price | float8 | O |
reimbursement_daily_dosage | program_medications.reimbursement_daily_dosage | float8 | O |
estimated_payment_amount | program_medications.estimated_payment_amount | float8 | O |
start_date | program_medications.start_date | date | O |
end_date | program_medications.end_date | date | O |
registry_number | program_medications.registry_number | varchar(255) | O |
max_daily_dosage | program_medication.max_daily_dosage | float | O |
package_qty_divisible | program_medication.package_qty_divisible | bool | M |
Return job identifier with result.
ЕСОЗ - публічна документація