Purpose
This WS is designed to create new healthcare service for division of legal entity.
...
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_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“).
...