Versions Compared

Key

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

Specification

...

Apiary

...

Deactivate Medical program

...

JSON Schema response

...

Status
colourRed
titlespecs

Purpose

This WS  is design to update flags "is_active" for Medical Program.

...

Table of Contents

Purpose

This WS allows deactivating existing medical programs.

Key points

  1. This is a graphQl method used in the Administration panel only.

  2. Only authenticated and authorized NHS employee with an appropriate scope can deactivate a Medical program.

Specification

Page Properties

Link

graphQl method

Посилання на Apiary або Swagger

Resource

graphQl method

Посилання на ресурс, наприклад: /api/persons/create

Scope

API paragraph not found

Scope для доступу

Components

API paragraph not found

Зазначається перелік бізнес компонентів, які використовують цей метод, наприклад: ePrescription

Microservices

API paragraph not found

Перелік мікросервісів, які використовує метод API, наприклад: Auth, ABAC

Protocol type

API paragraph not found

Тип протоколу, який використовується запитом, наприклад: SOAP | REST

Request type

API paragraph not found

Тип запиту API, наприклад: GET, POST, PATCH…

Sync/Async

API paragraph not found

API paragraph not foundМетод є синхронним чи асинхронним?

Logic

For the medical program entity set:

  1. is_active = false

  2. updated_by = current user (from token)

  3. updated_at = current date and time.

Preconditions

API paragraph not found

Global and configurable parameters

API paragraph not found

Input parameters

API paragraph not found

Filters

API paragraph not found

Dictionaries

API paragraph not found

GraphQL Specification

Expand
titledeactivateMedicalProgram
Code Block
  "Deactivates a single `MedicalProgram` using its globally unique ID."
  deactivateMedicalProgram(
    input: DeactivateMedicalProgramInput!
  ): DeactivateMedicalProgramPayload

Code Block
"""
Input for `deactivateMedicalProgram` mutation.
User must have a scope **medical_program:write**
"""
input DeactivateMedicalProgramInput {
  "The ID of a `MedicalProgram` to deactivate."
  id: ID!
}
Code Block
"""
Return type for `deactivateMedicalProgram` mutation.
"""
type DeactivateMedicalProgramPayload {
  "Deactivated `MedicalProgram`."
  medicalProgram: MedicalProgram
}

Authorize

  • Verify the validity of access token

  1. In case error - generate 401 response

...

    • in case of error - return 401 (“Invalid access token”) in case of validation fails.

  • Verify that token is not expired

    • in case of error - return 401 (“Invalid access token”).

  • Check user scopes in order to perform this action (scope = 'medical_program:

...

  • write')

    • return 403 (“Your scope does not allow to access this resource. Missing allowances: medical_program:write”) in case of invalid scope(s).

Headers

Request data validation

Validate legal entity

  • Extract client_id from token.

  • Check client scopes in order to perform this action

...

  1. In case error - generate 403 response

Validate FKs

Purpose validation: Check on active program medication. Only medical program without active program medication can be deactivated. In case on existing active program medication linked with medical program error must be shown.

  1. Check exist `program_medication` by $.medical_program_id=$.id & `is_active`= false 

    1. if invalid - return 409 error (message: "This program has active participants. Only medical programs without participants can be deactivated.")

Validate PK Program Medications

Purpose validation: Check on existing record for Medical program

  1. Check exist `Medical_program` by $.id.

    1. if invalid - return 404 error (message: "Medical program with id={$.id} doesn't exist.")

Validate status

Purpose validation:  Medical program should be active (is_active == TRUE) 

...

Validate `is_active` == TRUE

  1. if invalid  - return 409 error (message: "Medical program is not active and can't be deactivated")

Deactivate Program Medications

Update medical program record by $.id  set values:

...

Destination

...

Source

...

is_active

...

FALSE

...

updated_at

...

:timestamp

...

updated_by

...

user_id

Deactivate Medical Program Provision

For MEDICATION medical program type (according to link).

Deactivate all related active medical program provision entities:

  • set is_active = false

  • set deactivate_reason = AUTO_MEDICAL_PROGRAM_DEACTIVATION 

  • set updated_at, updated by(scope = 'medical_program:write')

    • in case of error - return 403 (“Your scope does not allow to access this resource. Missing allowances: medical_program:write”).

  • Check type = NHS

    • in case of error - return 403 ('You don’t have permission to access this resource').

Validate medical program ID

  1. Check id exists in DB

    1. in case of error - return 404 ('not_found').

Validate related program medications

For each related program medication:

  1. Check it has is_active=true

    1. in case of error - return 409 ('This program has active participants. Only medical programs without participants can be deactivated').

Processing

API paragraph not found

Response structure

API paragraph not found

Post-processing processes

API paragraph not found

HTTP status codes

Page Properties

HTTP status code

Message

What caused the error

401

 Invalid access token

 

403

  • Your scope does not allow to access this resource. Missing allowances: medical_program:write.

  • You don’t have permission to access this resource.

 

404

not_found

Check id exists in DB failed

409

This program has active participants. Only medical programs without participants can be deactivated

Backward compatibility

API paragraph not found