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