Overview
This WS allows to cancel procedure in case they were entered in error.
Specification
Authorization
Validate token
- Verify the validity of access token
- Return 401 in case validation fails
- Verify token is not expired
- in case error return 401
Validate scopes
- Check user scopes in order to perform this action (scope = 'procedure:write')
- Return 403 in case invalid scope(s)
Validate legal entity
- Validate procedure belongs to the legal entity where the current user works
- ME.procedure.managing_organization==token.client_id
- in case of error return 403 "User is not allowed to perform this action"
- ME.procedure.managing_organization==token.client_id
Validate patient
- Validate patient is active
- ME.patient.status=="active" and is_active=true
- in case of error return "Patient is not active"
- ME.patient.status=="active" and is_active=true
Request validation
- Validate digital signature
- ds.drfo == PRM.parties.tax_id where (PRM.parties.id==PRM.employees.party_id where (PRM.employees.id==$.performer.identifier.value))
- Compare signed_content to previously created content
- select procedure, select * from procedures context.identifier.value=procedure_id and compare to signed_content (do not include status, status_reason and explanatory_letter )
- in case of inconsistencies return "Submitted signed content does not correspond to previously created content"
- select procedure, select * from procedures context.identifier.value=procedure_id and compare to signed_content (do not include status, status_reason and explanatory_letter )
- Validate status_reason is in dictionary eHealth/procedure_status_reasons
- in case error return 422, "status_reason not in a dictionary eHealth/procedure_status_reasons"
- Validate user performs action with procedure that belong to his legal entity
- ME.patient{patinet_id}.procedures{procedure_id}.managing_organization==token.client_id
- in case of error return 422 "Managing_organization in the procedure does not correspond to user`s legal_entity"
- ME.patient{patinet_id}.procedures{procedure_id}.managing_organization==token.client_id
Request processing
- Save signed_content to Media Storage
- Set status `ENTERED_IN_ERROR` for procedure
- Set cancellation_reason
- Set explanatory_letter