Versions Compared

Key

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

Purpose

...

API paragraph not found

Specification

...

Page Properties

Link

https://medicaleventsmisapi.docs.apiary.io/#reference/service-requests/manage-service-requests/use-service-request

Resource

/api/service_requests/{{service_request_id}}/actions/use

Scope

service_request:use

Components

Service request

Microservices

API paragraph not found

Protocol type

REST

Request type

PATCH

Sync/Async

Async

Public/Private/Internal

Public

Logic

...

...

Input parameters

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:

Expand
titleRequest example
Code Block
{
  "used_by_employee": {
    "identifier": {
      "type": {
        "coding": [
          {
            "system": "eHealth/resources",
            "code": "employee"
          }
        ]
      },
      "value": "d5a5d991-0bf7-476f-b3cf-bec73f044b2e"
    }
  },
  "used_by_legal_entity": {
    "identifier": {
      "type": {
        "coding": [
          {
            "system": "eHealth/resources",
            "code": "legal_entity"
          }
        ]
      },
      "value": "c5a6d991-0bf7-476f-b3cf-bec83f044b2a"
    }
  },
  "used_by_division": {
    "identifier": {
      "type": {
        "coding": [
          {
            "system": "eHealth/resources",
            "code": "division"
          }
        ]
      },
      "value": "c5a6d991-0bf7-476f-b3cf-bec83f044b2a"
    }
  },
  "program": {
    "identifier": {
      "type": {
        "coding": [
          {
            "system": "eHealth/resources",
            "code": "medical_program"
          }
        ]
      },
      "value": "9183a36b-4d45-4244-9339-63d81cd08d9c"
    }
  }
}

Authorize

...

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

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

Request to process the request using a token in the headers

Headers

...

Наприклад:

  • Content-Type:application/json

  • Authorization:Bearer mF_9.B5f-4.1JqM

  • api-key:aFBLVTZ6Z2dON1V

Request data validation

...

Validate request using JSON Schema

...

  1. Get token metadata

    1. Extract user_idclient_idclient_type

  2. Ensure that employee belongs to client

    1. $.used_by_employee.identifier.type.coding[*].system == "eHealth/resources"

    2. $.used_by_employee.identifier.type.coding[*].code == "employee"

    3. $.used_by_employee.identifier.value must belong to client_id (prm.employees.legal_entity_id == :client_id)

      1. in case of error return 422 "You can assign service request only to employee within your legal entity"

  3. Check employee_type - only DOCTOR  or SPECIALIST can use service request

    1. employee_type == DOCTOR OR SPECIALIST OR ASSISTANT if service_request.category="laboratory_procedure", OR "diagnostic_procedure" OR "procedure"

    2. else  employee_type == DOCTOR OR SPECIALIST

      1. in case of error, return 422 "Invalid employee type"

  4. Validate used_by_legal_entity is a current legal_entity

    1. $.used_by_legal_entity.identifier.value==token.client_id

      1. in case of error return 409 "You can assign service request only to your legal entity"

  5. Validate used_by_division

    1. if SR.category = hospitalization

      1. validate used_by_division is sent, in case error return 422, "Division is mandatory for $category category"

      2. validate used_by_division.legal_entity_id = used_by_legal_entity_id

    2.  Is SR.category = transfer_of_care

      1. validate used_by_division is sent, in case error return 422, "Division is mandatory for $category category"

      2. Validate $division.legal_entity_id = SR.Performer, in case error return 422, "Patient is transferred to another legal entity"

Processing

...

Service logic

  1. Update service request attributes

    1. Set Medical Events DB

      1. If used_by_employee exists in requests set service_requests[<id>].used_by_employee = Request: $.used_by_employee

      2. set service_requests[<id>].used_by_legal_entity = Request: $.used_by_legal_entity

    2. if medical program exists in request

      1. Set Medical Events DB: service_requests[<id>].medical_program = Request: $.medical_program.identifier.value

  2. Change program_processing_status to `in_queue`

Response structure

...

See on Apiary

Example:

Expand
titleResponse example
Code Block
{
  "data": {
    "status": "pending",
    "eta": "2018-08-02T10:45:16.000Z",
    "links": [
      {
        "entity": "job",
        "href": "/Jobs/NBXk9EyErUZv1RhXgyvgg"
      }
    ]
  },
  "meta": {
    "code": 202,
    "url": "http://example.com/resource",
    "type": "object",
    "request_id": "req-adasdoijasdojsda"
  }
}

Post-processing processes

...

API paragraph not found

HTTP status codes

...

Page Properties

HTTP status code

Message

What caused the error

 202

 

 

...