Merge pull request #895 from hapifhir/gg-202208-r5-build-issues

R5 related fixes
This commit is contained in:
Grahame Grieve 2022-08-12 22:02:22 +10:00 committed by GitHub
commit b38c4b31ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 92 additions and 11 deletions

View File

@ -3721,14 +3721,19 @@ public class ProfileUtilities extends TranslatingUtilities {
if (ref != null) { if (ref != null) {
String[] parts = ref.split("\\|"); String[] parts = ref.split("\\|");
if (parts[0].startsWith("http:") || parts[0].startsWith("https:")) { if (parts[0].startsWith("http:") || parts[0].startsWith("https:")) {
// c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], "<" + parts[1] + ">", t.getCode()))); Lloyd if (p.hasExtension(ToolingExtensions.EXT_PROFILE_ELEMENT)) {
c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], parts[1], t.getWorkingCode()))); String pp = p.getExtensionString(ToolingExtensions.EXT_PROFILE_ELEMENT);
pp = pp.substring(pp.indexOf("."));
c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], parts[1]+pp, t.getWorkingCode())));
} else {
c.addPiece(checkForNoChange(t, gen.new Piece(parts[0], parts[1], t.getWorkingCode())));
}
} else { } else {
// c.addPiece(checkForNoChange(t, gen.new Piece((t.getProfile().startsWith(corePath)? corePath: "")+parts[0], "<" + parts[1] + ">", t.getCode())));
c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath+"StructureDefinition")? corePath: "")+parts[0], parts[1], t.getWorkingCode()))); c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath+"StructureDefinition")? corePath: "")+parts[0], parts[1], t.getWorkingCode())));
} }
} else } else {
c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath)? corePath: "")+ref, t.getWorkingCode(), null))); c.addPiece(checkForNoChange(t, gen.new Piece((p.getValue().startsWith(corePath)? corePath: "")+ref, t.getWorkingCode(), null)));
}
if (!mustSupportMode && isMustSupport(p) && e.getMustSupport()) { if (!mustSupportMode && isMustSupport(p) && e.getMustSupport()) {
c.addPiece(gen.new Piece(null, " ", null)); c.addPiece(gen.new Piece(null, " ", null));
c.addStyledText(translate("sd.table", "This profile must be supported"), "S", "white", "red", null, false); c.addStyledText(translate("sd.table", "This profile must be supported"), "S", "white", "red", null, false);
@ -5026,7 +5031,7 @@ public class ProfileUtilities extends TranslatingUtilities {
Cell c = gen.new Cell(); Cell c = gen.new Cell();
row.getCells().add(c); row.getCells().add(c);
c.addPiece(gen.new Piece((ed.getBase().getPath().equals(ed.getPath()) ? ref+ed.getPath() : (VersionUtilities.isThisOrLater("4.1", context.getVersion()) ? corePath+"types-definitions.html#"+ed.getBase().getPath() : corePath+"element-definitions.html#"+ed.getBase().getPath())), t.getName(), null)); c.addPiece(gen.new Piece((ed.getBase().getPath().equals(ed.getPath()) ? ref+ed.getPath() : (VersionUtilities.isR5Ver(context.getVersion()) ? corePath+"types-definitions.html#"+ed.getBase().getPath() : corePath+"element-definitions.html#"+ed.getBase().getPath())), t.getName(), null));
c = gen.new Cell(); c = gen.new Cell();
row.getCells().add(c); row.getCells().add(c);

View File

@ -21,6 +21,7 @@ public class CanonicalResourceManager<T extends CanonicalResource> {
private final String[] INVALID_TERMINOLOGY_URLS = { private final String[] INVALID_TERMINOLOGY_URLS = {
"http://snomed.info/sct", "http://snomed.info/sct",
"http://dicom.nema.org/resources/ontology/DCM",
"http://nucc.org/provider-taxonomy" "http://nucc.org/provider-taxonomy"
}; };

View File

@ -115,7 +115,7 @@ public class RenderingContext {
private String tooCostlyNoteNotEmptyDependent; private String tooCostlyNoteNotEmptyDependent;
private List<String> codeSystemPropList = new ArrayList<>(); private List<String> codeSystemPropList = new ArrayList<>();
private ProfileUtilities profileUtilities; private ProfileUtilities profileUtilitiesR;
private String definitionsTarget; private String definitionsTarget;
private String destDir; private String destDir;
private boolean inlineGraphics; private boolean inlineGraphics;
@ -152,7 +152,6 @@ public class RenderingContext {
} }
// default to US locale - discussion here: https://github.com/hapifhir/org.hl7.fhir.core/issues/666 // default to US locale - discussion here: https://github.com/hapifhir/org.hl7.fhir.core/issues/666
this.locale = new Locale.Builder().setLanguageTag("en-US").build(); this.locale = new Locale.Builder().setLanguageTag("en-US").build();
profileUtilities = new ProfileUtilities(worker, null, null);
} }
public RenderingContext copy() { public RenderingContext copy() {
RenderingContext res = new RenderingContext(worker, markdown, terminologyServiceOptions, specificationLink, localPrefix, lang, mode); RenderingContext res = new RenderingContext(worker, markdown, terminologyServiceOptions, specificationLink, localPrefix, lang, mode);
@ -174,7 +173,7 @@ public class RenderingContext {
res.tooCostlyNoteNotEmptyDependent = tooCostlyNoteNotEmptyDependent; res.tooCostlyNoteNotEmptyDependent = tooCostlyNoteNotEmptyDependent;
res.codeSystemPropList.addAll(codeSystemPropList); res.codeSystemPropList.addAll(codeSystemPropList);
res.profileUtilities = profileUtilities; res.profileUtilitiesR = profileUtilitiesR;
res.definitionsTarget = definitionsTarget; res.definitionsTarget = definitionsTarget;
res.destDir = destDir; res.destDir = destDir;
res.addGeneratedNarrativeHeader = addGeneratedNarrativeHeader; res.addGeneratedNarrativeHeader = addGeneratedNarrativeHeader;
@ -204,7 +203,10 @@ public class RenderingContext {
// -- 2. Markdown support ------------------------------------------------------- // -- 2. Markdown support -------------------------------------------------------
public ProfileUtilities getProfileUtilities() { public ProfileUtilities getProfileUtilities() {
return profileUtilities; if (profileUtilitiesR == null) {
profileUtilitiesR = new ProfileUtilities(worker, null, null);
}
return profileUtilitiesR;
} }
public IWorkerContext getWorker() { public IWorkerContext getWorker() {
@ -331,7 +333,7 @@ public class RenderingContext {
} }
public RenderingContext setProfileUtilities(ProfileUtilities profileUtilities) { public RenderingContext setProfileUtilities(ProfileUtilities profileUtilities) {
this.profileUtilities = profileUtilities; this.profileUtilitiesR = profileUtilities;
return this; return this;
} }

View File

@ -8,24 +8,31 @@ import java.util.stream.Stream;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.NotImplementedException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.r5.conformance.ProfileUtilities;
import org.hl7.fhir.r5.conformance.ProfileUtilities.ProfileKnowledgeProvider;
import org.hl7.fhir.r5.context.IWorkerContext; import org.hl7.fhir.r5.context.IWorkerContext;
import org.hl7.fhir.r5.elementmodel.Manager; import org.hl7.fhir.r5.elementmodel.Manager;
import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat; import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat;
import org.hl7.fhir.r5.formats.JsonParser; import org.hl7.fhir.r5.formats.JsonParser;
import org.hl7.fhir.r5.formats.XmlParser; import org.hl7.fhir.r5.formats.XmlParser;
import org.hl7.fhir.r5.model.Base; import org.hl7.fhir.r5.model.Base;
import org.hl7.fhir.r5.model.ElementDefinition.ElementDefinitionBindingComponent;
import org.hl7.fhir.r5.model.Resource; import org.hl7.fhir.r5.model.Resource;
import org.hl7.fhir.r5.model.StructureDefinition;
import org.hl7.fhir.r5.renderers.RendererFactory; import org.hl7.fhir.r5.renderers.RendererFactory;
import org.hl7.fhir.r5.renderers.utils.ElementWrappers; import org.hl7.fhir.r5.renderers.utils.ElementWrappers;
import org.hl7.fhir.r5.renderers.utils.RenderingContext; import org.hl7.fhir.r5.renderers.utils.RenderingContext;
import org.hl7.fhir.r5.renderers.utils.RenderingContext.ITypeParser; import org.hl7.fhir.r5.renderers.utils.RenderingContext.ITypeParser;
import org.hl7.fhir.r5.renderers.utils.RenderingContext.ResourceRendererMode; import org.hl7.fhir.r5.renderers.utils.RenderingContext.ResourceRendererMode;
import org.hl7.fhir.r5.test.NarrativeGenerationTests.TestProfileKnowledgeProvider;
import org.hl7.fhir.r5.test.utils.CompareUtilities; import org.hl7.fhir.r5.test.utils.CompareUtilities;
import org.hl7.fhir.r5.test.utils.TestingUtilities; import org.hl7.fhir.r5.test.utils.TestingUtilities;
import org.hl7.fhir.utilities.TerminologyServiceOptions; import org.hl7.fhir.utilities.TerminologyServiceOptions;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
import org.hl7.fhir.utilities.xhtml.XhtmlNode; import org.hl7.fhir.utilities.xhtml.XhtmlNode;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
@ -40,6 +47,64 @@ import org.xml.sax.SAXException;
public class NarrativeGenerationTests { public class NarrativeGenerationTests {
public class TestProfileKnowledgeProvider implements ProfileKnowledgeProvider {
private IWorkerContext context;
public TestProfileKnowledgeProvider(IWorkerContext context) {
this.context = context;
}
@Override
public boolean isDatatype(String typeSimple) {
throw new NotImplementedException();
}
@Override
public boolean isResource(String typeSimple) {
throw new NotImplementedException();
}
@Override
public boolean hasLinkFor(String typeSimple) {
throw new NotImplementedException();
}
@Override
public String getLinkFor(String corePath, String typeSimple) {
throw new NotImplementedException();
}
@Override
public BindingResolution resolveBinding(StructureDefinition def, ElementDefinitionBindingComponent binding, String path) throws FHIRException {
throw new NotImplementedException();
}
@Override
public BindingResolution resolveBinding(StructureDefinition def, String url, String path) throws FHIRException {
throw new NotImplementedException();
}
@Override
public String getLinkForProfile(StructureDefinition profile, String url) {
if ("http://hl7.org/fhir/StructureDefinition/Composition".equals(url)) {
return "http://hl7.org/fhir/composition.html|TestComposition";
}
throw new NotImplementedException();
}
@Override
public boolean prependLinks() {
throw new NotImplementedException();
}
@Override
public String getLinkForUrl(String corePath, String s) {
throw new NotImplementedException();
}
}
public class TestTypeParser implements ITypeParser { public class TestTypeParser implements ITypeParser {
@Override @Override
@ -111,7 +176,7 @@ public class NarrativeGenerationTests {
@MethodSource("data") @MethodSource("data")
public void test(String id, TestDetails test) throws Exception { public void test(String id, TestDetails test) throws Exception {
RenderingContext rc = new RenderingContext(context, null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER); RenderingContext rc = new RenderingContext(context, null, null, "http://hl7.org/fhir", "", null, ResourceRendererMode.END_USER);
rc.setDestDir(""); rc.setDestDir(Utilities.path("[tmp]", "narrative"));
rc.setHeader(test.isHeader()); rc.setHeader(test.isHeader());
rc.setDefinitionsTarget("test.html"); rc.setDefinitionsTarget("test.html");
rc.setTerminologyServiceOptions(TerminologyServiceOptions.defaults()); rc.setTerminologyServiceOptions(TerminologyServiceOptions.defaults());
@ -123,6 +188,7 @@ public class NarrativeGenerationTests {
rc.setDateTimeFormatString("yyyy-MM-dd'T'HH:mm:ssZZZZZ"); rc.setDateTimeFormatString("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
rc.setDateFormatString("yyyy-MM-dd"); rc.setDateFormatString("yyyy-MM-dd");
rc.setMode(test.technical ? ResourceRendererMode.TECHNICAL : ResourceRendererMode.END_USER); rc.setMode(test.technical ? ResourceRendererMode.TECHNICAL : ResourceRendererMode.END_USER);
rc.setProfileUtilities(new ProfileUtilities(rc.getContext(), null, new TestProfileKnowledgeProvider(rc.getContext())));
Resource source; Resource source;

View File

@ -558,5 +558,12 @@ public class VersionUtilities {
return version != null && (version.startsWith("4.") || version.startsWith("5.") || "current".equals(version)); return version != null && (version.startsWith("4.") || version.startsWith("5.") || "current".equals(version));
} }
public static boolean refersTo(String refVer, String v) {
if (v.length() > refVer.length()) {
v = v.substring(0, refVer.length());
}
return refVer.equals(v);
}
} }