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

(GraphQL) Terminate declaration

Purpose

This WS allows to terminate a declaration from Admin panel.

 

Key points

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

  2. Only authenticated and authorized NHS employee with appropriate scope can terminate a declaration.

  3. Only active declaration can be terminated.

 

Specification

Link

API paragraph not found

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

Resource

API paragraph not found

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

Scope

declaration:terminate

Scope для доступу

Components

 

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

Microservices

API paragraph not found

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

Protocol type

 

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

Request type

 

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

Sync/Async

 

Метод є синхронним чи асинхронним?

Public/Private/Internal

Internal

Потрібно зазначити тип методу за ступенем доступності

 

"Terminates a single `Declaration` using its globally unique ID and the reason description." terminateDeclaration( input: TerminateDeclarationInput! ): TerminateDeclarationPayload
""" Declaration combines data about Patient, Employee, LegalEntity and Division. In order to obtain details user must have a scope `declaration:read`. """ type Declaration implements Node { "The ID of an object" id: ID! "Primary key identifier from the database" databaseId: UUID! "unique human redable number of declaration" declarationNumber: String! "The date when declaration takes effect" startDate: Date! "The date wher declaration ends." endDate: Date! "The date when declaration is signed by doctor." signedAt: DateTime! "Status ah yhe declaration, is set automatically." status: DeclarationStatus! "type of declaration, as for now it's only one type =`family_doctor`" scope: String "The reason of declining the declaration, is set automatically on declining declaration." reason: String "Free text for declining declaration, is filled by the person who declined declaration." reasonDescription: String "Legal entity information, where declaration was signed." legalEntity: LegalEntity! "Patient information." person: Person! "Division in legal entity where medical services are provided." division: Division! "Doctor information, who signed declaration." employee: Employee! "Documents which were attahced to declarations." declarationAttachedDocuments: [DeclarationAttachedDocument] } """ List of declaration statuses. """ enum DeclarationStatus { "Status `Active` for declaration." ACTIVE "Status `CLOSED` for declaration." CLOSED "Status `PENDING_VERIFICATION` for declaration." PENDING_VERIFICATION "Status `REJECTED` for declaration." REJECTED "Status `TERMINATED` for declaration." TERMINATED } """ Structure of documents attached to the declaration. """ type DeclarationAttachedDocument { "The type of document." type: String! "Link for uploading scan copies of the documnet, is generated by e-Health." url: String! }

 

Logic

  1. Update data:

    1. declarations table by declaration_id

      1. set status = ‘terminated’

      2. set reason = $.reason

      3. set reason_description = $.reason_description

      4. set updated_at, updated_by

 

Authorize

  • 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 = 'declaration:terminate')

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

 

Request data validation

Validate legal entity

  • Extract client_id from token.

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

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

  • Check client type (type = NHS)

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

Validate request

  • Check declaration_id submitted

    • in case not submitted - return 422 ('required property declaration_id was not present')

    • in case does not exist in OPS db - return 404 ('Declaration not found')

    • in case exists in OPS db but is not active - return 409 ('Declaration is not active')

  • Check reason submitted

    • in case not submitted - return 422 ('required property reason was not present')

    • in case value is not from DECLARATION_REASON dictionary - return 422 ('Value is not allowed in enum')

 

Processing

API paraagraph not found

 

Response structure

API paraagraph not found

 

Post-processing processes

API paraagraph not found

 

HTTP status codes

API paraagraph not found

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