Purpose
This WS allows to update existing medication program participant
Key points
This is a graphQl method used in Administration panel only
...
Only authenticated and authorized NHS employee with
...
appropriate scope can update a Program medication.
Specification
Page Properties |
---|
Expand |
---|
Code Block |
---|
Link | graphQl method | Посилання на Apiary або Swagger | https://uaehealthapi.docs.apiary.io/#reference/internal.-nhs-admin/program-medications/update-program-medication | Resource | graphQl method | Посилання на ресурс, наприклад: /api/persons/create | Scope | program_medication:write | Scope для доступу | Components | API paragraph not found | Зазначається перелік бізнес компонентів, які використовують цей метод, наприклад: ePrescription Components | Drugs and Program medications | Microservices | API paragraph not found | Перелік мікросервісів, які використовує метод API, наприклад: Auth, ABAC | Protocol type | API paragraph not found | Тип протоколу, який використовується запитом, наприклад: SOAP | REST | Request type | API paragraph not found | Тип запиту API, наприклад: GET, POST, PATCH…REST | Sync/Async | API paragraph not found | Метод є синхронним чи асинхронним? |
|
Logic
Update params submitted on input in the program medication entity. Also, set:
updated_by = current user (from token)
updated_at = current date and time.
Preconditions
API paragraph not found
Global and configurable parameters
API paragraph not found
Input parameters
API paragraph not found
Filters
API paragraph not found
Dictionaries
API paragraph not found
GraphQl Specification
Sync | Public/Private/Internal | Internal. NHS Admin |
|
Expand |
---|
title | Specification for updateProgramMedication |
---|
|
Code Block |
---|
"Updates a single `ProgramMedication` using its globally unique ID and a patch."
updateProgramMedication(
input: UpdateProgramMedicationInput!
): UpdateProgramMedicationPayload
|
Code Block |
---|
"""
Input for `updateProgramMedication` mutation.
User must have a scope **program_medication:write**
"""
input UpdateProgramMedicationInput {
"The ID of an object."
id: ID!
"Whether `ProgramMedication` is active or not?"
isActive: Boolean
"Whether requesting medications allowed for the `ProgramMedication` or not?"
medicationRequestAllowed: Boolean
"Whether creating care plan activity allowed for the `ProgramMedication` or not?"
medicationCarePlanActivityAllowed: Boolean!
"Reimbursement information."
reimbursement: UpdateReimbursementInput
"Start date of action for this entry"
startDate: Date
"End date for this entry"
endDate: Date
"General registry identifier"
registryNumber: String
"Reimbursement daily dosage"
reimbursementDailyDosage: Float
"Consumer price"
consumerPrice: Float
"Wholesale price"
wholesalePrice: Float
"Estimated payment amount"
estimatedPaymentAmount: Float
}
|
Code Block |
---|
"""
Input for `Reimbursement` of `updateProgramMedication` mutation.
"""
input UpdateReimbursementInput {
"Amount to reimburse for medication package by `MedicalProgram`."
reimbursementAmount: Float
"Percentage to reimburse for medication package by `MedicalProgram`."
percentageDiscount: Float
}
"""
Return type for `updateProgramMedication` mutation.
"""
type UpdateProgramMedicationPayload {
"Updated `ProgramMedication`."
programMedication: ProgramMedication
}
|
Code Block |
---|
"""
Program Medication linkes medication and medical program.
In order to obtain details user must have a scope **program_medication:read**
"""
type ProgramMedication implements Node {
"The ID of an object."
id: ID!
"Primary key identifier from the database."
databaseId: UUID!
"MedicalProgram."
medicalProgram: MedicalProgram!
"Medication"
medication: Medication!
"Reimbursement information."
reimbursement: Reimbursement!
"Factory gate price for package of medications"
wholesalePrice: Float
"Consumer price for package of medications"
consumerPrice: Float
"Reimbuersement amount for recommended daily dosage of medication"
reimbursementDailyDosage: Float
"The estimatied amount which patient should pay for package of medications after reimbursement"
estimatedPaymentAmount: Float
"Start date of action for this entry"
startDate: Date
"End date for this entry"
endDate: Date
"General registry identifier"
registryNumber: String
"Whether `ProgramMedication` is active or not?"
isActive: Boolean!
"Whether requesting medications allowed for the `ProgramMedication` or not?"
medicationRequestAllowed: Boolean!
"Whether creating care plan activity allowed for the `ProgramMedication` or not?"
medicationCarePlanActivityAllowed: Boolean!
"Date and time when record was inserted"
insertedAt: DateTime!
"Date and time when record was updated"
updatedAt: DateTime!
}
"""
Reimbursement information for current program medication.
"""
type Reimbursement {
"Type of reimbursement"
type: ReimbursementType!
"Amount to reimburse for medication package by `MedicalProgram`."
reimbursementAmount: Float
"Percentage to reimburse for medication package by `MedicalProgram`."
percentageDiscount: Float
} |
|
Logic
Update params submitted on input in the program medication entity. Also, set:
updated_by = current user (from token)
updated_at = current date and time
Authorize
Verify the validity of access token
Verify that token is not expired
Check user scopes in order to perform this action (scope = 'program_medication:write')
API paragraph not found
Request data validation
Validate legal entity
Extract client_id from token.
Check client scopes in order to perform this action (scope = 'program_medication:write')
Check legal entity type (type = NHS)
Validate medication
Get medication by program_medications.medication_id
...
Check medication is_active = true
in case of error - return 409 ('Medication is not active')
...
Validate request
Check program medication id exists in DB
in case of error - return 404 ('not_found')
...
If medicationRequestAllowed submitted, than check program medication is_active = true
in case of error - return 409 ('To allow medication request firstly enable program medication')
If medicationCarePlanActivityAllowed submitted, than check program medication is_active = true
in case of error - return 409 ('To allow create care plan activity firstly enable program medication')
...
If is_active submitted as false to deactivate program medication, than check medication_request_allowed = false
in case of error - return 409 ('To deactivate medication brand within the program firstly disable medical_request_allowed')
...
if reimbursement structure submitted, than check program medication is_active = true
in case of error - return 409 ('To update reimbursement firstly enable program medication')
...
Processing
API paragraph not found
Response structure
API paragraph not found
Post-processing processes
...
HTTP status codes
Page Properties |
---|
HTTP status code | Message | What caused the error |
---|
401401 | Invalid access token | | 403403 | | | 404 | not_found | Check program medication id exists in DB failed | 409 | Medication is not active To allow medication request firstly enable program medication To allow create care plan activity firstly enable program medication To deactivate medication brand within the program firstly disable medical_request_allowed To update reimbursement firstly enable program medication
|
|
Backward compatibility
...