Table of Contents |
---|
...
Validations
Authorization
- Verify the validity of access token
- Return (401, 'unauthorized') in case of validation fails
- Verify that token is not expired
- in case of error - return (401, 'unauthorized')
- Check user scopes in order to perform this action (scope = 'service_request:write')
- Return (403, 'invalid scopes') in case of invalid scope(s)
...
- Validate used_by_legal_entity
- ME.service_request.used_by_legal_enity.identifier.value=token.client_id
- in case of error return 409 "Service request is used by another legal entity"
- ME.service_request.used_by_legal_enity.identifier.value=token.client_id
- Validate program_processing_status
- ME.service_request.program_processing_status == "in_progress"
- in case of error return 409 "Invalid program processing status status"
- ME.service_request.program_processing_status == "in_progress"
- Validate completed_with
- $.completed_with as a Reference(encounter| diagnostic_report| procedure)
- if ME.service_request.category ==Counseling than $.completed_with should contain Encounter
- else - diagnostic report or procedure
- and resource according to config file
- $.completed_with.managing_organization== token.client_id
- Could not complete service request with an entity, created by another legal entity
- SR could be completed only with resource that referenced this SR
- in case error return 422, msg "$completed_with.code is not connected with this SR"
- If SR.category in ('hospitalization', 'transfer_of_care') validate resource is encounter.type = discharge
- in case error, return 422, "Service request with category $category could not be completed with current resource"
- Validate program_service exists
- $.program_service is an existing record from PRM.program_services where is_active=true
- in case of error return 422 "Program service does not exist"
- $.program_service is an existing record from PRM.program_services where is_active=true
- Validate service code from completed with and from program service matches:
- if completed_with.identifier.type.coding[].code="diagnostic_report" or "procedure" than
- completed_with.code.identifier.value==program_service.service_id (enrich from ME and PRM)
- else if completed_with.identifier.type.coding[].code="encounter"
- if ME.service_request.code.identifier.type.coding[].code="service"
- ME.service_request.code.identifier.value==program_service.service_id (enrich from ME and PRM)
- if service_request.code.identifier.type.coding[].code="service_group"
- there is a record in status
active
in PRM.service_inclusions where PRM.service_inclusions.service_group_id=ME.service_request.code.identifier.value and PRM.service_inclusions.service_id=program_service.service_id
- there is a record in status
- if ME.service_request.code.identifier.type.coding[].code="service"
- in case of error return 409 "Services from program service and completed with does not match"
- if completed_with.identifier.type.coding[].code="diagnostic_report" or "procedure" than
Service logic
- Update program_processing_status to "completed"
- Update status history
- Save completed_with to service_request