Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Specification

...

titleSchema
Code Block
"""
Fields to filter medical programs in the system.
"""
input MedicalProgramFilter {
  "Checks for equality with the object’s `databaseId` field."
  databaseId: UUID
  "Checks for matching with the object’s `name` field."
  name: String
  "Checks for equality with the object’s `isActive` field."
  isActive: Boolean
  "Checks for equality with the object’s `type` field."
  type: String
}

"""
Methods to use when ordering `MedicalProgram`.
"""
enum MedicalProgramOrderBy {
  "Orders by the object’s `insertedAt` field in the ascending order."
  INSERTED_AT_ASC
  "Orders by the object’s `insertedAt` field in the descending order."
  INSERTED_AT_DESC
  "Orders by the object’s `name` field in the ascending order."
  NAME_ASC
  "Orders by the object’s `name` field in the descending order."
  NAME_DESC
}

"""
A connection to a list of `MedicalProgram` items.
"""
type MedicalProgramConnection {
  "Information to aid in pagination."
  pageInfo: PageInfo!
  "A list of nodes."
  nodes: [MedicalProgram]
  "A list of edges."
  edges: [MedicalProgramEdge]
}

"""
An edge in a connection of `MedicalProgram`.
"""
type MedicalProgramEdge {
  "The item at the end of the edge."
  node: MedicalProgram!
  "A cursor for use in pagination."
  cursor: String!
}

"""
MedicalProgram contains details about medical program for reimbursement and services.
In order to obtain details user must have a scope **medical_program:read**
"""
type MedicalProgram implements Node {
  "The ID of an object."
  id: ID!
  "Primary key identifier from the database."
  databaseId: UUID!
  "The name of the `MedicalProgram`."
  name: String!
  "Type of the `MedicalProgram`."
  type: String!
  "Whether the `MediaclProgram` is active or not?"
  isActive: Boolean!
  "Date and time when record was inserted."
  insertedAt: DateTime!
  "Date and time when record was updated."
  updatedAt: DateTime!
  "Whether it is possible to create `Medication Request`"
  medicationRequestAllowed: Boolean!
  "Medication request allowed status description"
  medicationRequestAllowedText: String
  "Whether it is possible to create `Medication Dispense`"
  medicationDispenseAllowed: Boolean!
  "Medication dispense allowed status description"
  medicationDispenseAllowedText: String
}

"""
Input for `createMedicalProgram` mutation.
User must have a scope **medical_program:write**
"""
input CreateMedicalProgramInput {
  "The name of the `MedicalProgram`."
  name: String!
  "Type of the `MedicalProgram`. The value should be present in the `MEDICAL_PROGRAM_TYPE` dictionary."
  type: String!
}

"""
Return type for `createMedicalProgram` mutation.
"""
type CreateMedicalProgramPayload {
  "Created `MedicalProgram`."
  medicalProgram: MedicalProgram
}

"""
Input for `updateMedicalProgram` mutation.
User must have a scope **medical_program:write**
"""
input UpdateMedicalProgramInput {
  "The ID of an object."
  id: ID!
  "Whether it is possible to create `Medication Request`"
  medicationRequestAllowed: Boolean
  "Medication request allowed status description"
  medicationRequestAllowedText: String
  "Whether it is possible to create `Medication Dispense`"
  medicationDispenseAllowed: Boolean
  "Medication dispense allowed status description"
  medicationDispenseAllowedText: String
}

"""
Return type for `updateMedicalProgram` mutation.
"""
type UpdateMedicalProgramPayload {
  "Updated `MedicalProgram`."
  medicalProgram: MedicalProgram
}

"""
Input for `deactivateMedicalProgram` mutation.
User must have a scope **medical_program:deactivate**
"""
input DeactivateMedicalProgramInput {
  "The ID of a `MedicalProgram` to deactivate."
  id: ID!
}

"""
Return type for `deactivateMedicalProgram` mutation.
"""
type DeactivateMedicalProgramPayload {
  "Deactivated `MedicalProgram`."
  medicalProgram: MedicalProgram
}

