Class FHIRRestHelper
- java.lang.Object
 - 
- org.linuxforhealth.fhir.server.util.FHIRRestHelper
 
 
- 
- All Implemented Interfaces:
 FHIRResourceHelpers
public class FHIRRestHelper extends java.lang.Object implements FHIRResourceHelpers
Helper methods for performing the "heavy lifting" with respect to implementing FHIR interactions. 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from interface org.linuxforhealth.fhir.server.spi.operation.FHIRResourceHelpers
FHIRResourceHelpers.Interaction 
 - 
 
- 
Field Summary
Fields Modifier and Type Field Description static java.time.format.DateTimeFormatterPARSER_FORMATTER- 
Fields inherited from interface org.linuxforhealth.fhir.server.spi.operation.FHIRResourceHelpers
DO_VALIDATION, IF_NOT_MATCH_NULL, SKIPPABLE_UPDATE, THROW_EXC_ON_MISSING 
 - 
 
- 
Constructor Summary
Constructors Constructor Description FHIRRestHelper(FHIRPersistence persistence, SearchHelper searchHelper)Construct an instance with the passed FHIRPersistence and SearchHelper, and a FHIRVersion of 4.3.0FHIRRestHelper(FHIRPersistence persistence, SearchHelper searchHelper, FHIRVersionParam fhirVersion) 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<java.lang.String,java.lang.Object>buildPersistenceEventProperties(java.lang.String type, java.lang.String id, java.lang.String version, FHIRSearchContext searchContext, FHIRSystemHistoryContext systemHistoryContext)Builds a collection of properties that will be passed to the persistence interceptors.(package private) BundlecreateSearchResponseBundle(java.util.List<ResourceResult<? extends Resource>> resourceResults, FHIRSearchContext searchContext, java.lang.String type)Creates a bundle that will hold results for a search operation.BundledoBundle(Bundle inputBundle, boolean skippableUpdates)Processes a bundled request (batch or transaction type).FHIRRestOperationResponsedoCreate(java.lang.String type, Resource resource, java.lang.String ifNoneExist, boolean doValidation)Performs the heavy lifting associated with a 'create' interaction.FHIRRestOperationResponsedoCreateMeta(FHIRPersistenceEvent event, java.util.List<OperationOutcome.Issue> warnings, java.lang.String type, Resource resource, java.lang.String ifNoneExist)1st phase of CREATE.FHIRRestOperationResponsedoCreatePersist(FHIRPersistenceEvent event, java.util.List<OperationOutcome.Issue> warnings, Resource resource, PayloadPersistenceResponse offloadResponse)3rd phase of resource create.FHIRRestOperationResponsedoDelete(java.lang.String type, java.lang.String id, java.lang.String searchQueryString)Performs a 'delete' operation on the specified resource.ResourceEraseRecorddoErase(FHIROperationContext operationContext, EraseDTO eraseDto)Invoke the FHIR Persistence erase operation for a specific instance of the erase.BundledoHistory(java.lang.String type, java.lang.String id, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri)Performs the work of retrieving versions of a Resource.BundledoHistory(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri, java.lang.String resourceType)Implement the system level history operation to obtain a list of changes to resources with an optional resourceType which supports for example [base]/Patient/_history requests to return the complete history of changes filtered to a specific resource type.ResourcedoInvoke(FHIROperationContext operationContext, java.lang.String resourceTypeName, java.lang.String logicalId, java.lang.String versionId, Resource resource, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters)Helper method which invokes a custom operation.FHIRRestOperationResponsedoPatch(java.lang.String type, java.lang.String id, FHIRPatch patch, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate)Performs a patch operation (a new version of the Resource will be stored).FHIRRestOperationResponsedoPatchOrUpdatePersist(FHIRPersistenceEvent event, java.lang.String type, java.lang.String id, boolean isPatch, Resource newResource, Resource prevResource, java.util.List<OperationOutcome.Issue> warnings, boolean isDeleted, java.lang.Integer ifNoneMatch, PayloadPersistenceResponse offloadResponse)Persist the newResource value for patch or update interactionsSingleResourceResult<? extends Resource>doRead(java.lang.String type, java.lang.String id, boolean throwExcOnNull, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters)Performs a 'read' operation to retrieve a Resource with select query parameters.intdoReindex(FHIROperationContext operationContext, OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.util.List<java.lang.Long> indexIds, java.lang.String resourceLogicalId, boolean force)Invoke the FHIR persistence reindex operation for either a specified list of indexIds, or a randomly chosen resource, last reindexed before the given timestamp.intdoReindexList(OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.util.List<java.lang.Long> indexIds, boolean force)encapsulates the logic to process a list with graduated backoff through the full list of indexIdsintdoReindexSingle(OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.lang.String resourceLogicalId, boolean force)do a single reindex on a specific resourceLogicalIdjava.util.List<java.lang.Long>doRetrieveIndex(FHIROperationContext operationContext, java.lang.String resourceTypeName, int count, java.time.Instant notModifiedAfter, java.lang.Long afterIndexId)Invoke the FHIR persistence retrieve index operation to retrieve a list of indexIds available for reindexing.BundledoSearch(java.lang.String type, java.lang.String compartment, java.lang.String compartmentId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri)Performs heavy lifting associated with a 'search' operation.BundledoSearch(java.lang.String type, java.lang.String compartment, java.lang.String compartmentId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri, boolean checkInteractionAllowed, boolean alwaysIncludeResources)Performs heavy lifting associated with a 'search' operation.FHIRRestOperationResponsedoUpdate(java.lang.String type, java.lang.String id, Resource newResource, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate, boolean doValidation, java.lang.Integer ifNoneMatch)Performs an update operation (a new version of the Resource will be stored).FHIRRestOperationResponsedoUpdateMeta(FHIRPersistenceEvent event, java.lang.String type, java.lang.String id, FHIRPatch patch, Resource newResource, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate, java.lang.Integer ifNoneMatch, boolean doValidation, java.util.List<OperationOutcome.Issue> warnings)1st phase of update interaction.SingleResourceResult<? extends Resource>doVRead(java.lang.String type, java.lang.String id, java.lang.String versionId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters)Performs a 'vread' operation by retrieving the specified version of a Resource.java.lang.StringgenerateResourceId()Generate a new resource id.static java.lang.StringgetRequestBaseUri(java.lang.String type)This method returns the "base URI" associated with the current request.FHIRPersistenceTransactiongetTransaction()PayloadPersistenceResponsestorePayload(Resource resource, java.lang.String logicalId, int newVersionNumber, java.lang.String resourcePayloadKey)If the underlying persistence layer supports offloading payload storage, initiate the request here.voidupdateOperationContext(FHIROperationContext operationContext, java.lang.String method)common update to the operationContextvoidvalidateInteraction(FHIRResourceHelpers.Interaction interaction, java.lang.String resourceType)Validate an interaction for a specified resource type.java.util.List<OperationOutcome.Issue>validateResource(Resource resource)Validate a resource. 
 - 
 
