Package org.hl7.fhir.r4.conformance
Class ProfileUtilities
- java.lang.Object
-
- org.hl7.fhir.utilities.TranslatingUtilities
-
- org.hl7.fhir.r4.utils.TranslatingUtilities
-
- org.hl7.fhir.r4.conformance.ProfileUtilities
-
public class ProfileUtilities extends TranslatingUtilities
This class provides a set of utility operations for working with Profiles. Key functionality: * getChildMap --? * getChildList * generateSnapshot: Given a base (snapshot) profile structure, and a differential profile, generate a new snapshot profile * closeDifferential: fill out a differential by excluding anything not mentioned * generateExtensionsTable: generate the HTML for a hierarchical table presentation of the extensions * generateTable: generate the HTML for a hierarchical table presentation of a structure * generateSpanningTable: generate the HTML for a table presentation of a network of structures, starting at a nominated point * summarize: describe the contents of a profile note to maintainers: Do not make modifications to the snapshot generation without first changing the snapshot generation test cases to demonstrate the grounds for your change- Author:
- Grahame
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classProfileUtilities.ElementDefinitionComparerstatic classProfileUtilities.ElementDefinitionHolderclassProfileUtilities.ElementRedirectionclassProfileUtilities.ExtensionContextstatic interfaceProfileUtilities.ProfileKnowledgeProviderclassProfileUtilities.SliceListclassProfileUtilities.SpanEntryclassProfileUtilities.TypeSlice-
Nested classes/interfaces inherited from class org.hl7.fhir.r4.utils.TranslatingUtilities
TranslatingUtilities.TranslationServices
-
-
Field Summary
Fields Modifier and Type Field Description static StringDERIVATION_POINTERstatic StringIS_DERIVEDstatic intSTATUS_ERRORstatic intSTATUS_FATALstatic intSTATUS_HINTstatic intSTATUS_OKstatic intSTATUS_WARNINGstatic StringUD_ERROR_STATUS
-
Constructor Summary
Constructors Constructor Description ProfileUtilities(IWorkerContext context, List<org.hl7.fhir.utilities.validation.ValidationMessage> messages, ProfileUtilities.ProfileKnowledgeProvider pkp)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static StringbuildR2Discriminator(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent t)voidcleanUpDifferential(StructureDefinition sd)voidcloseDifferential(StructureDefinition base, StructureDefinition derived)static StringdescribeExtensionContext(StructureDefinition ext)StringdescribeSlice(ElementDefinition.ElementDefinitionSlicingComponent slicing)voidgenerateCsvs(OutputStream dest, StructureDefinition structure, boolean asXml)List<Element>generateExamples(StructureDefinition sd, boolean evenWhenNoExamples)org.hl7.fhir.utilities.xhtml.XhtmlNodegenerateExtensionTable(String defFile, StructureDefinition ed, String imageFolder, boolean inlineGraphics, boolean full, String corePath, String imagePath, Set<String> outputTracker)org.hl7.fhir.utilities.xhtml.XhtmlNodegenerateGrid(String defFile, StructureDefinition profile, String imageFolder, boolean inlineGraphics, String profileBaseFileName, String corePath, String imagePath, Set<String> outputTracker)voidgenerateSchematrons(OutputStream dest, StructureDefinition structure)voidgenerateSnapshot(StructureDefinition base, StructureDefinition derived, String url, String webUrl, String profileName)Given a base (snapshot) profile structure, and a differential profile, generate a new snapshot profileorg.hl7.fhir.utilities.xhtml.XhtmlNodegenerateSpanningTable(StructureDefinition profile, String imageFolder, boolean onlyConstraints, String constraintPrefix, Set<String> outputTracker)org.hl7.fhir.utilities.xhtml.XhtmlNodegenerateTable(String defFile, StructureDefinition profile, boolean diff, String imageFolder, boolean inlineGraphics, String profileBaseFileName, boolean snapshot, String corePath, String imagePath, boolean logicalModel, boolean allInvariants, Set<String> outputTracker)voidgenerateXlsx(OutputStream dest, StructureDefinition structure, boolean asXml, boolean hideMustSupportFalse)voidgenTargetLink(org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator gen, String profileBaseFileName, String corePath, org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator.Cell c, ElementDefinition.TypeRefComponent t, String u)static List<ElementDefinition>getChildList(StructureDefinition profile, String path, String id)Given a Structure, navigate to the element given by the path and return the direct children of that elementstatic List<ElementDefinition>getChildList(StructureDefinition profile, String path, String id, boolean diff)static List<ElementDefinition>getChildList(StructureDefinition structure, ElementDefinition element)static List<ElementDefinition>getChildList(StructureDefinition structure, ElementDefinition element, boolean diff)static List<ElementDefinition>getChildMap(StructureDefinition profile, ElementDefinition element)ProfileUtilities.ElementDefinitionComparergetComparer(ProfileUtilities.ElementDefinitionComparer cmp, ProfileUtilities.ElementDefinitionHolder child)StructureDefinitiongetProfile(StructureDefinition source, String url)static List<ElementDefinition>getSliceList(StructureDefinition profile, ElementDefinition element)org.hl7.fhir.utilities.TerminologyServiceOptionsgetTerminologyServiceOptions()org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator.TableModelinitSpanningTable(org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator gen, String prefix, boolean isLogical, String id)static ElementDefinition.ElementDefinitionSlicingDiscriminatorComponentinterpretR2Discriminator(String discriminator, boolean isExists)booleanisDebug()booleanisIgmode()booleanisNewSlicingProcessing()booleanisPrimitive(String value)booleanisThrowException()static StructureDefinitionmakeExtensionForVersionedURL(IWorkerContext context, String url)voidpopulateLogicalSnapshot(StructureDefinition sd)static StringsdNs(String type, String overrideVersionNs)voidsetDebug(boolean debug)voidsetIds(StructureDefinition sd, boolean checkFirst)voidsetIgmode(boolean igmode)voidsetNewSlicingProcessing(boolean newSlicingProcessing)voidsetTerminologyServiceOptions(org.hl7.fhir.utilities.TerminologyServiceOptions terminologyServiceOptions)voidsetThrowException(boolean exception)voidsortDifferential(StructureDefinition base, StructureDefinition diff, String name, List<String> errors)static StringtypeCode(List<ElementDefinition.TypeRefComponent> types)voidupdateMaps(StructureDefinition base, StructureDefinition derived)-
Methods inherited from class org.hl7.fhir.r4.utils.TranslatingUtilities
egt, gt
-
-
-
-
Field Detail
-
STATUS_OK
public static final int STATUS_OK
- See Also:
- Constant Field Values
-
STATUS_HINT
public static final int STATUS_HINT
- See Also:
- Constant Field Values
-
STATUS_WARNING
public static final int STATUS_WARNING
- See Also:
- Constant Field Values
-
STATUS_ERROR
public static final int STATUS_ERROR
- See Also:
- Constant Field Values
-
STATUS_FATAL
public static final int STATUS_FATAL
- See Also:
- Constant Field Values
-
DERIVATION_POINTER
public static final String DERIVATION_POINTER
- See Also:
- Constant Field Values
-
IS_DERIVED
public static final String IS_DERIVED
- See Also:
- Constant Field Values
-
UD_ERROR_STATUS
public static final String UD_ERROR_STATUS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ProfileUtilities
public ProfileUtilities(IWorkerContext context, List<org.hl7.fhir.utilities.validation.ValidationMessage> messages, ProfileUtilities.ProfileKnowledgeProvider pkp)
-
-
Method Detail
-
isIgmode
public boolean isIgmode()
-
setIgmode
public void setIgmode(boolean igmode)
-
getChildMap
public static List<ElementDefinition> getChildMap(StructureDefinition profile, ElementDefinition element) throws org.hl7.fhir.exceptions.DefinitionException
- Throws:
org.hl7.fhir.exceptions.DefinitionException
-
getSliceList
public static List<ElementDefinition> getSliceList(StructureDefinition profile, ElementDefinition element) throws org.hl7.fhir.exceptions.DefinitionException
- Throws:
org.hl7.fhir.exceptions.DefinitionException
-
getChildList
public static List<ElementDefinition> getChildList(StructureDefinition profile, String path, String id)
Given a Structure, navigate to the element given by the path and return the direct children of that element- Parameters:
structure- The structure to navigate intopath- The path of the element within the structure to get the children for- Returns:
- A List containing the element children (all of them are Elements)
-
getChildList
public static List<ElementDefinition> getChildList(StructureDefinition profile, String path, String id, boolean diff)
-
getChildList
public static List<ElementDefinition> getChildList(StructureDefinition structure, ElementDefinition element, boolean diff)
-
getChildList
public static List<ElementDefinition> getChildList(StructureDefinition structure, ElementDefinition element)
-
updateMaps
public void updateMaps(StructureDefinition base, StructureDefinition derived) throws org.hl7.fhir.exceptions.DefinitionException
- Throws:
org.hl7.fhir.exceptions.DefinitionException
-
generateSnapshot
public void generateSnapshot(StructureDefinition base, StructureDefinition derived, String url, String webUrl, String profileName) throws org.hl7.fhir.exceptions.DefinitionException, org.hl7.fhir.exceptions.FHIRException
Given a base (snapshot) profile structure, and a differential profile, generate a new snapshot profile- Parameters:
base- - the base structure on which the differential will be applieddifferential- - the differential to apply to the baseurl- - where the base has relative urls for profile references, these need to be converted to absolutes by prepending this URL (e.g. the canonical URL)webUrl- - where the base has relative urls in markdown, these need to be converted to absolutes by prepending this URL (this is not the same as the canonical URL)trimDifferential- - if this is true, then the snap short generator will remove any material in the element definitions that is not different to the base- Throws:
org.hl7.fhir.exceptions.FHIRExceptionorg.hl7.fhir.exceptions.DefinitionExceptionException
-
typeCode
public static String typeCode(List<ElementDefinition.TypeRefComponent> types)
-
closeDifferential
public void closeDifferential(StructureDefinition base, StructureDefinition derived) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
generateExtensionTable
public org.hl7.fhir.utilities.xhtml.XhtmlNode generateExtensionTable(String defFile, StructureDefinition ed, String imageFolder, boolean inlineGraphics, boolean full, String corePath, String imagePath, Set<String> outputTracker) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
genTargetLink
public void genTargetLink(org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator gen, String profileBaseFileName, String corePath, org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator.Cell c, ElementDefinition.TypeRefComponent t, String u)
-
describeExtensionContext
public static String describeExtensionContext(StructureDefinition ext)
-
generateTable
public org.hl7.fhir.utilities.xhtml.XhtmlNode generateTable(String defFile, StructureDefinition profile, boolean diff, String imageFolder, boolean inlineGraphics, String profileBaseFileName, boolean snapshot, String corePath, String imagePath, boolean logicalModel, boolean allInvariants, Set<String> outputTracker) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
generateGrid
public org.hl7.fhir.utilities.xhtml.XhtmlNode generateGrid(String defFile, StructureDefinition profile, String imageFolder, boolean inlineGraphics, String profileBaseFileName, String corePath, String imagePath, Set<String> outputTracker) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
describeSlice
public String describeSlice(ElementDefinition.ElementDefinitionSlicingComponent slicing)
-
isPrimitive
public boolean isPrimitive(String value)
-
getProfile
public StructureDefinition getProfile(StructureDefinition source, String url)
-
sortDifferential
public void sortDifferential(StructureDefinition base, StructureDefinition diff, String name, List<String> errors) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
getComparer
public ProfileUtilities.ElementDefinitionComparer getComparer(ProfileUtilities.ElementDefinitionComparer cmp, ProfileUtilities.ElementDefinitionHolder child) throws org.hl7.fhir.exceptions.FHIRException, Error
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionError
-
generateSchematrons
public void generateSchematrons(OutputStream dest, StructureDefinition structure) throws IOException, org.hl7.fhir.exceptions.DefinitionException
- Throws:
IOExceptionorg.hl7.fhir.exceptions.DefinitionException
-
generateCsvs
public void generateCsvs(OutputStream dest, StructureDefinition structure, boolean asXml) throws IOException, org.hl7.fhir.exceptions.DefinitionException, Exception
- Throws:
IOExceptionorg.hl7.fhir.exceptions.DefinitionExceptionException
-
generateXlsx
public void generateXlsx(OutputStream dest, StructureDefinition structure, boolean asXml, boolean hideMustSupportFalse) throws IOException, org.hl7.fhir.exceptions.DefinitionException, Exception
- Throws:
IOExceptionorg.hl7.fhir.exceptions.DefinitionExceptionException
-
setIds
public void setIds(StructureDefinition sd, boolean checkFirst) throws org.hl7.fhir.exceptions.DefinitionException
- Throws:
org.hl7.fhir.exceptions.DefinitionException
-
generateExamples
public List<Element> generateExamples(StructureDefinition sd, boolean evenWhenNoExamples) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
populateLogicalSnapshot
public void populateLogicalSnapshot(StructureDefinition sd) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
cleanUpDifferential
public void cleanUpDifferential(StructureDefinition sd)
-
generateSpanningTable
public org.hl7.fhir.utilities.xhtml.XhtmlNode generateSpanningTable(StructureDefinition profile, String imageFolder, boolean onlyConstraints, String constraintPrefix, Set<String> outputTracker) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
initSpanningTable
public org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator.TableModel initSpanningTable(org.hl7.fhir.utilities.xhtml.HierarchicalTableGenerator gen, String prefix, boolean isLogical, String id)
-
interpretR2Discriminator
public static ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent interpretR2Discriminator(String discriminator, boolean isExists)
-
buildR2Discriminator
public static String buildR2Discriminator(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent t) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
makeExtensionForVersionedURL
public static StructureDefinition makeExtensionForVersionedURL(IWorkerContext context, String url)
-
isThrowException
public boolean isThrowException()
-
setThrowException
public void setThrowException(boolean exception)
-
getTerminologyServiceOptions
public org.hl7.fhir.utilities.TerminologyServiceOptions getTerminologyServiceOptions()
-
setTerminologyServiceOptions
public void setTerminologyServiceOptions(org.hl7.fhir.utilities.TerminologyServiceOptions terminologyServiceOptions)
-
isNewSlicingProcessing
public boolean isNewSlicingProcessing()
-
setNewSlicingProcessing
public void setNewSlicingProcessing(boolean newSlicingProcessing)
-
isDebug
public boolean isDebug()
-
setDebug
public void setDebug(boolean debug)
-
-