ЕСОЗ - публічна документація

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Специфікація

 Click here to expand...
"""
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
}

Ціль

Даний веб-сервіс розроблений для створення нової медичної програми.

Логіка веб-сервісу

Авторизація

  1. Перевірити валідність токену доступу

    1. в разі помилки - згенерувати код відповіді 401

  2. Перевірити скоупи користувача (scope = 'medical_program:write') на можливість виконання даної дії

    1. в разі помилки - згенерувати код відповіді 403

Перевірити запит (JSON schema)

  1. Перевірити запит, використовуючи схему JSON (TBD):

    1. Повернути код 422 зі списком помилок валідації в разі помилки валідації (422 EView)

Створення нової програми

  1. Створити новий запис в Medical_programs 

Назва

Джерело

Тип

По-замовчуванню

M/O

Опис

id


uuid


M

Автогенерація

name


varchar


M


is_active


boolean


M


type


varchar


M

Довідник: 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

Дозволяє створити рецепт з тим же innm за один період лікування

employee_types_to_create_medication_request

[varchar]

null

O

Дозволяє створити рецепт для відповідного типу співробітників (якщо пусто - всі типи співробітників, які мають скоупи на створення без обмежень). Заповнюється значеннями з довідника EMPLOYEE_TYPE.

Приклад: "DOCTOR, SPECIALIST"

speciality_types_allowed

[varchar]

null

O

Дозволяє створити:

  • рецепт для визначених співробітників $.employees.speciality.speciality(speciality_officio == true) для співробітників з типом SPECIALIST (якщо пусто - всі спеціальності, які мають скоупи на створення рецептів без обмежень). Заповнюється значеннями з довідника SPECIALITY_TYPE (якщо пусто - всі спеціалісти, у яких є скоупи, можуть створити рецепт без обмежень). 

  • первинні призначення плану лікування для вілповідних спеціальностей $.employees.speciality.speciality(speciality_officio == true) працівників. Якщо пусто - всі співробітники, у кого є скоупи, може створити первинне призначення без будь-яких обмежень.

Заповнюється значенням з довідника SPECIALITY_TYPE. Наприклад: ["ENDOCRINOLOGY", "FAMILY_DOCTOR"]

care_plan_required

boolean

false

M

Дозволяє створення рецепту з посиланням на план лікування

skip_employee_validation

boolean

false

M

Дозволяє пропустити всі перевірки співробітників, включаючи обмеження для параметрів employee_types_to_create_medication_request та speciality_types_to_create_medication_request. Тож, кожен користувач, який має скоупи, може створити рецепт

conditions_icd10_am_allowed

[varchar]

null

O

Масив кодів станів з довідника eHealth/ICD10_AM/condition_codes. Наприклад: ["M61.25", "L70.0"]

Дозволяє створити:

  • Запит рецепту зі взаємодією при умові, що основний діагноз повинен відповідати коду в конфігурації. 

  • Первинне призначення.з полем адреси, пов'язані з планом лікуавання, що має коди станів у відповідності до конфігурації.

Якщо відсутня - будь-який ICD10_AM код стану допустимий.

Може бути поєднано з кодами conditions_icpc2_allowed

conditions_icpc2_allowed

[varchar]

null

O

 Масив кодів станів з довідника eHealth/ICPC2/condition_codes. Наприклад: ["R25","R80","L09"]

Дозволяє створити запит рецепту або первинного призначення у відповідності до логіки, яка описана для conditions_icd10_am_allowed

Якщо відсутній - будь-який ICPC2 код стану допустимий.

Може бути поєднано з кодами conditions_icpc2_allowed

medication_request_max_period_day

integer

null

O

Максимальна тривалість періоду (в днях) допустима для рецепту по програмі. Має більший пріорітет в порівнянні з таким же параметром в чарті

providing_conditions_allowed

[varchar]

null

O

Допустимі умови обслуговування для плану лікування при створенні первинного призначення по програмі. Заповнюється значеннями з довідника PROVIDING_CONDITION. Наприклад: ["INPATIENT", "OUTPATIENT"]

medical_program_settings_text


varchar


O

 Коментар при оновленні medical_program_settings

inserted_at


Timestamp: now()


M

Отримати поточну дату-час

inserted_by


Token: user_id


M

Отримати користувача з токену

updated_at


Timestamp: now()


M

Отримати поточну дату-час

updated_by


Token: user_id


M

Отримати користувача з токену



  • No labels