Purpose

This WS is designed to create new medical program.

WS logic

Authorize

  1. Verify the validity of access token

    1. In case error - generate 401 response

  2. Check user scope (scope = 'medical_program:write') in order to perform this action

    1. In case error - generate 403 response

Validate request (JSON schema)

  1. Validate request using JSON schemas (TBD):

    1. Return 422 with list of validation errors in case validation fails (422 EView)

Create new Medical Program

  1. Create new record in Medical_programs 

...

Destination

...

Source

...

Type

...

Default

...

M/O

...

Description

...

id

...

uuid

...

M

...

Autogenerated

...

name

...

varchar

...

M

...

is_active

...

boolean

...

M

...

type

...

varchar

...

M

...

Dictionary: MEDICAL_PROGRAM_TYPE

...

medication_request_allowed

...

boolean

...

M

...

medication_dispense_allowed

...

boolean

...

M

...

medication_request_allowed_text

...

varchar

...

O

...

medication_dispense_allowed_text

...

varchar

...

O

...

medical_program_settings

...

jsonb:

...

skip_mnn_in_treatment_period

...

boolean

...

false

...

M

...

Allow to create medication request with the same innm in one treatment period

...

employee_types_to_create_medication_request

...

varchar

...

null

...

M

...

Allow to create medication request for particular types of employees (if empty - all employee types, which have scopes can create medication request without limitations). Fills with values from EMPLOYEE_TYPE dictionary.

Example: "DOCTOR, SPECIALIST"

...

speciality_types_to_create_medication_request

...

varchar

...

null

...

M

...

Allow to create medication request for particular specialities $.employees.speciality.speciality(speciality_officio == true) of employees with SPECIALIST type (if empty - all specialists, which have scopes can create medication request w/o limitations). Fills with values from SPECIALITY_TYPE dictionary.

Example: "ENDOCRINOLOGY, FAMILY_DOCTOR"

...

care_plan_required

...

boolean

...

false

...

M

...

Allow to create medication request for with reference on care plan

...

set_medical_program_on_medication_dispense

...

boolean

...

false

...

M

...

Allow to set medical program at dispense, if it was not specified on create medication request

...

skip_employee_validation

...

boolean

...

false

...

M

...

Table of Contents

Specification

Expand
titleSchema
Code Block
"""
Fields to filter medical programs in the system.
"""
input MedicalProgramFilter {
  "Checks for equality with the object’s `databaseId` field."
  databaseId: UUID
  "Checks for matching with the object’s `name` field."
  name: String
  "Checks for equality with the object’s `isActive` field."
  isActive: Boolean
  "Checks for equality with the object’s `type` field."
  type: String
}

"""
Methods to use when ordering `MedicalProgram`.
"""
enum MedicalProgramOrderBy {
  "Orders by the object’s `insertedAt` field in the ascending order."
  INSERTED_AT_ASC
  "Orders by the object’s `insertedAt` field in the descending order."
  INSERTED_AT_DESC
  "Orders by the object’s `name` field in the ascending order."
  NAME_ASC
  "Orders by the object’s `name` field in the descending order."
  NAME_DESC
}

"""
A connection to a list of `MedicalProgram` items.
"""
type MedicalProgramConnection {
  "Information to aid in pagination."
  pageInfo: PageInfo!
  "A list of nodes."
  nodes: [MedicalProgram]
  "A list of edges."
  edges: [MedicalProgramEdge]
}

"""
An edge in a connection of `MedicalProgram`.
"""
type MedicalProgramEdge {
  "The item at the end of the edge."
  node: MedicalProgram!
  "A cursor for use in pagination."
  cursor: String!
}

