Мета
Даний веб-сервіс WS розроблений, щоб дозволити співробітнику з відповідними скоупами здійснювати пошук медичних виробів.
Ключові положення
Це квері метод GraphQL використовується тільки в адміністративній панелі.
Тільки автентифіковані та авторизовані співробітники з відповідним скоупом можуть здійснювати пошук.
Користувач може профільтрувати перелік по пошуковим параметрам.
Специфікація
Expand |
---|
|
Code Block |
---|
| "Reads and enables pagination through a set of `DeviceDefinition`."
deviceDefinitions(
"A condition to be used in determining which values should be returned by the collection."
filter: DeviceDefitinionFilter
"The method to use when ordering collection items."
orderBy: DeviceDefitinionOrderBy
"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
): DeviceDefinitionConnection! |
|
Expand |
---|
title | deviceDefinitions.graphql |
---|
|
Code Block |
---|
| """
DeviceDefitinion filter.
"""
input DeviceDefitinionFilter {
"Primary key identifier from the database."
databaseId: UUID
"Device name."
deviceNames: DeviceDefinitionName
"is_active status."
isActive: Boolean
"A classification or risk class of the device model. The value should be present in the `device_classification_type` dictionary."
classificationType: String
"Name of device manufacturer."
manufacturerName: String
"The catalog or model number for the device for example as defined by the manufacturer."
modelNumber: String
}
"""
Methods to use when ordering `DeviceDefitinion`.
"""
enum DeviceDefitinionOrderBy {
"Sort by classification_type in ascending order."
CLASSIFICATION_TYPE_ASC
"Sort by classification_type in descending order."
CLASSIFICATION_TYPE_DESC
"Sort by inserted_at in ascending order."
INSERTED_AT_ASC
"Sort by inserted_at in descending order."
INSERTED_AT_DESC
"Sort by model_number in ascending order."
MODEL_NUMBER_ASC
"Sort by model_number in descending order."
MODEL_NUMBER_DESC
}
"""
A connection to a list of `DeviceDefinition` items.
"""
type DeviceDefinitionConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of nodes."
nodes: [DeviceDefinition]
"A list of edges."
edges: [DeviceDefinitionEdge]
}
"""
An edge in a connection of `DeviceDefinition`.
"""
type DeviceDefinitionEdge {
"The item at the end of the edge."
node: DeviceDefinition!
"A cursor for use in pagination."
cursor: String!
}
"""
A component part of medication. User must have a scope **device_definition:read**
"""
type DeviceDefinition implements Node {
"The ID of an object."
id: ID!
"Primary key identifier from the database."
databaseId: UUID!
"Device identifier in external system."
externalId: String
"Device names."
deviceNames: [DeviceName]!
"A classification or risk class of the device model. The value should be present in the `device_classification_type` dictionary."
classificationType: String!
"Description of the device."
description: String
"Name of device manufacturer"
manufacturerName: String!
"Country of manufacture. The value should be present in the `COUNTRY` dictionary."
manufacturerCountry: String!
"The catalog or model number for the device for example as defined by the manufacturer."
modelNumber: String!
"The part number or catalog number of the device."
partNumber: String
"A code that defines the specific type of packaging. The value should be present in the `device_definition_packaging_type` dictionary."
packagingType: String!
"The number of items contained in the package."
packagingCount: Int!
"Unit of measurement. The value should be present in the `DEVICE_UNIT` dictionary."
packagingUnit: String!
"Device notes and comments."
note: String
"Array of device properties."
properties: [DeviceDefinitionProperty]
"Reference to parent device definition."
parentId: UUID
"is_active status."
isActive: Boolean!
"Date and time when record was inserted"
insertedAt: DateTime!
"Date and time when record was updated"
updatedAt: DateTime!
}
"""
A component part of DeviceDefinition.
"""
type DeviceName implements DeviceDefinition {
"Device name type. The value should be present in the `device_name_type` dictionary."
type: String!
"Device name."
name: String!
}
"""
A component part of DeviceDefinition.
"""
type DeviceDefinitionProperty implements DeviceDefinition {
"Device property type. The value should be present in the `device_properties` dictionary."
type: String!
"Device property value in integer format."
valueInteger: Int
"Device property value in string format."
valueString: String
"Device property value in boolean format."
valueBoolean: Boolean
"Device property value in decimal format."
valueDecimal: Float
} |
|
Авторизація
Перевірити валідність токену доступу
Перевірити, що токен дійсний
Перевірити скоупи користувача на можливість виконання даної дії (scope = 'device_definition:read')
Перевірити юридичну особу
Отримати client_id з токену.
Перевірити статус юридичної особи (status = ACTIVE)
Перевірити тип клієнта (type = NHS)
Сервісна логіка
Отримати всі записи з таблиць device_definitions та device_definition_names в базі даних PRM
Задіяти додаткові пошукові параметри (пов'язані за допомогою логічного І):
databaseId - здійснити пошук по device_definitions.id (використовуючи виключне співпадіння з =
operator)
deviceNames.type - здійснити пошук по device_definition_names.type (використовуючи виключне співпадіння з =
operator )
deviceNames.name - device_definition_names.name (використовуючи порівняння like
, нечутливий до регістру)
isActive - здійснити пошук по device_definitions.is_active (використовуючи виключне співпадіння з =
operator)
classificationType - пошу по device_definitions.classification_type (використовуючи виключне співпадіння з =
operator)
manufacturerName - пошук по device_definitions.manufacturer_name (використовуючи порівння like
, нечутливий до регістру)
modelNumber - пошук по device_definitions.model_number (використовуючи порівняння like
, нечутливий до регістру)
Використовувати опційний порядок
якщо не передано $.orderBy
- відсортувати записи по полю inserted_at
в спадаючому порядку.
Відобразити відповідь у відповідності до специфікації.