Class FHIRPersistenceJDBCImpl

    • Constructor Detail

      • FHIRPersistenceJDBCImpl

        public FHIRPersistenceJDBCImpl()
                                throws Exception
        Constructor for use when running as web application in WLP.
        Throws:
        Exception
      • FHIRPersistenceJDBCImpl

        public FHIRPersistenceJDBCImpl​(Properties configProps,
                                       IConnectionProvider cp)
                                throws Exception
        Constructor for use when running standalone, outside of any web container. The IConnectionProvider should be a pooling implementation which supports an ITransactionProvider. Uses the default adapter for reading FHIR configurations, which works OK for unit-tests.
        Parameters:
        configProps -
        cp -
        Throws:
        Exception
      • FHIRPersistenceJDBCImpl

        public FHIRPersistenceJDBCImpl​(Properties configProps,
                                       IConnectionProvider cp,
                                       FHIRConfigProvider configProvider)
                                throws Exception
        Constructor for use when running standalone, outside of any web container. The IConnectionProvider should be a pooling implementation which supports an ITransactionProvider.
        Parameters:
        configProps -
        cp -
        configProvider - adapter to provide access to FHIR configuration
        Throws:
        Exception
    • Method Detail

      • buildActionChain

        protected Action buildActionChain()
        Build a chain of actions we want to apply to new connections. Current the only action we need is setting the tenant if we're in multi-tenant mode.
        Returns:
        the chain of actions to be applied
      • create

        public <T extends ResourceSingleResourceResult<T> create​(FHIRPersistenceContext context,
                                                                   T resource)
                                                            throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Stores a new FHIR Resource in the datastore.
        Specified by:
        create in interface FHIRPersistence
        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
      • update

        public <T extends ResourceSingleResourceResult<T> update​(FHIRPersistenceContext context,
                                                                   String logicalId,
                                                                   T resource)
                                                            throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Updates an existing FHIR Resource by storing a new version in the datastore.
        Specified by:
        update in interface FHIRPersistence
        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
      • search

        public MultiResourceResult<Resource> search​(FHIRPersistenceContext context,
                                                    Class<? extends Resource> resourceType)
                                             throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Performs a search on the specified target resource type using the specified search parameters.
        Specified by:
        search in interface FHIRPersistence
        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
      • delete

        public <T extends ResourceSingleResourceResult<T> delete​(FHIRPersistenceContext context,
                                                                   Class<T> resourceType,
                                                                   String logicalId)
                                                            throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Deletes the specified FHIR Resource from the datastore.
        Specified by:
        delete in interface FHIRPersistence
        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
      • read

        public <T extends ResourceSingleResourceResult<T> read​(FHIRPersistenceContext context,
                                                                 Class<T> resourceType,
                                                                 String logicalId)
                                                          throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Retrieves the most recent version of a FHIR Resource from the datastore.
        Specified by:
        read in interface FHIRPersistence
        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:
        FHIRPersistenceResourceDeletedException - if the resource being read is currently in a deleted state and FHIRPersistenceContext.includeDeleted() is set to false
        FHIRPersistenceException
      • history

        public <T extends ResourceMultiResourceResult<T> history​(FHIRPersistenceContext context,
                                                                   Class<T> resourceType,
                                                                   String logicalId)
                                                            throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Retrieves all of the versions of the specified FHIR Resource.
        Specified by:
        history in interface FHIRPersistence
        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
      • vread

        public <T extends ResourceSingleResourceResult<T> vread​(FHIRPersistenceContext context,
                                                                  Class<T> resourceType,
                                                                  String logicalId,
                                                                  String versionId)
                                                           throws FHIRPersistenceException
        Description copied from interface: FHIRPersistence
        Retrieves a specific version of a FHIR Resource from the datastore.
        Specified by:
        vread in interface FHIRPersistence
        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:
        FHIRPersistenceResourceDeletedException - if the resource being read is currently in a deleted state and FHIRPersistenceContext.includeDeleted() is set to false
        FHIRPersistenceException
      • buildSortedFhirResources

        protected List<Resource> buildSortedFhirResources​(ResourceDAO resourceDao,
                                                          FHIRPersistenceContext context,
                                                          Class<? extends Resource> resourceType,
                                                          List<Long> sortedIdList,
                                                          List<String> elements)
                                                   throws FHIRException,
                                                          FHIRPersistenceException,
                                                          IOException
        This method takes the passed list of sorted Resource ids, acquires the Resource corresponding to each id, and returns those Resources in a List, sorted according to the input sorted ids.
        Parameters:
        context - - The FHIR persistence context for the current request.
        resourceType - - The type of Resource that each id in the passed list represents.
        sortedIdList - - A list of Resource ids representing the proper sort order for the list of Resources to be returned.
        elements - - An optional list of element names to include in the resources. If null, filtering will be skipped.
        Returns:
        List - A list of Resources of the passed resourceType, sorted according the order of ids in the passed sortedIdList.
        Throws:
        FHIRPersistenceException
        IOException
        FHIRException
      • retrieveUserTransaction

        protected UserTransaction retrieveUserTransaction​(String jndiName)
        Retrieves (via a JNDI lookup) a reference to the UserTransaction. If the JNDI lookup fails, we'll assume that we're not running inside the container.
      • isTransactional

        public boolean isTransactional()
        Description copied from interface: FHIRPersistence
        Returns true iff the persistence layer implementation supports transactions.
        Specified by:
        isTransactional in interface FHIRPersistence
      • isDeleteSupported

        public boolean isDeleteSupported()
        Description copied from interface: FHIRPersistence
        Returns true iff the persistence layer implementation supports the "delete" operation.
        Specified by:
        isDeleteSupported in interface FHIRPersistence