Versions Compared

Key

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

Status


Specification

DONE

Apiary

DONE

JSON Schema request

ABSENT

JSON Schema response
SPECS


Purpose

This WS is designed to return Program_medications detail.

APIary

Get Program medications by id                                               

Input parameters (filters)

  • id 

Logic WS

  1. Verify the validity of access token
  2. Check user scopes in order to perform this action (scope = 'program_medications:read')

Validate PK Medication

Purpose validation: Check on existing record for the participant (Medication within the Medical program)

  1. Check exist  participant "Program_medications" by $.id

    1. if invalid - return 404 error (message: "ID for Medication linked with the Medical program is not found!")

Validate status

Purpose validation:  Participant (medication within the program) should be active (is_active == TRUE) 

  1. Validate `is_active` == TRUE
    1. if invalid  - return 409 eror (message: "Participant should be active!")

Logic WS

  1. Verify the validity of access token
  2. Check user scopes in order to perform this action (scope = 'program_medications:read')
  3. Search Program_medications by filters in payload

    
    


    SELECT  pr.id
          ,mp.name as medical_program_name
          ,med.name as medication_name
          ,med.form
          ,med.manufacturer 
          ,INNM.name as innm_name
          ,pr.reimbursement
          ,pr.medication_id
          ,pr.medical_program_id
          ,pr.is_active 
          ,pr.medical_request_allowed
          ,INNM.id as innm_id
          ,innm.dosage
          ,innm.form
          ,med.dosage
    FROM program_medications pr
        INNER JOIN medical_programs mp 
                ON pr.medical_program_id = mp.id
                AND mp.is_active = TRUE 
        INNER JOIN medications med
                ON pr.medication_id = MED.id
                AND MED.is_active = TRUE
                AND MED.type = 'MEDICATION'
                AND MED.ingredients.is_active_substance = TRUE
        INNER JOIN medications INNM
                ON MED.ingredients.id = INNM.id
                AND INNM.is_active = TRUE
                AND INNM.type = 'INNM'
    WHERE 1=1
             AND (PR.medical_program_id = $.medical_program_id OR $.medical_program_id IS NULL)
        AND (mp.name LIKE `%$.medical_program_name%` OR $.name IS NULL)   
        AND (INNM.id = $.innm_id OR $.innm_id IS NULL)
        AND (INNM.name LIKE `%$.innm_name%` OR $.innm_name IS NULL)
        AND  (PR.medication_id = $.id OR $.id IS NULL
        AND (med.name LIKE `%$.medication_name%` OR $.medication_name IS NULL)
        


Prepare & return response data structure

  1. Fill response WS data structure 
  2. Validate response using JSON schemas (!!! TBD)
    1. Return 422 with list of validation errors in case validation fails (422 EView)