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

RC_Search Medical programs (Admin CDB)

Purpose

This WS allows to search for a medication 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 search for a medical program.

Specification

"Reads and enables pagination through a set of `MedicalProgram`." medicalPrograms( "A condition to be used in determining which values should be returned by the collection." filter: MedicalProgramFilter "The method to use when ordering collection items." orderBy: MedicalProgramOrderBy "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 ): MedicalProgramConnection!

 

""" Fields to filter medical programs in the system. """ input MedicalProgramFilter { "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 "Checks for equality with the object’s `type` field." type: String }
""" A connection to a list of `MedicalProgram` items. """ type MedicalProgramConnection { "Information to aid in pagination." pageInfo: PageInfo! "A list of nodes." nodes: [MedicalProgram] "A list of edges." edges: [MedicalProgramEdge] } """ MedicalProgram contains details about medical program for reimbursement and services. In order to obtain details user must have a scope **medical_program:read** """ type MedicalProgram implements Node { "The ID of an object." id: ID! "Primary key identifier from the database." databaseId: UUID! "The name of the `MedicalProgram`." name: String! "Type of the `MedicalProgram`." type: String! "Whether the `MediaclProgram` is active or not?" isActive: Boolean! "Date and time when record was inserted." insertedAt: DateTime! "Date and time when record was updated." updatedAt: DateTime! "Whether it is possible to create `Medication Request`" medicationRequestAllowed: Boolean! "Medication request allowed status description" medicationRequestAllowedText: String "Whether it is possible to create `Medication Dispense`" medicationDispenseAllowed: Boolean! "Medication dispense allowed status description" medicationDispenseAllowedText: String "Medical program settings" medicalProgramSettings: MedicalProgramSettings "Medical program settings description" medicalProgramSettingsText: String } """ Medical program settings. Described at https://edenlab.atlassian.net/wiki/spaces/EH/pages/3132620836/Medical+program+settings """ type MedicalProgramSettings { "Skip MNN in treatment period requirement flag" skipMnnInTreatmentPeriod: Boolean "Care plan requirement flag" carePlanRequired: Boolean! "Skip employee validation requirement flag" skipEmployeeValidation: Boolean "Allowed employee types from `EMPLOYEE_TYPE` dictionary to create medication request" employeeTypesToCreateMedicationRequest: [String] "Speciality types allowed. From `SPECIALITY_TYPE` dictionary" specialityTypesAllowed: [String] "conditions ICD10_AM allowed. From `eHealth/ICD10_AM/condition_code` dictionary" conditionsIcd10AmAllowed: [String] "Conditions ICPC2 allowed. From `eHealth/ICPC2/condition_code` dictionary" conditionsIcpc2Allowed: [String] "Maximum length in days of treatment period for `Medication Request` created with the program" medicationRequestMaxPeriodDay: Int "Providing conditions allowed. From `PROVIDING_CONDITION` dictionary" providingConditionsAllowed: [String] "Skip declaration verification for employee on create `Medication Request`" skipMedicationRequestEmployeeDeclarationVerify: Boolean "Skip declaration verification for legal entity on create `Medication Request`" skipMedicationRequestLegalEntityDeclarationVerify: Boolean "Allows multi dispense for `Medication Request`" multiMedicationDispenseAllowed: Boolean "Allows to process `Medication Dispense` without digital sign" skipMedicationDispenseSign: Boolean "Disables patient notification on operations with `Medication Request`" medicationRequestNotificationDisabled: Boolean "Specifies medication dispense period in days" medicationDispensePeriodDay: Int }

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

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

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

Search params

  • databaseId. UUID, identifier of the medical program

  • name. String, name of the medical program

  • isActive. Boolean, medical program status

  • type. String, medical program type. Allowed values: MEDICATION, SERVICE

Service logic

  1. Get list of all medical programs filtered by search params

  2. Render list with medical program data according to schema.

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