...
Page Properties | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Logic
Create new program medication entity: store input into program_medications table (prm). Also, set:
medication_request_allowed = true
is_active = true
inserted_at, updated_at = user_id (from token)
inserted_at, updated_at = current date and time.
Key points
This is a graphQl method used in the Administration panel only.
Only authenticated and authorized NHS employee with an appropriate scope can create a Program medication.
Program medication can be created only for a medical program with type MEDICATION.
GraphQl Specification
Expand | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
Extract client_id from token.
Check client scopes in order to perform this action (scope = 'program_medication:write')
in case of error - return 403 (“Your scope does not allow to access this resource. Missing allowances: program_medication:write”).
Validate request
Check medicalProgramId:
exists in DB
in case of error - return 404 ('not_found')
has type = MEDICATION
in case of error - return 409 ('MedicalProgram type should be MEDICATION')
is_active = true
in case of error - return 409 ('Medical program is not active')
Check start_date < end_date
in case of error - return 422 ('must be earlier than the end date')
Validate reimbursement:
If reimbursement type = FIXED, than reimbursementAmount field required
If reimbursement type = PERCENTAGE, percentageDiscount field required
in case of error - return 422 ('can't be blank')
If percentageDiscount submitted in the reimbursement structure:
Check it’s value in range from 0 to 100
in case of error - return 422 ('expected the value to be <= 100')
Validate medicationId:
Check it is active and it’s type is BRAND
in case of error - return 409 ('Medication is not active')
Validate compliance of INNM_DOSAGE.mr_blank_type of a BRAND to medicalProgram.mr_blank_type:
Check INNM_DOSAGE
There is link of a BRAND to INNM_DOSAGE (in prm.ingredients table) and INNM_DOSAGE exists
in case of error - return 404 ('INNM_DOSAGE of a BRAND not_found')
is_active = true
in case of error - return 409 ('INNM_DOSAGE of a BRAND is not active')
Check compliance of INNM_DOSAGE of a BRAND to medicalProgram
if INNM_DOSAGE.mr_blank_type = medicalProgram.mr_blank_type
(i.eprm.medications.mr_blank_type = prm.medical_programs.mr_blank_type
)in case of error - return 422 ('Dosage form of selected Medication does not comply with mr_blank_type requirement of Medical Program')
Processing
API paragraph not found
...