Table of Contents |
---|
Purpose
...
Table of Contents |
---|
Purpose
This WS is designed to create new healthcare service for the division of a legal entity
Key points
Only authenticated and authorized user with an appropriate scope can create healthcare service.
Healthcare service can be created for PRIMARY_CARE, EMERGENCY, OUTPATIENT or PHARMACY legal entity.
Healthcare service can be created for legal entities in ACTIVE or SUSPENDED statuses.
It can be only one active healthcare service for the single healthcare service, division, category, speciality and providing condition.
It can be only one active healthcare service for the single healthcare service, division, category and type.
Specification
Page Properties | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Logic
Save new healthcare service in healthcare_services table (PRM DB) with data from request and additional fields:
id = autogenerated;
legal_entity_id = client_id from access token;
status = ACTIVE;
is_active = true;
inserted_at = now();
inserted_by = user_id from access token;
updated_at = now();
updated_by = user_
...
Preconditions
API paragraph not found
Global and configurable parameters
No
Input parameters
No
Filters
No
Dictionaries
API paragraph not found
Request structure
...
id from access token;
Request structure
Example:
Expand | ||
---|---|---|
| ||
|
...
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”) 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- 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")
Headers
Content-Type:application/json
...
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“)
category
Check that category is a value from HEALTHCARE_SERVICE_<legal_entity_type>_CATEGORIES chart parameret.CATEGORIES dictionary
in case of error - return 422 (“Healthcare service category “value 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 requestin 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
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
not allowed for legal entity type”)
Get HEALTHCARE_SERVICE_SPECIALITY<$.category>_LICENSE_TYPE_FIELD_REQUIRED_FOR_CATEGORIES chart parameter. If $.category is in chart param
If it exists and is not empty, check that $.
license_
id exists and is not null 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
(“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”)
- in case of
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 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 DBSPECIALITY_TYPE dictionary
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 “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 (“License is expired”“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>_LICENSE_TYPE chart parameterTYPES dictionary
in case of error - return 409 (“License type does not match healthcare service category”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 409 (“division_id, speciality_type and providing_condition combination should be unique”)
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 (“division_id, category and type combination should be unique”)“License type does not match healthcare service category”)
Validate constraint
Check that there is no another record with the same healthcare same healthcare service, division_id and category = ‘PHARMACY’, speciality type and providing condition
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
, 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 422 (“Should be present when all_day = false“)
Validate not available
...
title | Response example |
---|
...
- Check that each object in not_available array has a valid period in $.not_available.during. during.end must be greater than during.start
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 422 (“Should be greater then start“)
Processing
API paragraph not found
Response structure
See on Apiary
Example:
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“)
Validate not available
Check that each object in not_available array has a valid period in $.not_available.during. during.end must be greater than during.start
in case of error - return 422 (“Should be greater then start“)
Dictionaries
PROVIDING_CONDITION
SPECIALITY_TYPE
HEALTHCARE_SERVICE_CATEGORIES
HEALTHCARE_SERVICE_PHARMACY_DRUGS_TYPES
Response structure
Example:
Expand | ||
---|---|---|
| ||
|
Post-processing processes
No
HTTP status codes
...
HTTP status code
...
Message
...
What caused the error
...
201
...
Response
...
...
401
...
Invalid access token
...
...
403
...
Your scope does not allow to access this resource. Missing allowances: healthcare_service:write
...
409
...
Invalid legal entity status.
$.{legal_entity_type} is not allowed to create healthcare services.
License type does not match healthcare service category.
division_id, category, speciality_type and providing_condition combination should be unique.
division_id, category and type combination should be unique.
...
422
...
Error
Division does not exist
Division should be active
Division should belong to your legal entity
value is not allowed in enum
Healthcare service category is not allowed for legal entity type
License must not be submitted for healthcare service category
Healthcare service category must have linked license
If $.category is in chart param, check that $.speciality_type is passed in request
License for legal entity does not exist
License is expired
Should not be present when all_day = true
Should be present when all_day = false
Should be greater then start
...
Request validation failed
Backward compatibility
...
|
HTTP status codes
Page Properties | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|