Versions Compared

Key

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

Purpose

This WS is designed to create new healthcare service for division of legal entity.

...

Page Properties

Link

https://ehealthmisapi1.docs.apiary.io/#reference/public.-medical-service-provider-integration-layer/healthcare-services/create-healthcare-service

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

Resource

/api/healthcare_services

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

Scope

healthcare_service:write

Scope для доступу

Components

ePrescription

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

Microservices

API paragraph not found

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

Protocol type

REST

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

Request type

POST

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

Sync/Async

Sync

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

Logic

  1. Save new healthcare service in healthcare_services table (PRM DB) with data from request and additional fields:

    1. id = autogenerated;

    2. legal_entity_id = client_id from access token;

    3. status = ACTIVE;

    4. is_active = true;

    5. inserted_at = now();

    6. inserted_by = user_id from access token;

    7. updated_at = now();

    8. updated_by = user_id from access token;

...

  • Get division by $.division_id. Check that division exists in PRM DB

    • in case of error - return 422 (“Division does not exist”).

  • Get division by $.division_id. Check that division status = ‘ACTIVE’

    • in case of error - return 422 (“Division should be active”).

  • Get division by $.division_id. Check that division.legal_entity_id = legal entity id from access token

    • in case of error - return 422 (“Division should belong to your legal entity”).

Validate category

  • Check that category is a value from HEALTHCARE_SERVICE_CATEGORIES dictionary

    • in case of error - return 422 (“value is not allowed in enum“).

  • Extract legal entity id from access token. Check that category exists in HEALTHCARE_SERVICE_<legal_entity_type>_CATEGORIES chart parameret.

    • in case of error - return 422 (“Healthcare service category is not allowed for legal entity type”)

  • Get HEALTHCARE_SERVICE_<$.category>_LICENSE_TYPE chart parameter

    • If it exists and is not empty, check that $.license_id exists and is not null in request

      • in case of error - return 422 (“Healthcare service category must have linked license”).

    • If it does not exist or exists and is empty, check that $.license_id does not exist in request

      • in case or error - return 422 (“License must not be submitted for healthcare service category”).

Validate speciality type

  • Get HEALTHCARE_SERVICE_SPECIALITY_TYPE_FIELD_REQUIRED_FOR_CATEGORIES chart parameter. If $.category is in chart param, check that $.speciality_type is passed in request

    • in case of error - return 422.

  • Check that speciality type is a value from SPECIALITY_TYPE dictionary

    • in case of error - return 422 (“value is not allowed in enum").

Validate providing condition

  • Extract legal entity id from access token. Check that providing_condition is present in request is allowed for legal entity type according to Configurations for Healthcare services

    • in case of error - return 422 (“value is not allowed in enum“required property providing_condition was not present").

Validate type

  • Get HEALTHCARE_SERVICE_TYPE_FIELD_REQUIRED_FOR_CATEGORIES chart parameter. If $.category is in chart param, check that $.type is passed in request

    • in case of error - return 422.

  • Check that type is a value from HEALTHCARE_SERVICE_<$.category>_TYPES dictionary

    • in case of error - return 422 (“value is not allowed in enum”).

Validate license

  • Get license by $.license_id and legal_entity_id from access token. Check that license exists in PRM DB

    • in case of error - return 422 (“License for legal entity does not exist”).

  • Get license by $.license_id. Check that license is not expired (is_active = true and (expiry_date>=now() or expiry_date is null))

    • in case or error - return 422 (“License is expired”).

  • Get license by $.license_id. Check that license type equals to a value from HEALTHCARE_SERVICE_<$.category>_LICENSE_TYPE chart parameter

    • in case of error - return 409 (“License type does not match healthcare service category”).

Validate constraint

  • Check that there is no another record with the same healthcare service, division_id, category, speciality type and providing condition

    • in case of error - return 409 (“division_id, category,speciality_type and providing_condition combination should be unique”).

  • Check that there is no another record with the same healthcare service, division_id, category and type

    • in case of error - return 409 (“division_id, category and type combination should be unique”).

Validate available time

  • If $.all_day = true, check that fields available_start_time and available_end_time does not exist in request

    • in case of error - return 422 (“Should not be present when all_day = true“).

  • If all_day = false, check that fields available_start_time and available_end_time exist in request

    • in case of error - return 422 (“Should be present when all_day = false“).

...