- 
- 
Constructor Detail
- 
FHIRRestHelper
public FHIRRestHelper(FHIRPersistence persistence, SearchHelper searchHelper)
Construct an instance with the passed FHIRPersistence and SearchHelper, and a FHIRVersion of 4.3.0- See Also:
 #FHIRRestHelper(FHIRPersistence, FHIRVersion)
 
- 
FHIRRestHelper
public FHIRRestHelper(FHIRPersistence persistence, SearchHelper searchHelper, FHIRVersionParam fhirVersion)
- Parameters:
 persistence- a FHIRPersistence instance to use for the interactionssearchHelper- a SearchHelper instance for working with search parametersfhirVersion- the fhirVersion to use for the interactions
 
 - 
 
- 
Method Detail
- 
doCreate
public FHIRRestOperationResponse doCreate(java.lang.String type, Resource resource, java.lang.String ifNoneExist, boolean doValidation) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms the heavy lifting associated with a 'create' interaction.- Specified by:
 doCreatein interfaceFHIRResourceHelpers- Parameters:
 type- the resource type specified as part of the request URLresource- the Resource to be stored.ifNoneExist- whether to create the resource if none existsdoValidation- if true, validate the resource; if false, assume the resource has already been validated- Returns:
 - a FHIRRestOperationResponse object containing the results of the operation
 - Throws:
 java.lang.Exception
 
