Class TransactionDetails


  • public class TransactionDetails
    extends Object
    This object contains runtime information that is gathered and relevant to a single database transaction. This doesn't mean a FHIR transaction necessarily, but rather any operation that happens within a single DB transaction (i.e. a FHIR create, read, transaction, etc.).

    The intent with this class is to hold things we want to pass from operation to operation within a transaction in order to avoid looking things up multiple times, etc.

    Since:
    5.0.0
    • Method Detail

      • clearRollbackUndoActions

        public void clearRollbackUndoActions()
        Clears any previously added rollback actions
        Since:
        5.5.0
      • getResolvedResourceId

        @Nullable
        public ResourcePersistentId getResolvedResourceId​(org.hl7.fhir.instance.model.api.IIdType theId)
        A Resolved Resource ID is a mapping between a resource ID (e.g. "Patient/ABC" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
      • isResolvedResourceIdEmpty

        public boolean isResolvedResourceIdEmpty​(org.hl7.fhir.instance.model.api.IIdType theId)
        Was the given resource ID resolved previously in this transaction as not existing
      • addResolvedResourceId

        public void addResolvedResourceId​(org.hl7.fhir.instance.model.api.IIdType theResourceId,
                                          @Nullable
                                          ResourcePersistentId thePersistentId)
        A Resolved Resource ID is a mapping between a resource ID (e.g. "Patient/ABC" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
      • addResolvedMatchUrl

        public void addResolvedMatchUrl​(String theConditionalUrl,
                                        @Nonnull
                                        ResourcePersistentId thePersistentId)
        A Resolved Conditional URL is a mapping between a conditional URL (e.g. "Patient?identifier=foo|bar" or "Observation/123") and a storage ID for that resource. Resources should only be placed within the TransactionDetails if they are known to exist and be valid targets for other resources to link to.
      • getTransactionDate

        public Date getTransactionDate()
        This is the wall-clock time that a given transaction started.
      • getOrCreateUserData

        public <T> T getOrCreateUserData​(String theKey,
                                         Supplier<T> theSupplier)
        Fetches the existing value in the user data map, or uses theSupplier to create a new object and puts that in the map, and returns it
      • beginAcceptingDeferredInterceptorBroadcasts

        public void beginAcceptingDeferredInterceptorBroadcasts​(ca.uhn.fhir.interceptor.api.Pointcut... thePointcuts)
        This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
        Since:
        5.2.0
      • isAcceptingDeferredInterceptorBroadcasts

        public boolean isAcceptingDeferredInterceptorBroadcasts()
        This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
        Since:
        5.2.0
      • isAcceptingDeferredInterceptorBroadcasts

        public boolean isAcceptingDeferredInterceptorBroadcasts​(ca.uhn.fhir.interceptor.api.Pointcut thePointcut)
        This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
        Since:
        5.2.0
      • endAcceptingDeferredInterceptorBroadcasts

        public com.google.common.collect.ListMultimap<ca.uhn.fhir.interceptor.api.Pointcut,​ca.uhn.fhir.interceptor.api.HookParams> endAcceptingDeferredInterceptorBroadcasts()
        This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
        Since:
        5.2.0
      • addDeferredInterceptorBroadcast

        public void addDeferredInterceptorBroadcast​(ca.uhn.fhir.interceptor.api.Pointcut thePointcut,
                                                    ca.uhn.fhir.interceptor.api.HookParams theHookParams)
        This can be used by processors for FHIR transactions to defer interceptor broadcasts on sub-requests if needed
        Since:
        5.2.0
      • getInvocationTiming

        public ca.uhn.fhir.rest.api.InterceptorInvocationTimingEnum getInvocationTiming​(ca.uhn.fhir.interceptor.api.Pointcut thePointcut)