Versions Compared

Key

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

Purpose

This WS allows to deactivate existing medical program

Key points

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

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

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
}

Authorization

  • Verify the validity of access token

    • 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)

Validate legal entity

  • Extract client_id from token.

  • Check client scopes in order to perform this action (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')

Service logic

For the medical program entity set:

...