Package com.ibm.fhir.server.util
Class FHIRRestHelper
- java.lang.Object
-
- com.ibm.fhir.server.util.FHIRRestHelper
-
- All Implemented Interfaces:
FHIRResourceHelpers
public class FHIRRestHelper extends Object implements FHIRResourceHelpers
Helper methods for performing the "heavy lifting" with respect to implementing FHIR interactions.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFHIRRestHelper.Interaction
-
Field Summary
Fields Modifier and Type Field Description static StringEXTENSION_URLstatic DateTimeFormatterPARSER_FORMATTER-
Fields inherited from interface com.ibm.fhir.server.operation.spi.FHIRResourceHelpers
DO_VALIDATION, SKIPPABLE_UPDATE
-
-
Constructor Summary
Constructors Constructor Description FHIRRestHelper(FHIRPersistence persistence)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) BundlecreateSearchBundle(List<Resource> resources, FHIRSearchContext searchContext, 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(String type, Resource resource, String ifNoneExist, boolean doValidation)Performs the heavy lifting associated with a 'create' interaction.FHIRRestOperationResponsedoDelete(String type, String id, 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(String type, String id, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri)Performs the work of retrieving versions of a Resource.BundledoHistory(javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri)Implement the system level history operation to obtain a list of changes to resourcesResourcedoInvoke(FHIROperationContext operationContext, String resourceTypeName, String logicalId, String versionId, String operationName, Resource resource, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters)Helper method which invokes a custom operation.FHIRRestOperationResponsedoPatch(String type, String id, FHIRPatch patch, String ifMatchValue, String searchQueryString, boolean skippableUpdate)Performs a patch operation (a new version of the Resource will be stored).ResourcedoRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted, Resource contextResource)Performs a 'read' operation to retrieve a Resource.ResourcedoRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted, Resource contextResource, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters)Performs a 'read' operation to retrieve a Resource with select query parameters.intdoReindex(FHIROperationContext operationContext, OperationOutcome.Builder operationOutcomeResult, Instant tstamp, String resourceLogicalId)Invoke the FHIR persistence reindex operation for a randomly chosen resource which was last reindexed before the given dateBundledoSearch(String type, String compartment, String compartmentId, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri, Resource contextResource)Performs heavy lifting associated with a 'search' operation.FHIRRestOperationResponsedoUpdate(String type, String id, Resource newResource, String ifMatchValue, String searchQueryString, boolean skippableUpdate, boolean doValidation)Performs an update operation (a new version of the Resource will be stored).ResourcedoVRead(String type, String id, String versionId, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters)Performs a 'vread' operation by retrieving the specified version of a Resource.FHIRPersistenceTransactiongetTransaction()-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.ibm.fhir.server.operation.spi.FHIRResourceHelpers
doCreate, doUpdate, doVRead
-
-
-
-
Field Detail
-
EXTENSION_URL
public static final String EXTENSION_URL
- See Also:
- Constant Field Values
-
PARSER_FORMATTER
public static final DateTimeFormatter PARSER_FORMATTER
-
-
Constructor Detail
-
FHIRRestHelper
public FHIRRestHelper(FHIRPersistence persistence)
-
-
Method Detail
-
doCreate
public FHIRRestOperationResponse doCreate(String type, Resource resource, String ifNoneExist, boolean doValidation) throws 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:
Exception
-
doPatch
public FHIRRestOperationResponse doPatch(String type, String id, FHIRPatch patch, String ifMatchValue, String searchQueryString, boolean skippableUpdate) throws 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:
Exception
-
doUpdate
public FHIRRestOperationResponse doUpdate(String type, String id, Resource newResource, String ifMatchValue, String searchQueryString, boolean skippableUpdate, boolean doValidation) throws 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 validated- Returns:
- a FHIRRestOperationResponse that contains the results of the operation
- Throws:
Exception
-
doDelete
public FHIRRestOperationResponse doDelete(String type, String id, String searchQueryString) throws Exception
Performs 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 deletedrequestProperties- additional request properties which supplement the HTTP headers associated with this request- Returns:
- a FHIRRestOperationResponse that contains the results of the operation
- Throws:
Exception
-
doRead
public Resource doRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted, Resource contextResource) throws Exception
Description copied from interface:FHIRResourceHelpersPerforms a 'read' operation to retrieve a Resource.- 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 nullincludeDeleted- allow the read, even if the resource has been deletedcontextResource- the resource- Returns:
- the Resource
- Throws:
Exception
-
doRead
public Resource doRead(String type, String id, boolean throwExcOnNull, boolean includeDeleted, Resource contextResource, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters) throws 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 nullincludeDeleted- allow the read, even if the resource has been deletedcontextResource- the resourcequeryParameters- for supporting _elements and _summary for resource read- Returns:
- the Resource
- Throws:
Exception
-
doVRead
public Resource doVRead(String type, String id, String versionId, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters) throws 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:
Exception
-
doHistory
public Bundle doHistory(String type, String id, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri) throws Exception
Performs 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 URLrequestUri- the URI from the requestrequestProperties- additional request properties which supplement the HTTP headers associated with this request- Returns:
- a Bundle containing the history of the specified Resource
- Throws:
Exception
-
doSearch
public Bundle doSearch(String type, String compartment, String compartmentId, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri, Resource contextResource) throws 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 URIcontextResource- the resource context- Returns:
- a Bundle containing the search result set
- Throws:
Exception
-
doInvoke
public Resource doInvoke(FHIROperationContext operationContext, String resourceTypeName, String logicalId, String versionId, String operationName, Resource resource, javax.ws.rs.core.MultivaluedMap<String,String> queryParameters) throws Exception
Helper 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 requestoperationName- the name of the custom operation to be invokedresource- 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:
Exception
-
doBundle
public Bundle doBundle(Bundle inputBundle, boolean skippableUpdates) throws 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:
Exception
-
getTransaction
public FHIRPersistenceTransaction getTransaction() throws Exception
- Specified by:
getTransactionin interfaceFHIRResourceHelpers- Throws:
Exception
-
createSearchBundle
Bundle createSearchBundle(List<Resource> resources, FHIRSearchContext searchContext, String type) throws Exception
Creates a bundle that will hold results for a search operation.- Parameters:
resources- the list of resources to include in the bundlesearchContext- the FHIRSearchContext object associated with the searchtype- the name of the resource type being searched- Returns:
- the bundle
- Throws:
Exception
-
doReindex
public int doReindex(FHIROperationContext operationContext, OperationOutcome.Builder operationOutcomeResult, Instant tstamp, String resourceLogicalId) throws Exception
Description copied from interface:FHIRResourceHelpersInvoke the FHIR persistence reindex operation for a randomly chosen resource which was last reindexed before the given date- Specified by:
doReindexin interfaceFHIRResourceHelpersresourceLogicalId- a reference to a resource e.g. "Patient/abc123". Can be null- Returns:
- number of resources reindexed (0 if no resources were found to reindex)
- Throws:
Exception
-
doHistory
public Bundle doHistory(javax.ws.rs.core.MultivaluedMap<String,String> queryParameters, String requestUri) throws Exception
Description copied from interface:FHIRResourceHelpersImplement the system level history operation to obtain a list of changes to resources- Specified by:
doHistoryin interfaceFHIRResourceHelpers- Parameters:
queryParameters- a Map containing the query parameters from the request URLrequestUri- the request URI- Returns:
- a Bundle containing the history of the specified Resource
- Throws:
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
-
-