"""
MedicalProgram contains details about medical program for reimbursement and services.
In order to obtain details user must have a scope **medical_program:read**
"""
type MedicalProgram implements Node {
  "The ID of an object."
  id: ID!
  "Primary key identifier from the database."
  databaseId: UUID!
  "The name of the `MedicalProgram`."
  name: String!
  "Type of the `MedicalProgram`."
  type: String!
  "Whether the `MediaclProgram` is active or not?"
  isActive: Boolean!
  "Date and time when record was inserted."
  insertedAt: DateTime!
  "Date and time when record was updated."
  updatedAt: DateTime!
  "Whether it is possible to create `Medication Request`"
  medicationRequestAllowed: Boolean!
  "Medication request allowed status description"
  medicationRequestAllowedText: String
  "Whether it is possible to create `Medication Dispense`"
  medicationDispenseAllowed: Boolean!
  "Medication dispense allowed status description"
  medicationDispenseAllowedText: String
  "Medical program settings"
  medicalProgramSettings: MedicalProgramSettings
  "Medical program settings description"
  medicalProgramSettingsText: String
}

"""
Medical program settings
"""
type MedicalProgramSettings {
  "Skip MNN in treatment period requirement flag"
  skipMnnInTreatmentPeriod: Boolean
  "Care plan requirement flag"
  carePlanRequired: Boolean!
  "Skip employee validation requirement flag"
  skipEmployeeValidation: Boolean
  "Allowed employee types to create medication request"
  employeeTypesToCreateMedicationRequest: [String]
  "Speciality types allowed"
  specialityTypesAllowed: [String]
  "conditions ICD10_AM allowed"
  conditionsIcd10AmAllowed: [String]
  "Conditions ICPC2 allowed"
  conditionsIcpc2Allowed: [String]
  "Maximum length in days of treatment period for `Medication Request` created with the program"
  medicationRequestMaxPeriodDay: Int
  "Providing conditions allowed"
  providingConditionsAllowed: [String]
}

"""
Input for `createMedicalProgram` mutation.
User must have a scope **medical_program:write**
"""
input CreateMedicalProgramInput {
  "The name of the `MedicalProgram`."
  name: String!
  "Type of the `MedicalProgram`. The value should be present in the `MEDICAL_PROGRAM_TYPE` dictionary."
  type: String!
}

"""
Return type for `createMedicalProgram` mutation.
"""
type CreateMedicalProgramPayload {
  "Created `MedicalProgram`."
  medicalProgram: MedicalProgram
}

"""
Input for `updateMedicalProgram` mutation.
User must have a scope **medical_program:write**
"""
input UpdateMedicalProgramInput {
  "The ID of an object."
  id: ID!
  "Whether it is possible to create `Medication Request`"
  medicationRequestAllowed: Boolean
  "Medication request allowed status description"
  medicationRequestAllowedText: String
  "Whether it is possible to create `Medication Dispense`"
  medicationDispenseAllowed: Boolean
  "Medication dispense allowed status description"
  medicationDispenseAllowedText: String
  "Medical program settings"
  medicalProgramSettings: MedicalProgramSettingsInput
  "Medical program settings description"
  medicalProgramSettingsText: String
}

"""
Input for `MedicalProgramSettings` of `updateMedicalProgram` mutation.
"""
input MedicalProgramSettingsInput {
  "Skip MNN in treatment period requirement flag"
  skipMnnInTreatmentPeriod: Boolean
  "Care plan requirement flag"
  carePlanRequired: Boolean!
  "Skip employee validation requirement flag"
  skipEmployeeValidation: Boolean
  "Allowed employee types to create medication request"
  employeeTypesToCreateMedicationRequest: [String]
  "Speciality types allowed"
  specialityTypesAllowed: [String]
  "conditions ICD10_AM allowed"
  conditionsIcd10AmAllowed: [String]
  "Conditions ICPC2 allowed"
  conditionsIcpc2Allowed: [String]
  "Maximum length in days of treatment period for `Medication Request` created with the program"
  medicationRequestMaxPeriodDay: Int
  "Providing conditions allowed"
  providingConditionsAllowed: [String]
}

"""
Return type for `updateMedicalProgram` mutation.
"""
type UpdateMedicalProgramPayload {
  "Updated `MedicalProgram`."
  medicalProgram: MedicalProgram
}

