Purpose
This WS is designed to create new innm dosage (post).
Specification
Logic
This method is used to create INNM Dosage. Fields descriptions are listed in request Example view.
Request structure
See on Apiary
Example:
Authorize
Verify the validity of access token
Check user scope (scope = 'innm_dosage:write') in order to perform this action
In case error - generate 401 response
Request to process the request using a token in the headers
Headers
Наприклад:
Content-Type:application/json
Authorization:Bearer c2778f3064753ea70de870a53795f5c9
Request data validation
Validate FK
Purpose validation: Check on existing Inmm/Innm dosage in ingredients
For Check exist `Innm` by $.ingredients[].id.
if invalid - return 422 error (message: "Innm in ingredients is not found!")
Validate status
Purpose validation: Id's in ingredients must be active
Invoke GetInnmByID($.ingredients[].id). Check exist any innm.is_active=FALSE.
if exists - return 422 error (message: "Innm in ingredients must be active!")
Validate status ingredients.is_primary
Purpose validation: in ingredients only one item must be is active innm (TRUE)
Calc count() where is_primary=TRUE in ingredients. Check count()=1.
if invalid - return 422 error (message: "One of ingredients must be primary!")
Validate innm duplication
Purpose validation: in ingredients innms can't be duplicated. Innms id has to be unique
Check uniqueness of $.ingredients[].id.
if invalid - return 422 error (message: "Ingredients can't be duplicated")
Validate request
Validate request using JSON schemas (new_medication_type_innm_dosage_schema.json):
Return 422 with list of validation errors in case validation fails (422 EView)
Processing
Create new Medication
Create new record in Medications
Fill data
Destination | Source |
id | |
name | $.name |
type | INNM Dosage |
is_primary | TRUE |
form | $.form |
ingredients | $.ingredients |
container | NULL |
package_qty | NULL |
package_min_qty | NULL |
code_atc | NULL |
manufacturer | NULL |
certificate | NULL |
expired_certificate_at | NULL |
inserted_at | :timestamp |
inserted_by | user_id |
updated_at | :timestamp |
updated_by | user_id |
Create new Ingredients
Save `id` of new Medication into var `med_id`
Create new record in Ingredients from $.ingredients
Delete all Ingredients where parent_id =
Fill data (where `Ing` = $.ingredients)
Destination | Source |
id | |
dosage | Ing.dosage |
parent_id | med_id |
innm_id | Ing.innm_id |
medication_id | NULL |
is_primary | Ing.is_primary |
inserted_at | :timestamp |
inserted_by | user_id |
updated_at | :timestamp |
updated_by | user_id |
Response structure
See on Apiary
Example:
Post-processing processes
API paragraph not found