Class CompartmentHelper
- java.lang.Object
-
- org.linuxforhealth.fhir.search.compartment.CompartmentHelper
-
public class CompartmentHelper extends java.lang.Object
A helper class with methods for working with HL7 FHIR compartments.
The compartments are defined by the CompartmentDefinition resources in FHIRRegistry.
The R4 CompartmentDefintions and boundaries are defined at https://hl7.org/fhir/R4/compartmentdefinition.html
Default CompartmentDefintion:- Patient - https://hl7.org/fhir/R4B/compartmentdefinition-patient.json
- Encounter - https://hl7.org/fhir/R4B/compartmentdefinition-encounter.json
- RelatedPerson - https://hl7.org/fhir/R4B/compartmentdefinition-relatedperson.json
- Practitioner - https://hl7.org/fhir/R4B/compartmentdefinition-practitioner.json
- Device - https://hl7.org/fhir/R4B/compartmentdefinition-device.json
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CUSTOM_COMPARTMENT_TYPE_EXT
static java.lang.String
INVALID_COMPARTMENT
static java.lang.String
INVALID_COMPARTMENT_AND_RESOURCE
-
Constructor Summary
Constructors Constructor Description CompartmentHelper()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static void
buildMaps(java.util.Map<java.lang.String,CompartmentCache> compMap, java.util.Map<java.lang.String,ResourceCompartmentCache> resourceCompMap)
Builds an in-memory model of the Compartment map defined in compartments.json, for supporting compartment based FHIR searches.void
checkValidCompartment(java.lang.String compartment)
checks that the compartment is valid and throws an exception if notvoid
checkValidCompartmentAndResource(java.lang.String compartment, java.lang.String resourceType)
checks that the compartment and resource are valid and throws an exception if notjava.util.Map<java.lang.String,java.util.Set<java.lang.String>>
getCompartmentParamsForResourceType(java.lang.String resourceType)
Get the map of parameter names used as compartment references for the given resource type.java.util.Set<java.lang.String>
getCompartmentResourceTypeInclusionCriteria(java.lang.String compartment, java.lang.String resourceType)
gets the compartment and resource type inclusion criteria.java.util.Set<java.lang.String>
getCompartmentResourceTypes(java.lang.String compartment)
get the resource types that can be in the compartmentboolean
isCompartmentType(java.lang.String compartment)
static java.lang.String
makeCompartmentParamName(java.lang.String compartmentName)
Create the special parameter name used for references to the given compartment (e.g.
-
-
-
Field Detail
-
CUSTOM_COMPARTMENT_TYPE_EXT
public static final java.lang.String CUSTOM_COMPARTMENT_TYPE_EXT
- See Also:
- Constant Field Values
-
INVALID_COMPARTMENT
public static final java.lang.String INVALID_COMPARTMENT
- See Also:
- Constant Field Values
-
INVALID_COMPARTMENT_AND_RESOURCE
public static final java.lang.String INVALID_COMPARTMENT_AND_RESOURCE
- See Also:
- Constant Field Values
-
-
Method Detail
-
buildMaps
public static final void buildMaps(java.util.Map<java.lang.String,CompartmentCache> compMap, java.util.Map<java.lang.String,ResourceCompartmentCache> resourceCompMap)
Builds an in-memory model of the Compartment map defined in compartments.json, for supporting compartment based FHIR searches.- Parameters:
compMap
- map of compartment name to CompartmentCacheresourceCompMap
- map of resource type name to ResourceCompartmentCache
-
getCompartmentResourceTypes
public java.util.Set<java.lang.String> getCompartmentResourceTypes(java.lang.String compartment) throws FHIRSearchException
get the resource types that can be in the compartment- Parameters:
compartment
- the compartment code value (resourceType name) to look up- Returns:
- Throws:
FHIRSearchException
-
getCompartmentResourceTypeInclusionCriteria
public java.util.Set<java.lang.String> getCompartmentResourceTypeInclusionCriteria(java.lang.String compartment, java.lang.String resourceType) throws FHIRSearchException
gets the compartment and resource type inclusion criteria.- Parameters:
compartment
-resourceType
-- Returns:
- Throws:
FHIRSearchException
- if the passed resourceType does not exist within the passed compartment
-
isCompartmentType
public boolean isCompartmentType(java.lang.String compartment)
- Parameters:
compartment
-- Returns:
- whether the passed string matches the name of a configured CompartmentDefinition
-
checkValidCompartment
public void checkValidCompartment(java.lang.String compartment) throws FHIRSearchException
checks that the compartment is valid and throws an exception if not- Parameters:
compartment
-- Throws:
FHIRSearchException
-
checkValidCompartmentAndResource
public void checkValidCompartmentAndResource(java.lang.String compartment, java.lang.String resourceType) throws FHIRSearchException
checks that the compartment and resource are valid and throws an exception if not- Parameters:
compartment
-- Throws:
FHIRSearchException
-
getCompartmentParamsForResourceType
public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getCompartmentParamsForResourceType(java.lang.String resourceType)
Get the map of parameter names used as compartment references for the given resource type. For example for CareTeam:participant -> {RelatedPerson, Patient} patient -> {Patient} encounter -> {Encounter} ...
- Parameters:
resourceType
- the resource type name- Returns:
- a map from parameter name to the set of compartment names for which that parameter is an inclusion criteria
-
makeCompartmentParamName
public static java.lang.String makeCompartmentParamName(java.lang.String compartmentName)
Create the special parameter name used for references to the given compartment (e.g. Patient, RelatedPerson etc).- Parameters:
compartmentName
-- Returns:
-
-