Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Ціль

Даний веб-сервіс дозволяє знаходити групи з панелі адміністратора за допомогою параметрів пошуку. Групи можна знайти за параметрами груп та/або за параметрами елементів.

Ключові моменти

  1. Даний сервіс на graphQl використовується лише з панелі адміністрування.

  2. Тільки авторизований та уповноважений працівник національної служби охорони здоров’я з відповідною областю може здійснювати пошук у заборонених групах.

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

Code Block
languagegraphql
"""
Fields to filter forbidden groups in the system.
"""
input ForbiddenGroupFilter {
  "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
  "Forbidden group service filter"
  forbiddenGroupService: ForbiddenGroupServiceFilter
  "Forbidden group code filter"
  forbiddenGroupCode: ForbiddenGroupCodeFilter
}

"""
Methods to use when ordering `ForbiddenGroup`.
"""
enum ForbiddenGroupOrderBy {
  "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 `ForbiddenGroup` items.
"""
type ForbiddenGroupConnection {
  "Information to aid in pagination."
  pageInfo: PageInfo!
  "A list of nodes."
  nodes: [ForbiddenGroup]
  "A list of edges."
  edges: [ForbiddenGroupEdge]
}

"""
An edge in a connection of `ForbiddenGroup`.
"""
type ForbiddenGroupEdge {
  "The item at the end of the edge."
  node: ForbiddenGroup!
  "A cursor for use in pagination."
  cursor: String!
}

"""
ForbiddenGroup contains details about restricted codes, services and service groups included in medical events.
In order to obtain details user must have a scope **forbidden_group:details**
"""
type ForbiddenGroup implements Node {
  "The ID of an object."
  id: ID!
  "Primary key identifier from the database."
  databaseId: UUID!
  "The name of the `ForbiddenGroup`."
  name: String!
  "The reason the `ForbiddenGroup` was created."
  creationReason: String!
  "The reason the `ForbiddenGroup` was deactivated."
  deactivationReason: String
  "Whether the `ForbiddenGroup` is active or not?"
  isActive: Boolean!
  "Date and time when record was inserted."
  insertedAt: DateTime!
  "Date and time when record was updated."
  updatedAt: DateTime!

  "Services and Service groups wich belong to ForbiddenGroup."
  forbiddenGroupServices(
    "A condition to be used in determining which values should be returned by the collection."
    filter: ForbiddenGroupServiceFilter
    "The method to use when ordering collection items."
    orderBy: ForbiddenGroupServiceOrderBy
    "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
  ): ForbiddenGroupServiceConnection!

  "Codes wich belong to ForbiddenGroup."
  forbiddenGroupCodes(
    "A condition to be used in determining which values should be returned by the collection."
    filter: ForbiddenGroupCodeFilter
    "The method to use when ordering collection items."
    orderBy: ForbiddenGroupCodeOrderBy
    "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
  ): ForbiddenGroupCodeConnection!
}

Авторизація

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

    • у випадку помилки - повернути 401 (“Invalid access token”) in case of validation fails

  • Перевірити, що токен дійсний

    • у випадку помилки - повернути 401 (“Invalid access token”)

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

    • повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:details”) в разі невалідних скоупів

Перевірити юридичну особу

  • Отримати client_id з токену.

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

    • у випадку помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:details”)

  • Перевірити статус юридичної особи (status = ACTIVE)

    • у випадку помилки - повернути 409 ('client_id refers to legal entity that is not active')

Параметри пошуку

Пошук з кількома параметрами виконується відповідно до логічного правила AND.

  1. id. Пошук по forbidden_groups.id (використовується для отримання детальних відомостей про групу)

  2. name. Пошук по forbidden_groups.name 

  3. is_active. Пошук по forbidden_groups.is_active

  4. item_code. Пошук по:

    • services.code (сервіс об'єднання forbidden_group_services)

    • service_groups.code (forbidden_group_services об'єднання service_groups)

    • forbidden_group_codes.code (для довідників)

  5. item_name. Пошук по:

    • services.name (сервіс об'єднання forbidden_group_services)

    • service_groups.name (forbidden_group_services об'єднання service_groups)

    • опис кодів для довідників (forbidden_group_codes fc об'єднання довідників d по fc.system = d.name and fc.code = d.values.code)

  6. item_type (string). Обмежує пошук такими елементами:

    • service - пошук в елементах послуги

    • service_group - пошук по елементам service_group  

    • <system> - пошук по визначеному довіднику. Де <system> є назва довідникаeHealth/ICD10_AM/condition_codeseHealth/ICPC2/actionseHealth/ICPC2/condition_codes або eHealth/ICPC2/reasons 

  7. item_is_active. Пошук по:

    • forbidden_group_services.is_active - для service/service_group

    • forbidden_group_codes.is_active - для dictionaries

Сервісна логіка

Відобразити масив forbidden_groups з вкладеними масивами forbidden_group_codes та forbidden_group_services по параметрам, що співпадають.