- 
doCreateMeta
public FHIRRestOperationResponse doCreateMeta(FHIRPersistenceEvent event, java.util.List<OperationOutcome.Issue> warnings, java.lang.String type, Resource resource, java.lang.String ifNoneExist) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpers1st phase of CREATE. Perform the search for conditional create (ifNoneExist) interactions. Any validation (if required) should be performed before this call.- Specified by:
 doCreateMetain interfaceFHIRResourceHelpers- Returns:
 - Throws:
 java.lang.Exception
 
- 
doCreatePersist
public FHIRRestOperationResponse doCreatePersist(FHIRPersistenceEvent event, java.util.List<OperationOutcome.Issue> warnings, Resource resource, PayloadPersistenceResponse offloadResponse) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpers3rd phase of resource create. Persist the resource using the configured persistence layer. Does not modify the resource.- Specified by:
 doCreatePersistin interfaceFHIRResourceHelpers- Returns:
 - Throws:
 java.lang.Exception
 
- 
doPatch
public FHIRRestOperationResponse doPatch(java.lang.String type, java.lang.String id, FHIRPatch patch, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms a patch operation (a new version of the Resource will be stored).- Specified by:
 doPatchin interfaceFHIRResourceHelpers- Parameters:
 type- the type of the resource to be updatedid- the id of the Resource being updatedpatch- the patch to applyifMatchValue- an optional "If-Match" header value to request a version-aware updatesearchQueryString- an optional search query string to request a conditional updateskippableUpdate- if true, and the result of the patch matches the existing resource on the server, then skip the update; if false, then always attempt the update- Returns:
 - a FHIRRestOperationResponse that contains the results of the operation
 - Throws:
 java.lang.Exception
 
- 
doUpdate
public FHIRRestOperationResponse doUpdate(java.lang.String type, java.lang.String id, Resource newResource, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate, boolean doValidation, java.lang.Integer ifNoneMatch) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms an update operation (a new version of the Resource will be stored).- Specified by:
 doUpdatein interfaceFHIRResourceHelpers- Parameters:
 type- the type of the resource to be updatedid- the id of the Resource being updatednewResource- the new resource to be storedifMatchValue- an optional "If-Match" header value to request a version-aware updatesearchQueryString- an optional search query string to request a conditional updateskippableUpdate- if true, and the resource content in the update matches the existing resource on the server, then skip the update; if false, then always attempt the updatedoValidation- if true, validate the resource; if false, assume the resource has already been validatedifNoneMatch- for conditional create-on-update, set to 0; otherwise leave null- Returns:
 - a FHIRRestOperationResponse that contains the results of the operation
 - Throws:
 java.lang.Exception
 
- 
doUpdateMeta
public FHIRRestOperationResponse doUpdateMeta(FHIRPersistenceEvent event, java.lang.String type, java.lang.String id, FHIRPatch patch, Resource newResource, java.lang.String ifMatchValue, java.lang.String searchQueryString, boolean skippableUpdate, java.lang.Integer ifNoneMatch, boolean doValidation, java.util.List<OperationOutcome.Issue> warnings) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpers1st phase of update interaction.- Specified by:
 doUpdateMetain interfaceFHIRResourceHelpers- Returns:
 - Throws:
 java.lang.Exception
 
- 
doPatchOrUpdatePersist
public FHIRRestOperationResponse doPatchOrUpdatePersist(FHIRPersistenceEvent event, java.lang.String type, java.lang.String id, boolean isPatch, Resource newResource, Resource prevResource, java.util.List<OperationOutcome.Issue> warnings, boolean isDeleted, java.lang.Integer ifNoneMatch, PayloadPersistenceResponse offloadResponse) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPersist the newResource value for patch or update interactions- Specified by:
 doPatchOrUpdatePersistin interfaceFHIRResourceHelpers- Returns:
 - Throws:
 java.lang.Exception
 
- 
doDelete
public FHIRRestOperationResponse doDelete(java.lang.String type, java.lang.String id, java.lang.String searchQueryString) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms a 'delete' operation on the specified resource.- Specified by:
 doDeletein interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the Resource to be deletedid- the id of the Resource to be deletedsearchQueryString- a search query associated with a conditional delete request (mutually exclusive with id)- Returns:
 - a FHIRRestOperationResponse that contains the results of the operation
 - Throws:
 java.lang.Exception
 
- 
doRead
public SingleResourceResult<? extends Resource> doRead(java.lang.String type, java.lang.String id, boolean throwExcOnNull, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms a 'read' operation to retrieve a Resource with select query parameters.- Specified by:
 doReadin interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the Resource to be retrievedid- the id of the Resource to be retrievedthrowExcOnNull- whether to throw an exception on nullqueryParameters- for supporting _elements and _summary for resource read; allows null- Returns:
 - a SingleResourceResult wrapping the resource and including its deletion status
 - Throws:
 java.lang.Exception
 
- 
doVRead
public SingleResourceResult<? extends Resource> doVRead(java.lang.String type, java.lang.String id, java.lang.String versionId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms a 'vread' operation by retrieving the specified version of a Resource.- Specified by:
 doVReadin interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the Resource to be retrievedid- the id of the Resource to be retrievedversionId- the version id of the Resource to be retrievedqueryParameters- for supporting _elements and _summary for resource vread- Returns:
 - the Resource
 - Throws:
 java.lang.Exception
 
- 
doHistory
public Bundle doHistory(java.lang.String type, java.lang.String id, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms the work of retrieving versions of a Resource.- Specified by:
 doHistoryin interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the Resource to be retrievedid- the id of the Resource to be retrievedqueryParameters- a Map containing the query parameters from the request URL- Returns:
 - a Bundle containing the history of the specified Resource
 - Throws:
 java.lang.Exception
 
- 
doSearch
public Bundle doSearch(java.lang.String type, java.lang.String compartment, java.lang.String compartmentId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms heavy lifting associated with a 'search' operation.- Specified by:
 doSearchin interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the searchcompartment- the compartment type to search in, or null if not a compartment searchcompartmentId- the specific compartment to search in, or null if not a compartment searchqueryParameters- a Map containing the query parameters from the request URLrequestUri- the request URI- Returns:
 - a Bundle containing the search result set
 - Throws:
 java.lang.Exception
 
- 
doSearch
public Bundle doSearch(java.lang.String type, java.lang.String compartment, java.lang.String compartmentId, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri, boolean checkInteractionAllowed, boolean alwaysIncludeResources) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersPerforms heavy lifting associated with a 'search' operation.- Specified by:
 doSearchin interfaceFHIRResourceHelpers- Parameters:
 type- the resource type associated with the searchcompartment- the compartment type to search in, or null if not a compartment searchcompartmentId- the specific compartment to search in, or null if not a compartment searchqueryParameters- a Map containing the query parameters from the request URLrequestUri- the request URIcheckInteractionAllowed- if true, check that the search interaction is permittedalwaysIncludeResources- if true, ignore any return preference and always include the resource in the search result bundle- Returns:
 - a Bundle containing the search result set
 - Throws:
 java.lang.Exception
 
- 
doInvoke
public Resource doInvoke(FHIROperationContext operationContext, java.lang.String resourceTypeName, java.lang.String logicalId, java.lang.String versionId, Resource resource, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersHelper method which invokes a custom operation.- Specified by:
 doInvokein interfaceFHIRResourceHelpers- Parameters:
 operationContext- the FHIROperationContext associated with the requestresourceTypeName- the resource type associated with the requestlogicalId- the resource logical id associated with the requestversionId- the resource version id associated with the requestresource- the input resource associated with the custom operation to be invokedqueryParameters- query parameters may be passed instead of a Parameters resource for certain custom operations invoked via GET- Returns:
 - a Resource that represents the response to the custom operation
 - Throws:
 java.lang.Exception
 
- 
doBundle
public Bundle doBundle(Bundle inputBundle, boolean skippableUpdates) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersProcesses a bundled request (batch or transaction type).- Specified by:
 doBundlein interfaceFHIRResourceHelpers- Parameters:
 inputBundle- the request BundleskippableUpdates- if true, and the bundle contains an update for which the resource content in the update matches the existing resource on the server, then skip the update; if false, then always attempt the updates specified in the bundle- Returns:
 - the response Bundle
 - Throws:
 java.lang.Exception
 
- 
getTransaction
public FHIRPersistenceTransaction getTransaction() throws java.lang.Exception
- Specified by:
 getTransactionin interfaceFHIRResourceHelpers- Throws:
 java.lang.Exception
 
- 
updateOperationContext
public void updateOperationContext(FHIROperationContext operationContext, java.lang.String method)
common update to the operationContext- Parameters:
 operationContext-method-
 
- 
createSearchResponseBundle
Bundle createSearchResponseBundle(java.util.List<ResourceResult<? extends Resource>> resourceResults, FHIRSearchContext searchContext, java.lang.String type) throws java.lang.Exception
Creates a bundle that will hold results for a search operation.- Parameters:
 resourceResults- the list of resource results to include in the bundlesearchContext- the FHIRSearchContext object associated with the searchtype- the name of the resource type being searched- Returns:
 - the bundle
 - Throws:
 java.lang.Exception
 
- 
getRequestBaseUri
public static java.lang.String getRequestBaseUri(java.lang.String type) throws java.lang.ExceptionThis method returns the "base URI" associated with the current request. For example, if a client invoked POST https://myhost:9443/fhir-server/api/v4/Patient to create a Patient resource, this method would return "https://myhost:9443/fhir-server/api/v4".- Parameters:
 type- The resource type associated with the request URI (e.g. "Patient" in the case of https://myhost:9443/fhir-server/api/v4/Patient), or null if there is no such resource type- Returns:
 - The base endpoint URI associated with the current request.
 - Throws:
 java.lang.Exception- if an error occurs while reading the config
 
- 
buildPersistenceEventProperties
public java.util.Map<java.lang.String,java.lang.Object> buildPersistenceEventProperties(java.lang.String type, java.lang.String id, java.lang.String version, FHIRSearchContext searchContext, FHIRSystemHistoryContext systemHistoryContext) throws FHIRPersistenceExceptionDescription copied from interface:FHIRResourceHelpersBuilds a collection of properties that will be passed to the persistence interceptors.- Specified by:
 buildPersistenceEventPropertiesin interfaceFHIRResourceHelpers- Parameters:
 type- the resource typeid- the resource logical IDversion- the resource versionsearchContext- the request search contextsystemHistoryContext- the request system history context- Returns:
 - a map of persistence event properties
 - Throws:
 FHIRPersistenceException
 
- 
doReindex
public int doReindex(FHIROperationContext operationContext, OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.util.List<java.lang.Long> indexIds, java.lang.String resourceLogicalId, boolean force) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersInvoke the FHIR persistence reindex operation for either a specified list of indexIds, or a randomly chosen resource, last reindexed before the given timestamp.- Specified by:
 doReindexin interfaceFHIRResourceHelpers- Parameters:
 operationContext- the operation contextoperationOutcomeResult- accumulate issues in thisOperationOutcome.Buildertstamp- only reindex resources with a reindex_tstamp less than thisindexIds- list of index IDs of resources to reindex, or nullresourceLogicalId- resourceType (e.g. "Patient"), or resourceType/logicalId a specific resource (e.g. "Patient/abc123"), to reindex, or null; this parameter is ignored if the indexIds parameter value is non-nullforce- if true, ignore parameter hash and always replace the parameters- Returns:
 - count of the number of resources reindexed by this call
 - Throws:
 java.lang.Exception
 
- 
doReindexList
public int doReindexList(OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.util.List<java.lang.Long> indexIds, boolean force) throws java.lang.Exception
encapsulates the logic to process a list with graduated backoff through the full list of indexIds- Parameters:
 operationOutcomeResult-tstamp-indexIds-force-- Returns:
 - Throws:
 java.lang.Exception
 
- 
doReindexSingle
public int doReindexSingle(OperationOutcome.Builder operationOutcomeResult, java.time.Instant tstamp, java.lang.String resourceLogicalId, boolean force) throws java.lang.Exception
do a single reindex on a specific resourceLogicalId- Parameters:
 operationOutcomeResult-tstamp-resourceLogicalId-force-- Returns:
 - Throws:
 java.lang.Exception
 
- 
validateResource
public java.util.List<OperationOutcome.Issue> validateResource(Resource resource) throws FHIROperationException
Description copied from interface:FHIRResourceHelpersValidate a resource. First validate profile assertions for the resource if configured to do so, then validate the resource itself.- Specified by:
 validateResourcein interfaceFHIRResourceHelpers- Parameters:
 resource- the resource to be validated- Returns:
 - A list of validation errors and warnings
 - Throws:
 FHIROperationException
 
- 
validateInteraction
public void validateInteraction(FHIRResourceHelpers.Interaction interaction, java.lang.String resourceType) throws FHIROperationException
Description copied from interface:FHIRResourceHelpersValidate an interaction for a specified resource type.- Specified by:
 validateInteractionin interfaceFHIRResourceHelpers- Parameters:
 interaction- the interaction to be performedresourceType- the resource type against which the interaction is to be performed; use "Resource" for whole-system interactions- Throws:
 FHIROperationException
 
- 
doHistory
public Bundle doHistory(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> queryParameters, java.lang.String requestUri, java.lang.String resourceType) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersImplement the system level history operation to obtain a list of changes to resources with an optional resourceType which supports for example [base]/Patient/_history requests to return the complete history of changes filtered to a specific resource type. Because the resource type is included in the path, this variant allows only a single resource type to be specified. To obtain history for more than one resource type, the [base]/_history whole system history endpoint should be used instead with a list of resource types specified using the _type query parameter.- Specified by:
 doHistoryin interfaceFHIRResourceHelpers- Parameters:
 queryParameters- a Map containing the query parameters from the request URLrequestUri- the request URIresourceType- optional resourceType to filter the history- Returns:
 - a Bundle containing the history of the specified Resource
 - Throws:
 java.lang.Exception
 
- 
doErase
public ResourceEraseRecord doErase(FHIROperationContext operationContext, EraseDTO eraseDto) throws FHIROperationException
Description copied from interface:FHIRResourceHelpersInvoke the FHIR Persistence erase operation for a specific instance of the erase.- Specified by:
 doErasein interfaceFHIRResourceHelpers- Returns:
 - Throws:
 FHIROperationException
 
- 
doRetrieveIndex
public java.util.List<java.lang.Long> doRetrieveIndex(FHIROperationContext operationContext, java.lang.String resourceTypeName, int count, java.time.Instant notModifiedAfter, java.lang.Long afterIndexId) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersInvoke the FHIR persistence retrieve index operation to retrieve a list of indexIds available for reindexing.- Specified by:
 doRetrieveIndexin interfaceFHIRResourceHelpers- Parameters:
 operationContext- the operation contextresourceTypeName- the resource type of index IDs to return, or nullcount- the maximum nuber of index IDs to retrievenotModifiedAfter- only retrieve index IDs for resources not last updated after the specified timestampafterIndexId- retrieve index IDs starting after this specified ID, or null to start with first ID- Returns:
 - list of index IDs available for reindexing
 - Throws:
 java.lang.Exception
 
- 
generateResourceId
public java.lang.String generateResourceId()
Description copied from interface:FHIRResourceHelpersGenerate a new resource id. This is typically delegated to the persistence layer, which may want to create FHIR-compliant ids optimized for a certain type of storage.- Specified by:
 generateResourceIdin interfaceFHIRResourceHelpers- Returns:
 
 
- 
storePayload
public PayloadPersistenceResponse storePayload(Resource resource, java.lang.String logicalId, int newVersionNumber, java.lang.String resourcePayloadKey) throws java.lang.Exception
Description copied from interface:FHIRResourceHelpersIf the underlying persistence layer supports offloading payload storage, initiate the request here.- Specified by:
 storePayloadin interfaceFHIRResourceHelpers- Parameters:
 resource- the resource to store (with correct Meta fields)logicalId- the logical id of the resourcenewVersionNumber- the version number to useresourcePayloadKey- the key used to tie the RDBMS record with the offload record- Returns:
 - a response to the payload store operation, or null if it is not supported
 - Throws:
 java.lang.Exception
 
 - 
 
 -