Versions Compared

Key

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

Table of Contents

...

  1. Use service request

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')
    1. Return (403, 'invalid scopes') in case of invalid scope(s)

...

  1. Validate used_by_legal_entity
    1. ME.service_request.used_by_legal_enity.identifier.value=token.client_id
      1. in case of error return 409 "Service request is used by another legal entity" 
  2. Validate program_processing_status                                     
    1. ME.service_request.program_processing_status  == "in_progress"
      1. in case of error return 409 "Invalid program processing status status"
  3. Validate completed_with
    1. $.completed_with as a Reference(encounter| diagnostic_report)
    2. if ME.service_request.category==Counseling than $.completed_with should contain Encounter
    3. else - diagnostic report
    4. $.completed_with.managing_organization== token.client_id
      1. Could not complete service request with an entity, created by another legal entity
  4. Validate program_service exists
    1. $.program_service is an existing record from PRM.program_services where is_active=true
      1. in case of error return 422 "Program service does not exist"
  5. Validate service code from completed with and from program service matches:
    1. if completed_with.identifier.type.coding[].code="diagnostic_report" or "procedure" than
      1. completed_with.code.identifier.value==program_service.service_id (enrich from ME and PRM)
    2. else if completedif completed_with.identifier.type.coding[].code="encounter"
      1. if ME.service_request.code.identifier.type.coding[].code="service"
        1. ME.service_request.code.identifier.value==program_service.service_id (enrich from ME and PRM)
      2. if service_request.code.identifier.type.coding[].code="service_group"
        1. there is a record in status active in PRM.service_inclusions where PRMwhere PRM.service_inclusions.service_group_id=ME.service_request.code.identifier.value and  PRMand  PRM.service_inclusions.service_id=program_service.service_id
    3. in case of error return 409 "Services from program service and completed with does not match"

Service logic

  1. Update program_processing_status to "completed"
  2. Update status history
  3. Save completed_with to service_request