"""
Input for `deactivateMedicalProgram` mutation.
User must have a scope **medical_program:deactivate**
"""
input DeactivateMedicalProgramInput {
  "The ID of a `MedicalProgram` to deactivate."
  id: ID!
}

"""
Return type for `deactivateMedicalProgram` mutation.
"""
type DeactivateMedicalProgramPayload {
  "Deactivated `MedicalProgram`."
  medicalProgram: MedicalProgram
}

Purpose

This WS is designed to create new medical program.

WS logic

Authorize

  1. Verify the validity of access token

    1. In case error - generate 401 response

  2. Check user scope (scope = 'medical_program:write') in order to perform this action

    1. In case error - generate 403 response

Validate request (JSON schema)

  1. Validate request using JSON schemas (TBD):

    1. Return 422 with list of validation errors in case validation fails (422 EView)

Create new Medical Program

  1. Create new record in Medical_programs 

Destination

Source

Type

Default

M/O

Description

id

uuid

M

Autogenerated

name

varchar

M

is_active

boolean

M

type

varchar

M

Dictionary: MEDICAL_PROGRAM_TYPE

medication_request_allowed

boolean

M

medication_dispense_allowed

boolean

M

medication_request_allowed_text

varchar

O

medication_dispense_allowed_text

varchar

O

medical_program_settings

jsonb

null

O

skip_mnn_in_treatment_period

boolean

false

M

Allow to create medication request with the same innm in one treatment period

employee_types_to_create_medication_request

[varchar]

null

O

Allow to create medication request for particular types of employees (if empty - all employee types, which have scopes can create medication request without limitations). Fills with values from EMPLOYEE_TYPE dictionary.

Example: ["DOCTOR", "SPECIALIST"]

speciality_types_allowed

[varchar]

null

O

Allows to create:

  • Medication Request for particular specialities $.employees.speciality.speciality(speciality_officio == true) of employees with SPECIALIST type (if empty - all specialists who have scopes can create medication request w/o limitations). 

  • care plan's Activity for particular specialities $.employees.speciality.speciality(speciality_officio == true) of employees. If empty - all employees who have scopes can create Activity w/o any limitations.

Fills with values from SPECIALITY_TYPE dictionary. For example: ["ENDOCRINOLOGY", "FAMILY_DOCTOR"]

care_plan_required

boolean

false

M

Allow to create medication request for with reference on care plan

skip_employee_validation

boolean

false

M

Allows to skip all employee validations, including restrictions in the employee_types_to_create_medication_request and speciality_types_to_create_medication_request parameters. So, any user who has a scope can create medication request

conditions_icd10_am_allowed

[varchar]

null

O

Array of condition codes from eHealth/ICD10_AM/condition_codes dictionary. For example: ["M61.25", "L70.0"]

Allows to create:

  • Medication Request Request with encounter in context that should have primary diagnosis with code that correspond to config. 

  • Activity with addresses field of related Care plan that should have condition codes that correspond to config.

If absent - any ICD10_AM condition codes allowed.

Can be combined with codes in conditions_icpc2_allowed

conditions_icpc2_allowed

[varchar]

null

O

 Array of condition codes from eHealth/ICPC2/actions dictionary. For example: ["R25","R80","L09"]

Allows to create Medication Request Request or Activity according to the logic as described for conditions_icd10_am_allowed

If absent - any ICPC2 condition codes allowed.

Can be combined with codes in conditions_icpc2_allowed

medication_request_max_period_day

integer

null

O

Maximum period length (in days) allowed for the Medication request with the medical program. Has a precedence over the same chart parameter

providing_conditions_allowed

[varchar]

null

O

 Allowed terms of service for a Care plan to create activity with the medical program. Fills with values from PROVIDING_CONDITION dictionary. For example: ["INPATIENT", "OUTPATIENT"]

medical_program_settings_text

varchar

O

 Comment on update medical_program_settings

inserted_at

Timestamp: now()

M

Get current date-time

inserted_by

Token: user_id

M

Extract user from token

updated_at

Timestamp: now()

M

Get current date-time

updated_by

Token: user_id

M

Extract user from token

...