You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
Version 1
Current »
Мета
Даний веб-сервіс WS дозволяє здійснити пошук учасників учасників медичних програм з типом медичного виробу.
Ключові положення
Це метод graphQl, який використовується тільки в адміністративній панелі.
Тільки автентифіковані та авторизовані співробітники NHS з відповідним скоупом можуть здійснити пошук медичних виробів по програмі.
Специфікація
index.graphql
"Reads and enables pagination through a set of `ProgramDevice`."
programDevices(
"A condition to be used in determining which values should be returned by the collection."
filter: ProgramDeviceFilter
"The method to use when ordering collection items."
orderBy: ProgramDeviceOrderBy
"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
): ProgramDeviceConnection!
programDevices.graphql
"""
Fields to filter reimbursement program device in the system.
"""
input ProgramDeviceFilter {
"Primary key identifier from the database."
databaseId: UUID
"Medical program filter."
medicalProgram: MedicalProgramFilter
"is_active status."
isActive: Boolean
"Device request allowed status."
deviceRequestAllowed: Boolean
"Device definition filter."
deviceDefinition: DeviceDefinitionFilter
"Registry number filter."
registryNumber: String
"Type of reimbursement."
reimbursementType: ReimbursementType
"Start date for program device entry."
startDate: DateInterval
"End date for program device entry."
endDate: DateInterval
}
"""
Methods to use when ordering `ProgramDevice`.
"""
enum ProgramDeviceOrderBy {
"Sort by inserted_at in ascending order."
INSERTED_AT_ASC
"Sort by inserted_at in descending order."
INSERTED_AT_DESC
}
"""
A connection to a list of `ProgramDevice` items.
"""
type ProgramDeviceConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of nodes."
nodes: [ProgramDevice]
"A list of edges."
edges: [ProgramDeviceEdge]
}
"""
An edge in a connection of `ProgramDevice`.
"""
type ProgramDeviceEdge {
"The item at the end of the edge."
node: ProgramDevice!
"A cursor for use in pagination."
cursor: String!
}
"""
Program Device linkes device definition and medical program.
In order to obtain details user must have a scope **program_device:read**
"""
type ProgramDevice implements Node {
"The ID of an object."
id: ID!
"Primary key identifier from the database."
databaseId: UUID!
"Medical program."
medicalProgram: MedicalProgram!
"Device definition."
deviceDefinition: DeviceDefinition!
"Reimbursement information."
reimbursement: Reimbursement!
"Wholesale selling price per package."
wholesalePrice: Float
"Retail price per package."
consumerPrice: Float
"The daily count of the device definition to be compensated."
reimbursementDailyCount: Int
"The amount of surcharge for packaging."
estimatedPaymentAmount: Float
"Date of configuration start."
startDate: Date!
"Date of configuration end."
endDate: Date
"Number (version) of reimbursement configuration."
registryNumber: String
"Whether `ProgramDevice` is active or not?"
isActive: Boolean!
"Is it allowed to prescribe this device definition?"
deviceRequestAllowed: Boolean!
"Date and time when record was inserted"
insertedAt: DateTime!
"Date and time when record was updated"
updatedAt: DateTime!
"The maximum allowable daily quantity of the device."
maxDailyCount: Int
"Is it allowed to create care plan activity for this device definition?"
carePlanActivityAllowed: Boolean!
}
Авторизація
Перевірити валідність токену доступу
Перевірити, що токен дійсний
Перевірити скоупи користувача на можливість виконання даної дії (scope = 'program_device:read')
Перевірити юридичну особу
Отримати client_id з токену.
Перевірити статус юридичної особи (status = ACTIVE)
Перевірити тип клієнта (type = NHS)
Сервісна логіка
Отримати всі записи з таблиці program_devices в базі даних PRM
Задіяти додаткові пошукові параметри (пов'язані логічним AND):
databaseId - пошук по program_devices.id (використовуючи точне співпадіння з оператором =
)
medicalProgram - задіяти фільтр медичної програми, потім здійснити пошук по program_devices.medical_program_id (використовуючи точне співпадіння з оператором =
)
isActive - пошук по program_devices.is_active (використовуючи точне співпадіння з оператором =
)
deviceRequestAllowed - пошук по program_devices.device_request_allowed (використовуючи точне співпадіння з оператором =
)
deviceDefinition - задіяти фільтр по медичним виробам, потім здійснити пошук по program_devices.device_definition_id (використовуючи точне співпадіння з оператором =
)
registryNumber - здійснити пошук по program_devices.registry_number (використовуючи правило співпадіння like
, нечутливий до регістру)
reimbursementType - здійснити пошук по program_devices.reimbursement_type (використовуючи точне співпадіння з оператором =
)
startDate - здійснити пошук по program_devices.start_date (використовуючи точне співпадіння з оператором between
)
endDate - здійснити пошук по program_devices.end_date (використовуючи точне співпадіння з оператором between
)
Задіясти опційне сортування
якщо не передано $.orderBy
- відсотрувати записи по полю inserted_at
в спадаючому порядку.
Відобразити відповідь у відповідності до специфікації.