ЕСОЗ - публічна документація

RC [WP] Search Groups of Diagnoses by params_EN

Purpose

This WS allows to find Groups of Diagnoses in Admin panel using search params. Groups can be found by group params and/or by item params.

Key points

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

  2. Only authenticated and authorized NHS employee with appropriate scope can search Groups of Diagnoses.

Specification

"Reads a single `DiagnosesGroup` using its globally unique ID." diagnosesGroup(id: ID!): DiagnosesGroup
"Reads and enables pagination through a set of `DiagnosesGroup`." diagnosesGroups( "A condition to be used in determining which values should be returned by the collection." filter: DiagnosesGroupFilter "The method to use when ordering collection items." orderBy: DiagnosesGroupOrderBy "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 ): DiagnosesGroupConnection!
""" Fields to filter diagnoses groups in the system. """ input DiagnosesGroupFilter { "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 "Diagnoses group code filter" diagnosesGroupCode: DiagnosesGroupCodeFilter } """ Methods to use when ordering `DiagnosesGroup`. """ enum DiagnosesGroupOrderBy { "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 `DiagnosesGroup` items. """ type DiagnosesGroupConnection { "Information to aid in pagination." pageInfo: PageInfo! "A list of nodes." nodes: [DiagnosesGroup] "A list of edges." edges: [DiagnosesGroupEdge] } """ An edge in a connection of `DiagnosesGroup`. """ type DiagnosesGroupEdge { "The item at the end of the edge." node: DiagnosesGroup! "A cursor for use in pagination." cursor: String! } """ DiagnosesGroup contains diagnoses codes. In order to obtain details user must have a scope **diagnoses_group:read** """ type DiagnosesGroup implements Node { "The ID of an object." id: ID! "Primary key identifier from the database." databaseId: UUID! "The name of the `DiagnosesGroup`." name: String! "The code of the `DiagnosesGroup`." code: String! "The description of the `DiagnosesGroup`." description: String "The reason the `DiagnosesGroup` was deactivated." deactivationReason: String "Whether the `DiagnosesGroup` is active or not?" isActive: Boolean! "Date and time when record was inserted." insertedAt: DateTime! "Date and time when record was updated." updatedAt: DateTime! "Diagnosis codes wich belong to DiagnosesGroup." diagnosesGroupCodes( "A condition to be used in determining which values should be returned by the collection." filter: DiagnosesGroupCodeFilter "The method to use when ordering collection items." orderBy: DiagnosesGroupCodeOrderBy "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 ): DiagnosesGroupCodeConnection! }

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 = 'diagnoses_group:read')

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

Validate legal entity

  • Extract client_id from token.

  • Check client scopes in order to perform this action (scope = 'diagnoses_group:read')

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

  • Check client_type = NHS

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

  • Check legal entity status (status = ACTIVE)

    • In case of error - return 409 ('client_id refers to legal entity that is not active')

Search params

Search with a few params performs according to the logical AND rule.

  1. id. Search by diagnoses_groups.id (used to get group details)

  2. name. Search by diagnoses_groups.name

  3. is_active. Search by diagnoses_groups.is_active

  4. item_code. Search by diagnoses_groups.code

  5. item_name. Search by code description for dictionaries
    (diagnoses_group_codes dc
    join dictionaries d
    on dc.system = d.name and dc.code = d.values.code)

  6. item_type (string). Limits the search to the following items:

    • <system> - search within specified dictionary. Where <system> is eHealth/ICD10_AM/condition_codes or eHealth/ICPC2/condition_codes

Service logic

Render diagnoses_groups array with nested array of diagnoses_group_codes that match the search params

ЕСОЗ - публічна документація