Class CascadingDeleteInterceptor


public class CascadingDeleteInterceptor extends Object
Interceptor that allows for cascading deletes (deletes that resolve constraint issues).

For example, if DiagnosticReport/A has a reference to Observation/B it is not normally possible to delete Observation/B without first deleting DiagnosticReport/A. With this interceptor in place, it is.

When using this interceptor, client requests must include the parameter _cascade=delete on the DELETE URL in order to activate cascading delete, or include the request header X-Cascade-Delete: delete

  • Field Details

  • Constructor Details

    • CascadingDeleteInterceptor

      public CascadingDeleteInterceptor(@Nonnull ca.uhn.fhir.context.FhirContext theFhirContext, @Nonnull DaoRegistry theDaoRegistry, @Nonnull ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster theInterceptorBroadcaster, @Nonnull ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc)
      theDaoRegistry - The DAO registry (must not be null)
  • Method Details

    • handleDeleteConflicts

      public DeleteConflictOutcome handleDeleteConflicts(DeleteConflictList theConflictList, theRequest, theTransactionDetails)
    • getCascadedDeletesList

      public static List<String> getCascadedDeletesList( theRequest, boolean theCreate)
    • outgoingFailureOperationOutcome

      public void outgoingFailureOperationOutcome( theRequestDetails, org.hl7.fhir.instance.model.api.IBaseOperationOutcome theResponse)
    • outgoingResponse

      public void outgoingResponse( theRequestDetails, theResponseDetails, org.hl7.fhir.instance.model.api.IBaseResource theResponse)
    • shouldCascade

      @Nonnull protected shouldCascade(@Nullable theRequest)
      Subclasses may override
      theRequest - The REST request (may be null)
      Returns true if cascading delete should be allowed