Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Status

  • Specification 
    Status
    colourRed
    titlespecs
  • Apiary 
    Status
    colourRed
    titlespecs

...

  • name
  • type
  • manufacturer (object)
  • code_atc
  • form
  • container info
  • package_qty
  • package_min_qty
  • certificate
  • expired_certificate_at
  • ingredients (array)

Authorize

  1. Verify the validity of access token
  2. Check user scope (scope = 'medication:write') in order to perform this action
    1. In case error - generate 401 response

Validate request (JSON schema)

  1. Validate request using JSON schemas:
    1. Return 422 with list of validation errors in case validation fails (422 EView)
Type (Dictionary: MEDICATION_TYPESchema link
INNMnew_medication_type_innm_schema.json
MEDICATIONnew_medication_type_medication_schema.json

Validate FK 

Purpose validation: Check on existing Substance/Innm in ingredients 

  1. For $.type = INNM - Check exist `Substance` by $.ingredients[].id.

    1. if invalid - return 422 error (message: "Substance in ingredients is not found!")

  2. For $.type = MEDICATION - Check exist `Medications` by $.ingredients[].id.

    1. if invalid - return 422 error (message: "INNM in ingredients is not found!")

...

Purpose validation: For $.type = MEDICATION - Denumerator unit from Ingredients.dosage  must be equal Numerator unit from Container. See examples: Medications model  

  1. For $.type = MEDICATION - Check exist any  ($.ingredients[].dosage.denumerator_unit != $.container.numerator_unit).

    1. if invalid - return 422 error (message: "Denumerator unit from Dosage ingredients must be equal Numerator unit from Container medication!")

Validate multiplicity

Purpose validation:  For $.type = MEDICATION - Package_qty for container_dosage must have multiplicity package_min_qty.  Result (Mod or % operator) must = 0 .

  1. For $.type = MEDICATION - Vaildate multiplicity (Mod == 0) $.package_qty Mod $.package_min_qty == 0
    1. if result NOT 0 - return 409 eror (message: "Only a multiplicity package quantity for the minimum package quantity medication!")

Create new Medication

  1. Create new record in Medications 
  2. Fill data 
inserted
Destination
Source
id
name$.name
is_active TRUE
start_at form$.start_at form
route ingredients$.routeingredients
container_dosage $.container_dosage
package_qty$.package_qty
package_min_qty$.package_min_qty
code_ATX atc$.code_ATX atc
manufacturer_name_country$.manufacturer_name_country
certificate $.certificate
expired_certificate_date at$.expired_certificate_date _at
:timestampinserted_byuser_idupdated_at:timestamp
updated_byuser_id

...

...

Destination
Source
id
medication_id medication.id
innm_id $.ingredients[].innm_id
is_active_substance $.ingredients[].is_active_substance
dosage $.ingredients[].dosage
inserted_at:timestampinserted_byuser_id
updated_at:timestamp
updated_byuser_id

...

Prepare & return response data structure

  1. Fill response WS data structure (Similar input parametrs)Additional  
  2. id
  3. container_dosage.description
  4. ingredients.dosage.description
  5. ingredients.innm infostructure 
  6. Validate response using JSON schemas (!!! TBD)
    1. Return 422 with list of validation errors in case validation fails (422 EView)