Overview
This web service allows to cancel diagnostic report and observations, crated as a part of Diagnostic Report Data Package, in case they were entered in error.
Note : You have only one attempt to cancel each package via API. In case you signed and cancelled package partly and now you need to cancel more entities from this package - appeal to eHealth administrator.
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 = 'diagnostic_report:cancel')
- Return 403 in case invalid scope(s)
Validate legal entity
- Validate diagnostic_report belongs to the legal entity where the current user works
- $.diagnostic_report.managing_organization==token.client_id
- in case of error return 403 "User is not allowed to perform actions with an enity that belongs to another legal entity"
- $.diagnostic_report.managing_organization==token.client_id
Validate patient
- Validate patient is active
- ME.patient.status=="active"
- in case of error return "Patient is not active"
- ME.patient.status=="active"
Request validation
- Validate digital signature
- ds.drfo == PRM.parties.tax_id where (PRM.parties.id==PRM.employees.party_id where (PRM.employees.id==$.diagnostic_report.reported_by.identifier.value))
- Compare signed_content to previously created content
- select encounter, select * from observations where diagnostic_report.identifier.value=$.id and compare to signed_content (do not include statuses to comparation, cancellation_reason and explanatory_letter )
- in case of inconsistencies return "Submitted signed content does not correspond to previously created content"
- select encounter, select * from observations where diagnostic_report.identifier.value=$.id and compare to signed_content (do not include statuses to comparation, cancellation_reason and explanatory_letter )
- Validate entities are not canceled yet (status!= "entered_in_error")
- in case of error "Invalid transition"
- Validate at least one entity in the request marked as "entered_in_error"
- in case of error "At least one entity should have status "entered_in_error""
Request processing
- Save signed_content to Media Storage
- Set status `entered_in_error` for objects, submitted with status `entered_in_error`
- Set cancellation_reason
- Set explanatory_letter