Versions Compared

Key

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

Ціль 

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

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

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

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

  3. Заборонена група повинна підписуватися цифровим підписом.

  4. Група створює без будь-яких елементів, таких як послуги, коди словників або груп обслуговування.

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

Code Block
languagegraphql
"""
Input for `createForbiddenGroup` mutation.
User must have a scope **forbidden_group:write**
"""
input CreateForbiddenGroupInput {
  "The name of the `ForbiddenGroup`."
  name: String!
  "Reason for creating the `ForbiddenGroup`."
  creationReason: String!
}

"""
Return type for `createForbiddenGroup` mutation.
"""
type CreateForbiddenGroupPayload {
  "Created `ForbiddenGroup`."
  forbiddenGroup: ForbiddenGroup
}

Авторизація

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

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

  • Перевірити, чи термін дії токену не сплив

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

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

    • повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:write”) in case of invalid scope(s)

Перевірити юридичну організацію

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

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

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

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

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

Перевірити цифровий підпис

  • Перевірити, що запит підписано

    • у випадку помилки - повернути 422 (“document must be signed by 1 signer but contains 0 signatures”)

  • Перевірити, що цифровий підпис дійсний

  • Перевірити, що цифровий підпис належить користувачу

    • Перевірити, що ЕДРПОУ з цифрового підпису та party.tax_id співпадають

      • у випадку помилки - повернути 409 (“Signer DRFO doesn't match with requester tax_id“)

Перевірити запит

  • Перевірити name та creation_reason вказані

    • у випадку помилки - повернути 422 ('required property <name/creation_reason> was not present')

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

  1. Збережіть підписаний контент у медіа-сховищі

  2. Зберегти дані до таблиці по forbidden_groups (PRM DB) у відповідності до /wiki/spaces/FORBIDDEN/pages/2087190529