Даний метод WS дозволяє здійснити пошук медичної програми.
Основні положення
Це метод на graphQl, який використовується тільки в панелі адміністрування НСЗУ.
Тільки автентифіковані та авторизовані співробітники НСЗУ з відповідним скоупом можуть здійснити пошук медичної програми.
Специфікація
"Reads and enables pagination through a set of `MedicalProgram`."
medicalPrograms(
"A condition to be used in determining which values should be returned by the collection."
filter: MedicalProgramFilter
"The method to use when ordering collection items."
orderBy: MedicalProgramOrderBy
"Read all values in the set after (below) this cursor."
after: String
"Read all values in the set before (above) this cursor."
before: String
"Only read the first _n_ values of the set."
first: Int
"Only read the last _n_ values of the set."
last: Int
): MedicalProgramConnection!
"""
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
"Checks for equality with the object’s `fundingSource` field."
fundingSource: String
}
"""
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]
}
"""
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
"Funding source of the `MedicalProgram`."
fundingSource: String!
}
"""
Medical program settings. Described at https://edenlab.atlassian.net/wiki/spaces/EH/pages/3132620836/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 from `EMPLOYEE_TYPE` dictionary to create medication request"
employeeTypesToCreateMedicationRequest: [String]
"Speciality types allowed. From `SPECIALITY_TYPE` dictionary"
specialityTypesAllowed: [String]
"conditions ICD10_AM allowed. From `eHealth/ICD10_AM/condition_code` dictionary"
conditionsIcd10AmAllowed: [String]
"Conditions ICPC2 allowed. From `eHealth/ICPC2/condition_code` dictionary"
conditionsIcpc2Allowed: [String]
"Maximum length in days of treatment period for `Medication Request` created with the program"
medicationRequestMaxPeriodDay: Int
"Providing conditions allowed. From `PROVIDING_CONDITION` dictionary"
providingConditionsAllowed: [String]
"Skip declaration verification for employee on create `Medication Request`"
skipMedicationRequestEmployeeDeclarationVerify: Boolean
"Skip declaration verification for legal entity on create `Medication Request`"
skipMedicationRequestLegalEntityDeclarationVerify: Boolean
"Allows multi dispense for `Medication Request`"
multiMedicationDispenseAllowed: Boolean
"Allows to process `Medication Dispense` without digital sign"
skipMedicationDispenseSign: Boolean
"Disables patient notification on operations with `Medication Request`"
medicationRequestNotificationDisabled: Boolean
"Specifies medication dispense period in days"
medicationDispensePeriodDay: Int
"Skip Contract and Medical Program Provision verification in medication dispense flow"
skipContractProvisionVerify: Boolean
"Allows to change medical program on create `Medication Dispense`"
medicalProgramChangeOnDispenseAllowed: Boolean
"Patient category requirement flag"
patientCategoryRequired: Boolean!
"Patient categories allowed. From `eHealth/clinical_impression_patient_categories` dictionary"
patientCategoriesAllowed: [String]
}
Авторизація
Перевірити валідність токену доступу
в разі помилки - повернути 401 (“Invalid access token”) в разі неуспішної валідації
Перевірити, що токен дійсний
в разі помилки - повернути 401 (“Invalid access token”)
Перевірити скоупи користувача на можливість виконання даної дії (scope = 'medical_program:read')
повернути 403 (“Your scope does not allow to access this resource. Missing allowances: program_medication:read”) в разі невалідних скоупів
Перевірити юридичну особу
Отримати client_id з токену.
Перевірити скоупи користувача на можливість виконання даної дії (scope = 'medical_program:read')
в разі помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: medical_program:read”)
Пошукові параметри
databaseId. UUID, ідентифікатор медичної програми
name. Текстовий, назва програми
isActive. Логічний, статус програми
type. Текстовий, тип програми. Дозволені значення: MEDICATION, SERVICE
Сервісна логіка
Отримати перелік всіх програм відфільтрованих по параметрам.
Відобразити перелік медичних програм з даними у відповідності до схеми.