Versions Compared

Key

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

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

Info

/wiki/spaces/EN/pages/17591304241 (remove the link block before publishing the document)

...

Page Properties
idpage_properties_method_REST API

Document type

Метод REST API

Document title

[Document status] REST API [Назва методу] [ID методу]

Guideline ID

GUI-0011

Author

@

Document version

1

Document status

DRAFT

Date of creation

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

Date of update

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

Method API ID

API-005-009-001-0170

Microservices (namespace)

IL

Component

Legal Entities

Component ID

COM-005-009

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

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

Resource

{{host}}/api/healthcare_services

Scope

healthcare_service:write

Protocol type

REST

Request type

POST

Sync/Async

Sync

Public/Private

Public

...

  • 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 = 'healthcare_service:write')

    • return 403 (“Your scope does not allow to access this resource. Missing allowances: healthcare_service:write”) 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")

Validate request

  • Validate request using JSON schema

    • in case of error - return 422

...

  • 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 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")

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, speciality type and providing condition

    • in case of error - return 409 (“division_id, 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”)

  • Check that there is no another record with the same healthcare service, division_id and category = ‘PHARMACY’

    • in case of error - return 409 (“division_id and category = PHARMACY 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“)

...