Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Document type

Метод REST API

Document title

[DRAFT] PIS. Get divisions (Bulk data export) [API-005-012-003-0479]

Guideline ID

GUI-0011

Author

@

Document version

1

Document status

DRAFT

Date of creation

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

Date of update

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

Method API ID

API-005-012-003-0479

Microservices (namespace)

IL

Component

Bulk export

Component ID

COM-005-012

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

https://pisapi1.docs.apiary.io/#reference/public.-patient-information-system/bulk-data-export/get-divisions

Resource

{{host}}/api/pis/bulk/divisions

Scope

division_bulk:read_pis

Protocol type

REST

Request type

GET

Sync/Async

Sync

Public/Private

Public

Purpose

Method to Get number of declarations per practitioner and his current limitall divisions from ehealth system as a raw data as a part of data exchange to do some operations on PIS side (data enrichment, search)

Logic

Service logic

Data preparation

Info

This data must be calculated on daily basis (or other intervals depending on cron configuration)

  1. Get all employees with a related party (party.id = employee.party_id)

  2. Get all declared specialities (where speciality_officio = true) per party

  3. Get current limit for each speciality from global parameters

    1. PEDIATRICIAN: pediatrician_declaration_limit

    2. THERAPIST: therapist_declaration_limit

    3. FAMILY_DOCTOR: family_doctor_declaration_limit

  4. Get lowest limit for each party (declarations_limit)

  5. Find and count all active (status active or pending_verification) declarations for all this employees (per party) (declarations_count)

Representation

...

Get the latest snapshot to return calculated and aggregated report

...

Prepare snapshot (cron)

  1. Run cron-job to prepare data based on schedule (DIVISIONS_BULK_UPLOAD_SCHEDULE)

  2. Generate file that contains all the data from divisions table

  3. Generate N files depending on PIS_BULK_ACTIONS_MAX_DEPTH with data changed in 1-2-3 .. N days

  4. Upload files to MEDIA_STORAGE_BULK_ACTIONS_BUCKET

Retrieve data

  1. Download file from media storage MEDIA_STORAGE_BULK_ACTIONS_BUCKET depending on requested depth

    1. If depth is missing - get all records

    2. if depth is passed - select file that contains changes within requested period

  2. Retrieve records from file and render as response

Configuration parameters

N/A

...

Input parameter

Mandatory

Type

Description

Example

1

 

 

 

 

 

2

 

 

 

 

 

Request structure

See on API-specification

Expand
titleExample
Code Block

...

  • Verify that MIS API token exists in request

    • in case of error - return 401 (“Api key is not set")

  • Verify the validity of MIS API token

    • in case of error - return 401 (“Invalid api key”)

  • Verify that MIS API token is not expired

    • in case of error - return 401 (“Invalid api key”)

  • Check MIS scopes in order to perform this action (scope = 'declarationdivision_bulk:read_pis')

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

Validate query parameters

Validate parameters by type and format

Parameter

Type

Format

depth

integer

Positive number without fraction components

Processing

N/A

Response structure examples

See on API-specification

Expand
titleExample
Code Block

...