Class FhirTerser

    • Method Detail

      • cloneInto

        public IBase cloneInto​(IBase theSource,
                               IBase theTarget,
                               boolean theIgnoreMissingFields)
        Clones all values from a source object into the equivalent fields in a target object
        Parameters:
        theSource - The source object (must not be null)
        theTarget - The target object to copy values into (must not be null)
        theIgnoreMissingFields - The ignore fields in the target which do not exist (if false, an exception will be thrown if the target is unable to accept a value from the source)
        Returns:
        Returns the target (which will be the same object that was passed into theTarget) for easy chaining
      • getAllPopulatedChildElementsOfType

        public <T extends IBaseList<T> getAllPopulatedChildElementsOfType​(IBaseResource theResource,
                                                                            Class<T> theType)
        Returns a list containing all child elements (including the resource itself) which are non-empty and are either of the exact type specified, or are a subclass of that type.

        For example, specifying a type of StringDt would return all non-empty string instances within the message. Specifying a type of IResource would return the resource itself, as well as any contained resources.

        Note on scope: This method will descend into any contained resources (IResource.getContained()) as well, but will not descend into linked resources (e.g. BaseResourceReferenceDt.getResource()) or embedded resources (e.g. Bundle.entry.resource)

        Parameters:
        theResource - The resource instance to search. Must not be null.
        theType - The type to search for. Must not be null.
        Returns:
        Returns a list of all matching elements
      • getValues

        public List<IBasegetValues​(IBase theElement,
                                     String thePath)
        Returns values stored in an element identified by its path. The list of values is of type Object.
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.@param theElement The resource instance to be accessed. Must not be null.
        Returns:
        A list of values of type Object.
      • getValues

        public List<IBasegetValues​(IBase theElement,
                                     String thePath,
                                     boolean theCreate)
        Returns values stored in an element identified by its path. The list of values is of type Object.
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.
        theCreate - When set to true, the terser will create a null-valued element where none exists.
        Returns:
        A list of values of type Object.
      • getValues

        public List<IBasegetValues​(IBase theElement,
                                     String thePath,
                                     boolean theCreate,
                                     boolean theAddExtension)
        Returns values stored in an element identified by its path. The list of values is of type Object.
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.
        theCreate - When set to true, the terser will create a null-valued element where none exists.
        theAddExtension - When set to true, the terser will add a null-valued extension where one or more such extensions already exist.
        Returns:
        A list of values of type Object.
      • getValues

        public <T extends IBaseList<T> getValues​(IBase theElement,
                                                   String thePath,
                                                   Class<T> theWantedClass)
        Returns values stored in an element identified by its path. The list of values is of type theWantedClass.
        Type Parameters:
        T - Type declared by theWantedClass
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.
        theWantedClass - The desired class to be returned in a list.
        Returns:
        A list of values of type theWantedClass.
      • getValues

        public <T extends IBaseList<T> getValues​(IBase theElement,
                                                   String thePath,
                                                   Class<T> theWantedClass,
                                                   boolean theCreate)
        Returns values stored in an element identified by its path. The list of values is of type theWantedClass.
        Type Parameters:
        T - Type declared by theWantedClass
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.
        theWantedClass - The desired class to be returned in a list.
        theCreate - When set to true, the terser will create a null-valued element where none exists.
        Returns:
        A list of values of type theWantedClass.
      • getValues

        public <T extends IBaseList<T> getValues​(IBase theElement,
                                                   String thePath,
                                                   Class<T> theWantedClass,
                                                   boolean theCreate,
                                                   boolean theAddExtension)
        Returns values stored in an element identified by its path. The list of values is of type theWantedClass.
        Type Parameters:
        T - Type declared by theWantedClass
        Parameters:
        theElement - The element to be accessed. Must not be null.
        thePath - The path for the element to be accessed.
        theWantedClass - The desired class to be returned in a list.
        theCreate - When set to true, the terser will create a null-valued element where none exists.
        theAddExtension - When set to true, the terser will add a null-valued extension where one or more such extensions already exist.
        Returns:
        A list of values of type theWantedClass.
      • isSourceInCompartmentForTarget

        public boolean isSourceInCompartmentForTarget​(String theCompartmentName,
                                                      IBaseResource theSource,
                                                      IIdType theTarget)
        Returns true if theSource is in the compartment named theCompartmentName belonging to resource theTarget
        Parameters:
        theCompartmentName - The name of the compartment
        theSource - The potential member of the compartment
        theTarget - The owner of the compartment. Note that both the resource type and ID must be filled in on this IIdType or the method will throw an IllegalArgumentException
        Returns:
        true if theSource is in the compartment
        Throws:
        IllegalArgumentException - If theTarget does not contain both a resource type and ID
      • visit

        public void visit​(IBase theElement,
                          IModelVisitor2 theVisitor)
        Visit all elements in a given resource or element

        THIS ALTERNATE METHOD IS STILL EXPERIMENTAL! USE WITH CAUTION

        Note on scope: This method will descend into any contained resources (IResource.getContained()) as well, but will not descend into linked resources (e.g. BaseResourceReferenceDt.getResource()) or embedded resources (e.g. Bundle.entry.resource)

        Parameters:
        theElement - The element to visit
        theVisitor - The visitor
      • getAllEmbeddedResources

        public Collection<IBaseResourcegetAllEmbeddedResources​(IBaseResource theResource,
                                                                 boolean theRecurse)
        Returns all embedded resources that are found embedded within theResource. An embedded resource is a resource that can be found as a direct child within a resource, as opposed to being referenced by the resource.

        Examples include resources found within Bundle.entry.resource and Parameters.parameter.resource, as well as contained resources found within Resource.contained

        Parameters:
        theRecurse - Should embedded resources be recursively scanned for further embedded resources
        Returns:
        A collection containing the embedded resources. Order is arbitrary.
      • addElement

        @Nonnull
        public <T extends IBase> T addElement​(@Nonnull
                                              IBase theTarget,
                                              @Nonnull
                                              String thePath)
        Adds and returns a new element at the given path within the given structure. The paths used here are not FHIRPath expressions but instead just simple dot-separated path expressions.

        Only the last entry in the path is always created, existing repetitions of elements before the final dot are returned if they exists (although they are created if they do not). For example, given the path Patient.name.given, a new repetition of given is always added to the first (index 0) repetition of the name. If an index-0 repetition of name already exists, it is added to. If one does not exist, it if created and then added to.

        If the last element in the path refers to a non-repeatable element that is already present and is not empty, a DataFormatException error will be thrown.

        Parameters:
        theTarget - The element to add to. This will often be a resource instance, but does not need to be.
        thePath - The path.
        Returns:
        The newly added element
        Throws:
        DataFormatException - If the path is invalid or does not end with either a repeatable element, or an element that is non-repeatable but not already populated.
      • addElement

        @Nonnull
        public <T extends IBase> T addElement​(@Nonnull
                                              IBase theTarget,
                                              @Nonnull
                                              String thePath,
                                              @Nullable
                                              String theValue)
        Adds and returns a new element at the given path within the given structure. The paths used here are not FHIRPath expressions but instead just simple dot-separated path expressions.

        This method follows all of the same semantics as addElement(IBase, String) but it requires the path to point to an element with a primitive datatype and set the value of the datatype to the given value.

        Parameters:
        theTarget - The element to add to. This will often be a resource instance, but does not need to be.
        thePath - The path.
        theValue - The value to set, or null.
        Returns:
        The newly added element
        Throws:
        DataFormatException - If the path is invalid or does not end with either a repeatable element, or an element that is non-repeatable but not already populated.
      • setElement

        @Nonnull
        public <T extends IBase> T setElement​(@Nonnull
                                              IBase theTarget,
                                              @Nonnull
                                              String thePath,
                                              @Nullable
                                              String theValue)
        Adds and returns a new element at the given path within the given structure. The paths used here are not FHIRPath expressions but instead just simple dot-separated path expressions.

        This method follows all of the same semantics as addElement(IBase, String) but it requires the path to point to an element with a primitive datatype and set the value of the datatype to the given value.

        Parameters:
        theTarget - The element to add to. This will often be a resource instance, but does not need to be.
        thePath - The path.
        theValue - The value to set, or null.
        Returns:
        The newly added element
        Throws:
        DataFormatException - If the path is invalid or does not end with either a repeatable element, or an element that is non-repeatable but not already populated.
      • addElements

        public void addElements​(IBase theTarget,
                                String thePath,
                                Collection<String> theValues)
        This method has the same semantics as addElement(IBase, String, String) but adds a collection of primitives instead of a single one.
        Parameters:
        theTarget - The element to add to. This will often be a resource instance, but does not need to be.
        thePath - The path.
        theValues - The values to set, or null.