/
[DRAFT] REST API Process Specimen [API-007-012-001-0497]
  • In progress
  • ЕСОЗ - публічна документація

    [DRAFT] REST API Process Specimen [API-007-012-001-0497]

    Сторінка знаходиться в процесі розробки. Інформація на ній може бути застарілою.

    https://e-health-ua.atlassian.net/wiki/spaces/EN/pages/17591304241 (remove the link block before publishing the document)

    Properties of a REST API method document

    Document type

    Метод REST API

    Document title

    [DRAFT] REST API Process Specimen [API-007-012-001-0497]

    Guideline ID

    GUI-0011

    Author

    @

    Document version

    1

    Document status

    DRAFT

    Date of creation

    ХХ.ХХ.ХХХХ (дата фінальної версії документа – RC або PROD)

    Date of update

    ХХ.ХХ.ХХХХ (дата зміни версії)

    Method API ID

    API-007-012-001-0497

    Microservices (namespace)

    ME

    Component

    Specimen

    Component ID

    COM-007-012

    Link на API-специфікацію

    https://ehealthmedicalevents975v12.docs.apiary.io/#reference/medical-events/specimen/process-specimen

    Resource

    {{host}}/api/patients/{{patient_id}}/specimens/{{id}}/actions/process

    Scope

    specimen:process

    Protocol type

    REST

    Request type

    PATCH

    Sync/Async

    Async

    Public/Private

    Public

    Purpose

    This WS allows to set date and time when Specimen was received for processing by laboratory employee.

    Key points

    1. Only authenticated and authorized employee with appropriate scope can process a Specimen.

    2. DS isn't used here.

    3. The specimen is processed asynchronously

    Logic

    [DRAFT] BP-ESOZ-028-0005 [MIS] Облік дати та часу отримання Зразка

    Configuration parameters

    BLOCK_DECEASED_PARTY_USERS

    BLOCK_UNVERIFIED_PARTY_USERS

    Dictionaries

    N/A

    Input parameters

    Input parameter

    Mandatory

    Type

    Description

    Example

    Input parameter

    Mandatory

    Type

    Description

    Example

    1

    patient_id

     M

    String

    Unique patient identifier

    7075e0e2-6b57-47fd-aff7-324806efa7e5

    2

    id

     M

    String

    Unique specimen identifier

    aff00bf6-68bf-4b49-b66d-f031d48922b3

    Request structure

    See on API-specification

    Headers

    Headers

    Request data validation

    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 = 'specimen:process')

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

    • If BLOCK_UNVERIFIED_PARTY_USERS is true, then check party's data match following condition: verification_status != NOT_VERIFIED or (verification_status = NOT_VERIFIED and updated_at > current_date - UNVERIFIED_PARTY_PERIOD_DAYS_ALLOWED):

      • in case not match - return 403 ("Access denied. Party is not verified")

    • If BLOCK_DECEASED_PARTY_USERS is true, check that party is not deceased (party_verification record does not equal to: dracs_death_verification_status = VERIFIED and dracs_death_verification_reason = MANUAL_CONFIRMED):

      • in case of error - return 403 ("Access denied. Party is deceased")

    Validate legal entity

    • Extract client_id from token

    • Check legal entity status (status = ACTIVE)

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

    Validate data consistency

    • Ensure that submitted Specimen relates to the Patient (from URL)

      • in case of error - return 404 (“not found”)

    Validate status transition

    • Get Specimen by id

    • Check Specimen’s status is available

      • in case of error - return 409 (“Specimen is not in available status”)

    Validate request

    Validate request by schema and return 422 error code with the list of validation errors in case of fails. User fills following fields in the request:

    1. Received datetime

    Validate value in the field $.received_time, timestamp, required

    • Check it hasn’t set yet (empty before the process invoked)

      • in case of error - return 422 (“Value is already set and cannot be changed”)

    • Check $.received_time is between current datetime and (collected_date_time OR collected_period.end)

      • in case of error - return 422 (“Should be between collected datetime and current datetime”)

    Processing

    1. Create job and return it’s id.

    2. Update specimen record with following:

      1. received_time = $.received_time

      2. updated_at = current datetime

      3. updated_by = user_id from token

    Response structure examples

    See on API-specification

    HTTP status codes

    Response code

    HTTP Status code

    Message

    Internal name

    Description

    Response code

    HTTP Status code

    Message

    Internal name

    Description

    1

    Базові

    2

     

    401 

    Invalid access token

     

    Недійсний токен доступу

    3

     

    403 

    Access denied. Party is not verified

     

    У доступі відмовлено. Працівник  не верифікований

    4

     

    403 

    Access denied. Party is deceased

     

    У доступі відмовлено. Працівник померлий

    5

     

    403 

    Your scope does not allow to access this resource. Missing allowances: specimen:process

     

    Відсутня можливість доступу до цього ресурсу через брак наявності скоупу: specimen:process

    6

     

    404

    not found

     

    Не знайдено

    7

     

    409 

    client_id refers to legal entity that is not active

     

    client_id відноситься до юридичної особи, яка неактивна в системі

    8

     

    409 

    Specimen is not in available status

     

    Зразок не в статусі "доступний"

    9

     

    422 

    Should be between collected datetime and current datetime

     

    Має бути в проміжку між датою забору та поточною датою

    10

     

    422

    Value is already set and cannot be changed

     

    Значення вже вказане і не може бути змінене

    Post-processing processes

    N/A

    Technical modules where the method is used

    N/A

    Related content

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