Interface FHIRPersistence

  • All Known Implementing Classes:
    FHIRPersistenceJDBCImpl

    public interface FHIRPersistence
    This interface defines the contract between the FHIR Server's REST API layer and the underlying persistence layer that is responsible for interacting with a particular datastore to manage instances of FHIR Resources.
    • Method Detail

      • create

        <T extends ResourceSingleResourceResult<T> create​(FHIRPersistenceContext context,
                                                            T resource)
                                                     throws FHIRPersistenceException
        Stores a new FHIR Resource in the datastore.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resource - the FHIR Resource instance to be created in the datastore
        Returns:
        a SingleResourceResult with a copy of resource with Meta fields updated by the persistence layer and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • read

        <T extends ResourceSingleResourceResult<T> read​(FHIRPersistenceContext context,
                                                          Class<T> resourceType,
                                                          String logicalId)
                                                   throws FHIRPersistenceException
        Retrieves the most recent version of a FHIR Resource from the datastore.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resourceType - the resource type of the Resource instance to be retrieved
        logicalId - the logical id of the Resource instance to be retrieved
        Returns:
        a SingleResourceResult with the FHIR Resource that was retrieved from the datastore and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • vread

        <T extends ResourceSingleResourceResult<T> vread​(FHIRPersistenceContext context,
                                                           Class<T> resourceType,
                                                           String logicalId,
                                                           String versionId)
                                                    throws FHIRPersistenceException
        Retrieves a specific version of a FHIR Resource from the datastore.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resourceType - the resource type of the Resource instance to be retrieved
        logicalId - the logical id of the Resource instance to be retrieved
        versionId - the version of the Resource instance to be retrieved
        Returns:
        a SingleResourceResult with the FHIR Resource that was retrieved from the datastore and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • update

        <T extends ResourceSingleResourceResult<T> update​(FHIRPersistenceContext context,
                                                            String logicalId,
                                                            T resource)
                                                     throws FHIRPersistenceException
        Updates an existing FHIR Resource by storing a new version in the datastore.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        logicalId - the logical id of the FHIR Resource to be updated
        resource - the new contents of the FHIR Resource to be stored
        Returns:
        a SingleResourceResult with a copy of resource with fields updated by the persistence layer and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • delete

        default <T extends ResourceSingleResourceResult<T> delete​(FHIRPersistenceContext context,
                                                                    Class<T> resourceType,
                                                                    String logicalId)
                                                             throws FHIRPersistenceException
        Deletes the specified FHIR Resource from the datastore.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resourceType - The type of FHIR Resource to be deleted.
        logicalId - the logical id of the FHIR Resource to be deleted
        Returns:
        a SingleResourceResult with the FHIR Resource that was deleted or null if the specified resource doesn't exist and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • history

        <T extends ResourceMultiResourceResult<T> history​(FHIRPersistenceContext context,
                                                            Class<T> resourceType,
                                                            String logicalId)
                                                     throws FHIRPersistenceException
        Retrieves all of the versions of the specified FHIR Resource.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resourceType - the resource type of the Resource instances to be retrieved
        logicalId - the logical id of the Resource instances to be retrieved
        Returns:
        a MultiResourceResult with a list containing the available versions of the specified FHIR Resource and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • search

        MultiResourceResult<Resource> search​(FHIRPersistenceContext context,
                                             Class<? extends Resource> resourceType)
                                      throws FHIRPersistenceException
        Performs a search on the specified target resource type using the specified search parameters.
        Parameters:
        context - the FHIRPersistenceContext instance associated with the current request
        resourceType - the resource type which is the target of the search
        Returns:
        a MultiResourceResult with the list of FHIR Resources in the search result set and/or an OperationOutcome with hints, warnings, or errors related to the interaction
        Throws:
        FHIRPersistenceException
      • isTransactional

        boolean isTransactional()
        Returns true iff the persistence layer implementation supports transactions.
      • getHealth

        OperationOutcome getHealth()
                            throws FHIRPersistenceException
        Returns an OperationOutcome indicating the current status of the persistence store / backend
        Returns:
        An OperationOutcome with a list of 0 or more OperationalOutcomeIssue indicating the status of the underlying datastore
        Throws:
        FHIRPersistenceException
      • getTransaction

        FHIRPersistenceTransaction getTransaction()
        Returns a FHIRPersistenceTransaction object associated with the persistence layer implementation in use. This can then be used to control transactional boundaries.
      • isDeleteSupported

        default boolean isDeleteSupported()
        Returns true iff the persistence layer implementation supports the "delete" operation.
      • generateResourceId

        String generateResourceId()
        Generates a resource ID.
        Returns:
        resource ID