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

Qualify Service Request by id

Purpose

This method checks the possibility of using the direction according to the program.

 

Specification

Link

https://medicaleventsmisapi.docs.apiary.io/#reference/service-requests/manage-service-requests/qualify-service-request-by-id

Resource

/api/service_requests/{{service_request_id}}/actions/qualify

Scope

service_request:use

Components

Service request

Microservices

API paragraph not found

Protocol type

REST

Request type

POST

Sync/Async

Async

Public/Private/Internal

Public

Logic

Перевірка та взяття в обробку направлення за програмою медичним закладом

 

Input parameters

Input parameter

Values

Type

Description

Example

Input parameter

Values

Type

Description

Example

service_request_id

 

String

Unique service request identifier

aff00bf6-68bf-4b49-b66d-f031d48922b3

 

Request structure

See on Apiary

Example:

{ "programs": [ { "identifier": { "type": { "coding": [ { "system": "eHealth/resources", "code": "medical_program" } ] }, "value": "9183a36b-4d45-4244-9339-63d81cd08d9c" } } ] }

 

Authorize

Request to process the request using a token in the headers

  • Verify the validity of access token

    • Return (401, 'unauthorized') in case of validation fails

  • Verify that token is not expired

    • in case of error - return (401, 'unauthorized')

  • Check user scopes in order to perform this action (scope = 'service_request:write')

    1. Return (403, 'invalid scopes') in case of invalid scope(s)

 

Headers

Наприклад:

  • Content-Type:application/json

  • Authorization:Bearer: {{access_token}}

  • api-key: {{secret}}

 

Request data validation

Validate request using JSON Schema

Return 422 with the list of validation errors in case validation fails

Validate request

  1. legal entity(client_id)

    1. Check legal_entity.type in me_allowed_transactions_le_types config parameter and legal_entity.status = ACTIVE 

      1. in case of error return 409 "Action is not allowed for the legal entity"

  2. service request

    1. validate SR.program_processing_status in (new,In Queue,In Progress)

      1. in case error return 409, “service request has wrong status“

    2. validate SR.status = Active

      1. in case error return 409, “service request has wrong status“

    3. If SR.based_on is present:

      1. Verify submitted Activity:

        1. It has scheduled, in_progress status

          1. in case of error return 409, "Invalid activity status")

        2. if quantity was set, then validate remaining_quantity greater then zero:

          1. in case of error return 409, "The number of available services according to the care plan activity has been exhausted"

      2. Verify Care plan:

        1. It should be in active status

          1. in case of error return 409, "Care plan is not active"

        2. Care plan's period end (if exist) should be greater than current date or equal.

          1. in case of error return 409, “Care plan expired“

    4. Validate remaining quantity of services is still available:

      1. If SR has quantity:

        1. Validate remaining_quantity within SR is greater then zero

          1. in case of error return 409 (The number of available services according to the service request has been exhausted)

      2. If SR has no quantity, but it is based on activity with quantity:

        1. Validate remaining_quantity within Activity is greater then zero

          1. in case of error return 409 (The number of available services according to the care plan activity has been exhausted)

  3. program

    1. For each program validate it is an existing service program with type=service

      1. in case not found or is_active==false write result in Data collection according to apiary

      2. in case type!= service write result in Data collection according to apiary - "Invalid program type"

    2. For each program validate that service(or service_group) is an active member of the program

      1. Select is_active from PRM.program_services where service_id(or group_id) == $.signed_content.code.identifier.value and program_id=$.program.identifier.value

        1. if not found or is_active==false write result in Data collection according to apiary - "Service is not included in the program"

 

Processing

API paragraph not found

 

Response structure

See on Apiary

Example:

{ "meta": { "code": 200, "url": "http://example.com/resource", "type": "object", "request_id": "req-adasdoijasdojsda" }, "data": [ { "program_id": "59781de0-2e64-4359-b716-bcc05a32c10f", "program_name": "Fee-For-Service", "status": "INVALID", "rejection_reason": "Service is not included in the program" } ] }

Prepare & return response data structure

  1. For each program in array prepare response

  2. If it is any or some errors from validations return “NOT VALID“ with error msg

 

Post-processing processes

API paragraph not found

 

HTTP status codes

HTTP status code

Message

What caused the error

HTTP status code

Message

What caused the error

200

 

 

401

Unauthorized

 

403

Invalid scopes

 

409

 

Validation failed

422

 

Validation failed

 

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