Сервіс розроблено для деактивації участників програми з медичного реєстру. Процес використовує сервіси jabba. У відповідності до виконання запиту, job створена і на основі неї створені відповідні задачі. Кожна задача - це один запит на створення сутності з реєстру.
Специфікація
"Deactivates a single `MedicationRegistry`."
deactivateMedicationRegistry(
input: DeactivateMedicationRegistryInput!
): DeactivateMedicationRegistryPayload
"""
Input for `deactivateMedicationRegistry` mutation.
User must have a scope **medication_registry:write**
"""
input DeactivateMedicationRegistryInput {
"Type of register originating medication registry data. The value should be present in the `REGISTER_TYPE` dictionary."
registerType: String!
"Deactivate medication registry reason description."
reasonDescription: String!
"Input file in csv format with medication register."
csvData: Upload!
}
"""
Return type for `deactivateMedicationRegistry` mutation.
"""
type DeactivateMedicationRegistryPayload {
"Created `MedicationRegistryJob`."
medicationRegistryJob: MedicationRegistryJob
}
"""
An object for MedicationRegistryJob.
"""
type MedicationRegistryJob implements Node {
"The ID of an object"
id: ID!
"Primary key identifier from the database"
databaseId: UUID!
"Job name."
name: String
"Medication registry Job status."
status: JobStatus!
"Job execution strategy."
strategy: JobStrategy!
"Date and time when the job starts."
startedAt: DateTime!
"Date and time when the job ends."
endedAt: DateTime
"Tasks within this job."
tasks(
"A condition to be used in determining which values should be returned by the collection."
filter: TaskFilter
"The method to use when ordering collection items."
orderBy: TaskOrderBy
"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
): MedicationRegistryTaskConnection!
"Type of register originating medication registry data. The value should be present in the `REGISTER_TYPE` dictionary."
registerType: String!
"Medication registry job reason description."
reasonDescription: String!
}
"""
A connection to a list of `MedicationRegistryTask` values.
"""
type MedicationRegistryTaskConnection {
"Information to aid in pagination."
pageInfo: PageInfo!
"A list of nodes."
nodes: [MedicationRegistryTask]
"A list of edges."
edges: [MedicationRegistryTaskEdge]
}
"""
Reads and enables pagination through a set of `MedicationRegistryTask`.
"""
type MedicationRegistryTaskEdge {
"The item at the end of the edge."
node: MedicationRegistryTask!
"A cursor for use in pagination."
cursor: String!
}
"""
A child of a `MedicationRegistryJob`, contains the result of task execution.
"""
type MedicationRegistryTask implements Node {
"The ID of an object"
id: ID!
"Primary key identifier from the database"
databaseId: UUID!
"Task name."
name: String
"Task status, is set automatically."
status: TaskStatus!
"Task meta data."
meta: MedicationRegistryTaskMeta
"Date and time when task was executed."
endedAt: DateTime
"Task error."
error: TaskError
"Technical information when task was inserted into the DB."
insertedAt: DateTime!
"Technical information when task was updated in the DB."
updatedAt: DateTime!
}
"""
Metadata of a `MedicationRegistryTask`.
"""
type MedicationRegistryTaskMeta {
"Primary key identifier of an entity from the database."
databaseId: UUID
"Line number of csv file from input."
csvDataLine: Int
}
Авторизація
Перевірити валідність токену доступу
в разі помилки - повернути 401 (“Invalid access token”) в разі невалідних валідацій
Перевірити, що токен дійсний
в разі помилки - повернути 401 (“Invalid access token”)
Перевірити скоупи користувача (scope = 'medication_registry:write') на можливість виконання даної дії
в разі помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: medication_registry:write”)
Перевірити запит
Перевірити запит використовуючи схему
Повернути 422 з переліком помилок валідації в разі їх неуспішності.
Перевірити, що registerType = ‘DEACTIVATE_PROGRAM_MEDICATION_REGISTRY'
Повернути 422 з переліком помилок валідації в разі їх неуспішності.
Перевірити, що reasonDescription заповнено
Повернути 422 з переліком помилок валідації в разі їх неуспішності.
Перевірити вхідний файл у відповідності до структури файлу
Повернути 422 з переліком помилок валідації в разі їх неуспішності.
Перевірити, що ідентифікатори з запиту існують та активні
Повернути 404 з переліком помилок валідації в разі їх неуспішності.
Приклад файлу:
Сервісна логіка
Перевірити вхідні параметри, у відповідності до схеми
Перевірити існуючі та деактивувати сутності участників програм з медичного реєстру:
Отримати участників програми по program_medications.id з файлу та (деактивувати запис) встановити: