Versions Compared

Key

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

Status

...

DONE

...

DONE

...

ABSENT

...

SPECS

Purpose

This WS is designed to return Program_medications detail.

APIary

Get Program medications by id                                               

Input parameters (filters)

  • id 

Logic WS

...

Table of Contents

Purpose

This WS allows to get single medication program participant.

Specification

Page Properties

Link

https://uaehealthapi.docs.apiary.io/#reference/internal.-nhs-admin/program-medications/get-program-medication-by-id

Resource

/program_medications/{{id}}

Scope

program_medication:read

Components

Drugs and Program medications

Microservices

API paragraph not found

Protocol type

REST

Request type

GET

Sync/Async

Sync

Public/Private/Internal

Internal. NHS Admin

Logic

  1. Get program medication by id.

  2. Render detailed program medication data according to schema.

Key points

  1. This is a graphQl method used in Administration panel only

  2. Only authenticated and authorized NHS employee with an appropriate scope can get a Program medication.

Input parameters

Parameter

Value

Type

Description

Example

id

String

d290f1ee-6c54-4b01-90e6-d701748f0851

GraphQl Specification

Expand
Code Block
"Reads a single `programMedication` using its globally unique ID."
  programMedication(id: ID!): ProgramMedication
 


"""
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!
  "Date and time when record was inserted"
  insertedAt: DateTime!
  "Date and time when record was updated"
  updatedAt: DateTime!
}

Authorize

  • Verify the validity of access token

    • in case of error - return 401 (“Invalid access token”) in case of validation fails.

  • Verify that token is not expired

    • in case of error - return 401 (“Invalid access token”).

  • Check user scopes in order to perform this action (scope = 'program_

...

  • medication: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

...

    • return 403 (“Your scope does not allow to access this resource. Missing allowances: program_medication:read”) in case of invalid scope(s).

Headers

  • Content-Type:application/json

  • Authorization:Bearer c2778f3064753ea70de870a53795f5c9

Request data validation

Validate legal entity

  • Extract client_id from token.

  • Check client scopes in order to perform this action (scope = 'program_

...


...

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 as innm_dosage
      ,innm.form as innm_form
      ,innm.is_active_substance
      ,med.dosage as med_dosage
      ,med.is_active_substance
      ,sub.id as substances_id
      ,sub_name as substances_name
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'    
    INNER JOIN substances sub
            ON INNM.ingredients.id = sub.id
            AND sub.is_active = TRUE
WHERE pr.id = $.id 
    

Prepare & return response data structure

...

  • medication:read')

Search Program_medications by filters in payload

    • in case of error - return 403 (“Your scope does not allow to access this resource. Missing allowances: program_medication:read”).

Validate params

  1. Validate program medication id exists in DB

    1. in case of error - return 404 ('not_found').

Response structure

See on Apiary

Expand
titleRequest example
Code Block
{
  "meta": {
    "code": 200,
    "url": "https://example.com/resource",
    "type": "object",
    "request_id": "6617aeec-15e2-4d6f-b9bd-53559c358f97#17810"
  },
  "data": {
    "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
    "medication": {
      "id": "09b2bffb-699a-43c0-bc9a-5066d9b9b5a8",
      "name": "Амідарон",
      "manufacturer": {
        "name": "ПАТ \"Київський вітамінний завод\"",
        "country": "UA"
      },
      "code_atc": [
        "М01АЕ01",
        "C01BD01"
      ],
      "form": "PILL",
      "container": {
        "numerator_unit": "PILL",
        "numerator_value": 1,
        "denumerator_unit": "PILL",
        "denumerator_value": 1
      },
      "package_qty": 30,
      "package_min_qty": 10,
      "daily_dosage": "12",
      "certificate": "UA/4514/01/01",
      "certificate_expired_at": "2021-02-09",
      "ingredients": [
        {
          "id": "1349a693-4db1-4a3f-9ac6-8c2f9e541982",
          "name": "Амідарон",
          "dosage": {
            "numerator_unit": "MG",
            "numerator_value": 200,
            "denumerator_unit": "PILL",
            "denumerator_value": 1
          },
          "is_primary": true
        }
      ],
      "is_active": true,
      "inserted_at": "2017-04-20T19:14:13Z",
      "inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e",
      "updated_at": "2017-04-20T19:14:13Z",
      "updated_by": "2922a240-63db-404e-b730-09222bfeb2dd",
      "drlz_sku_id": "0404466792737630283703997321"
    },
    "medical_program": {
      "id": "c7d52544-0bd4-4129-97b0-2d72633e0490",
      "name": "Доступні ліки",
      "medical_program_settings": {
        "care_plan_required": true,
        "employee_types_to_create_medication_request": [
          "SPECIALIST",
          "DOCTOR"
        ],
        "skip_mnn_in_treatment_period": true,
        "skip_employee_validation": true,
        "speciality_types_allowed": [
          "ENDOCRINOLOGY",
          "PEDIATRIC_NEUROLOGY"
        ],
        "conditions_icd10_am_allowed": [
          "A00.0",
          "A00.1"
        ],
        "conditions_icpc2_allowed": [
          "A01",
          "A02"
        ],
        "providing_conditions_allowed": [
          "INPATIENT",
          "OUTPATIENT"
        ],
        "medication_request_max_period_day": 90,
        "skip_medication_request_employee_declaration_verify": true,
        "skip_medication_request_legal_entity_declaration_verify": true,
        "multi_medication_dispense_allowed": true,
        "skip_medication_dispense_sign": true,
        "medication_request_notification_disabled": true,
        "skip_contract_provision_verify": true,
        "medication_dispense_period_day": 90,
        "medical_program_change_on_dispense_allowed": true,
        "patient_categories_allowed": [
          "insulin_1",
          "insulin_2"
        ],
        "license_types_allowed": [
          "PHARMACY",
          "PHARMACY_DRUGS"
        ]
      },
      "medical_program_settings_text": "Some text",
      "is_active": true,
      "medication_dispense_allowed": true,
      "medication_dispense_allowed_text": "Some text",
      "medication_request_allowed": true,
      "medication_request_allowed_text": "Some text",
      "type": "MEDICATION",
      "funding_source": "NHS",
      "mr_blank_type": "F-1",
      "inserted_at": "2017-04-20T19:14:13Z",
      "inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e",
      "updated_at": "2017-04-20T19:14:13Z",
      "updated_by": "2922a240-63db-404e-b730-09222bfeb2dd"
    },
    "medication_request_allowed": true,
    "reimbursement": {
      "type": "fixed",
      "reimbursement_amount": 450
    },
    "wholesale_price": "148.50",
    "consumer_price": "150.00",
    "daily_dosage": "200",
    "reimbursement_daily_dosage": "10.4858",
    "estimated_payment_amount": "34.50",
    "is_active": true,
    "inserted_at": "2017-04-20T19:14:13Z",
    "inserted_by": "e1453f4c-1077-4e85-8c98-c13ffca0063e",
    "updated_at": "2017-04-20T19:14:13Z",
    "updated_by": "2922a240-63db-404e-b730-09222bfeb2dd"
  }
}

HTTP status codes

Page Properties

HTTP status code

Message

What caused the error

200

 401

 Invalid access token

 

 403

 Your scope does not allow to access this resource. Missing allowances: program_medication:read

 

404

not_found

Program medication id exists in DB validation failed