Merge pull request #915 from hapifhir/gg-202209-r5-ballot
Gg 202209 r5 ballot
This commit is contained in:
commit
a6df7bfc0b
|
@ -1,33 +1,50 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
<attribute name="test" value="true"/>
|
<attribute name="test" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
<attribute name="test" value="true"/>
|
<attribute name="test" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/classes"/>
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
</classpath>
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
|
|
|
@ -20,4 +20,15 @@
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1662504185037</id>
|
||||||
|
<name></name>
|
||||||
|
<type>30</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||||
|
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
p.addText(Utilities.capitalize(cm.getStatus().toString())+" (not intended for production usage). ");
|
p.addText(Utilities.capitalize(cm.getStatus().toString())+" (not intended for production usage). ");
|
||||||
else
|
else
|
||||||
p.addText(Utilities.capitalize(cm.getStatus().toString())+". ");
|
p.addText(Utilities.capitalize(cm.getStatus().toString())+". ");
|
||||||
p.tx("Published on "+(cm.hasDate() ? cm.getDateElement().toHumanDisplay() : "?ngen-10?")+" by "+cm.getPublisher());
|
p.tx("Published on "+(cm.hasDate() ? display(cm.getDateElement()) : "?ngen-10?")+" by "+cm.getPublisher());
|
||||||
if (!cm.getContact().isEmpty()) {
|
if (!cm.getContact().isEmpty()) {
|
||||||
p.tx(" (");
|
p.tx(" (");
|
||||||
boolean firsti = true;
|
boolean firsti = true;
|
||||||
|
@ -129,14 +129,28 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
XhtmlNode tr = tbl.tr();
|
XhtmlNode tr = tbl.tr();
|
||||||
tr.td().b().tx("Source Code");
|
tr.td().b().tx("Source Code");
|
||||||
tr.td().b().tx("Relationship");
|
tr.td().b().tx("Relationship");
|
||||||
tr.td().b().tx("Destination Code");
|
tr.td().b().tx("Target Code");
|
||||||
if (comment)
|
if (comment)
|
||||||
tr.td().b().tx("Comment");
|
tr.td().b().tx("Comment");
|
||||||
|
tr = tbl.tr();
|
||||||
|
XhtmlNode td = tr.td().colspan(comment ? "4" : "3");
|
||||||
|
td.tx("Mapping from ");
|
||||||
|
if (grp.hasSource()) {
|
||||||
|
renderCanonical(cm, td, grp.getSource());
|
||||||
|
} else {
|
||||||
|
td.code("unspecified code system");
|
||||||
|
}
|
||||||
|
td.tx(" to ");
|
||||||
|
if (grp.hasTarget()) {
|
||||||
|
renderCanonical(cm, td, grp.getTarget());
|
||||||
|
} else {
|
||||||
|
td.code("unspecified code system");
|
||||||
|
}
|
||||||
for (SourceElementComponent ccl : grp.getElement()) {
|
for (SourceElementComponent ccl : grp.getElement()) {
|
||||||
tr = tbl.tr();
|
tr = tbl.tr();
|
||||||
XhtmlNode td = tr.td();
|
td = tr.td();
|
||||||
td.addText(ccl.getCode());
|
td.addText(ccl.getCode());
|
||||||
display = getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), ccl.getCode());
|
display = ccl.hasDisplay() ? ccl.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getSource()), versionFromCanonical(grp.getSource()), ccl.getCode());
|
||||||
if (display != null && !isSameCodeAndDisplay(ccl.getCode(), display))
|
if (display != null && !isSameCodeAndDisplay(ccl.getCode(), display))
|
||||||
td.tx(" ("+display+")");
|
td.tx(" ("+display+")");
|
||||||
TargetElementComponent ccm = ccl.getTarget().get(0);
|
TargetElementComponent ccm = ccl.getTarget().get(0);
|
||||||
|
@ -148,7 +162,7 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
}
|
}
|
||||||
td = tr.td();
|
td = tr.td();
|
||||||
td.addText(ccm.getCode());
|
td.addText(ccm.getCode());
|
||||||
display = getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), ccm.getCode());
|
display = ccm.hasDisplay() ? ccm.getDisplay() : getDisplayForConcept(systemFromCanonical(grp.getTarget()), versionFromCanonical(grp.getTarget()), ccm.getCode());
|
||||||
if (display != null && !isSameCodeAndDisplay(ccm.getCode(), display))
|
if (display != null && !isSameCodeAndDisplay(ccm.getCode(), display))
|
||||||
td.tx(" ("+display+")");
|
td.tx(" ("+display+")");
|
||||||
if (comment)
|
if (comment)
|
||||||
|
@ -174,7 +188,7 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
if (hasRelationships) {
|
if (hasRelationships) {
|
||||||
tr.td().b().tx("Relationship");
|
tr.td().b().tx("Relationship");
|
||||||
}
|
}
|
||||||
tr.td().colspan(Integer.toString(1+targets.size())).b().tx("Destination Concept Details");
|
tr.td().colspan(Integer.toString(1+targets.size())).b().tx("Target Concept Details");
|
||||||
if (comment) {
|
if (comment) {
|
||||||
tr.td().b().tx("Comment");
|
tr.td().b().tx("Comment");
|
||||||
}
|
}
|
||||||
|
@ -403,7 +417,7 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
for (OtherElementComponent c : list) {
|
for (OtherElementComponent c : list) {
|
||||||
if (s.equals(c.getProperty()))
|
if (s.equals(c.getProperty()))
|
||||||
if (withSystem)
|
if (withSystem)
|
||||||
return c.getSystem()+" / "+c.getValue();
|
return /*c.getSystem()+" / "+*/c.getValue();
|
||||||
else
|
else
|
||||||
return c.getValue();
|
return c.getValue();
|
||||||
}
|
}
|
||||||
|
@ -412,8 +426,9 @@ public class ConceptMapRenderer extends TerminologyRenderer {
|
||||||
|
|
||||||
private String getDisplay(List<OtherElementComponent> list, String s) {
|
private String getDisplay(List<OtherElementComponent> list, String s) {
|
||||||
for (OtherElementComponent c : list) {
|
for (OtherElementComponent c : list) {
|
||||||
if (s.equals(c.getProperty()))
|
if (s.equals(c.getProperty())) {
|
||||||
return getDisplayForConcept(systemFromCanonical(c.getSystem()), versionFromCanonical(c.getSystem()), c.getValue());
|
// return getDisplayForConcept(systemFromCanonical(c.getSystem()), versionFromCanonical(c.getSystem()), c.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -713,7 +713,7 @@ public class QuestionnaireRenderer extends TerminologyRenderer {
|
||||||
XhtmlNode ans = item(ul, "Answers");
|
XhtmlNode ans = item(ul, "Answers");
|
||||||
if (!Utilities.noString(i.getAnswerValueSet()) && i.getAnswerValueSet().startsWith("#")) {
|
if (!Utilities.noString(i.getAnswerValueSet()) && i.getAnswerValueSet().startsWith("#")) {
|
||||||
ValueSet vs = (ValueSet) q.getContained(i.getAnswerValueSet().substring(1));
|
ValueSet vs = (ValueSet) q.getContained(i.getAnswerValueSet().substring(1));
|
||||||
if (vs == null) {
|
if (vs == null || !vs.hasUserData("path")) {
|
||||||
ans.tx(i.getAnswerValueSet());
|
ans.tx(i.getAnswerValueSet());
|
||||||
} else {
|
} else {
|
||||||
ans.ah(vs.getUserString("path")).tx(vs.present());
|
ans.ah(vs.getUserString("path")).tx(vs.present());
|
||||||
|
|
|
@ -8,16 +8,21 @@ import java.util.stream.Stream;
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.NotImplementedException;
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
import org.apache.commons.lang3.SystemUtils;
|
||||||
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.r4b.conformance.ProfileUtilities;
|
||||||
|
import org.hl7.fhir.r4b.conformance.ProfileUtilities.ProfileKnowledgeProvider;
|
||||||
import org.hl7.fhir.r4b.context.IWorkerContext;
|
import org.hl7.fhir.r4b.context.IWorkerContext;
|
||||||
import org.hl7.fhir.r4b.elementmodel.Manager;
|
import org.hl7.fhir.r4b.elementmodel.Manager;
|
||||||
import org.hl7.fhir.r4b.elementmodel.Manager.FhirFormat;
|
import org.hl7.fhir.r4b.elementmodel.Manager.FhirFormat;
|
||||||
import org.hl7.fhir.r4b.formats.JsonParser;
|
import org.hl7.fhir.r4b.formats.JsonParser;
|
||||||
import org.hl7.fhir.r4b.formats.XmlParser;
|
import org.hl7.fhir.r4b.formats.XmlParser;
|
||||||
import org.hl7.fhir.r4b.model.Base;
|
import org.hl7.fhir.r4b.model.Base;
|
||||||
|
import org.hl7.fhir.r4b.model.ElementDefinition.ElementDefinitionBindingComponent;
|
||||||
import org.hl7.fhir.r4b.model.Resource;
|
import org.hl7.fhir.r4b.model.Resource;
|
||||||
|
import org.hl7.fhir.r4b.model.StructureDefinition;
|
||||||
import org.hl7.fhir.r4b.renderers.RendererFactory;
|
import org.hl7.fhir.r4b.renderers.RendererFactory;
|
||||||
|
|
||||||
import org.hl7.fhir.r4b.renderers.utils.ElementWrappers;
|
import org.hl7.fhir.r4b.renderers.utils.ElementWrappers;
|
||||||
|
@ -28,6 +33,7 @@ import org.hl7.fhir.r4b.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;
|
||||||
|
@ -42,6 +48,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
|
||||||
|
@ -98,15 +162,7 @@ public class NarrativeGenerationTests {
|
||||||
List<Arguments> objects = new ArrayList<>();
|
List<Arguments> objects = new ArrayList<>();
|
||||||
while (test != null && test.getNodeName().equals("test")) {
|
while (test != null && test.getNodeName().equals("test")) {
|
||||||
TestDetails t = new TestDetails(test);
|
TestDetails t = new TestDetails(test);
|
||||||
if (t.getId().equals("sdc")) {
|
objects.add(Arguments.of(t.getId(), t));
|
||||||
if (SystemUtils.OS_NAME.contains(WINDOWS)) {
|
|
||||||
objects.add(Arguments.of(t.getId(), t));
|
|
||||||
} else {
|
|
||||||
System.out.println("sdc test not being adding because the current OS will not pass the test...");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
objects.add(Arguments.of(t.getId(), t));
|
|
||||||
}
|
|
||||||
test = XMLUtil.getNextSibling(test);
|
test = XMLUtil.getNextSibling(test);
|
||||||
}
|
}
|
||||||
return objects.stream();
|
return objects.stream();
|
||||||
|
@ -121,7 +177,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());
|
||||||
|
@ -135,6 +191,7 @@ public class NarrativeGenerationTests {
|
||||||
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;
|
||||||
|
@ -145,7 +202,7 @@ public class NarrativeGenerationTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
XhtmlNode x = RendererFactory.factory(source, rc).build(source);
|
XhtmlNode x = RendererFactory.factory(source, rc).build(source);
|
||||||
String target = TextFile.streamToString(TestingUtilities.loadTestResourceStream("r5", "narrative", test.getId() + ".html"));
|
String target = TextFile.streamToString(TestingUtilities.loadTestResourceStream("r4b", "narrative", test.getId() + ".html"));
|
||||||
String output = HEADER+new XhtmlComposer(true, true).compose(x)+FOOTER;
|
String output = HEADER+new XhtmlComposer(true, true).compose(x)+FOOTER;
|
||||||
String tfn = TestingUtilities.tempFile("narrative", test.getId() + ".target.html");
|
String tfn = TestingUtilities.tempFile("narrative", test.getId() + ".target.html");
|
||||||
String ofn = TestingUtilities.tempFile("narrative", test.getId() + ".output.html");
|
String ofn = TestingUtilities.tempFile("narrative", test.getId() + ".output.html");
|
||||||
|
@ -155,7 +212,7 @@ public class NarrativeGenerationTests {
|
||||||
Assertions.assertTrue(msg == null, "Output does not match expected: "+msg);
|
Assertions.assertTrue(msg == null, "Output does not match expected: "+msg);
|
||||||
|
|
||||||
if (test.isMeta()) {
|
if (test.isMeta()) {
|
||||||
org.hl7.fhir.r4b.elementmodel.Element e = Manager.parseSingle(context, TestingUtilities.loadTestResourceStream("r5", "narrative", test.getId() + ".xml"), FhirFormat.XML);
|
org.hl7.fhir.r4b.elementmodel.Element e = Manager.parseSingle(context, TestingUtilities.loadTestResourceStream("r4b", "narrative", test.getId() + ".xml"), FhirFormat.XML);
|
||||||
x = RendererFactory.factory(source, rc).render(new ElementWrappers.ResourceWrapperMetaElement(rc, e));
|
x = RendererFactory.factory(source, rc).render(new ElementWrappers.ResourceWrapperMetaElement(rc, e));
|
||||||
|
|
||||||
target = TextFile.streamToString(TestingUtilities.loadTestResourceStream("r4b", "narrative", test.getId() + "-meta.html"));
|
target = TextFile.streamToString(TestingUtilities.loadTestResourceStream("r4b", "narrative", test.getId() + "-meta.html"));
|
||||||
|
|
|
@ -310,12 +310,13 @@ public class XmlParser extends ParserBase {
|
||||||
while (n.getNextSibling() != null && n.getNodeType() != Node.ELEMENT_NODE) {
|
while (n.getNextSibling() != null && n.getNodeType() != Node.ELEMENT_NODE) {
|
||||||
n = n.getNextSibling();
|
n = n.getNextSibling();
|
||||||
}
|
}
|
||||||
while (n.getPreviousSibling() != null && n.getNodeType() != Node.ELEMENT_NODE) {
|
Node nt = n;
|
||||||
n = n.getPreviousSibling();
|
while (nt.getPreviousSibling() != null && nt.getNodeType() != Node.ELEMENT_NODE) {
|
||||||
|
nt = nt.getPreviousSibling();
|
||||||
}
|
}
|
||||||
line = line(n);
|
line = line(nt);
|
||||||
col = col(n);
|
col = col(nt);
|
||||||
logError(line, col, path, IssueType.STRUCTURE, context.formatMessage(I18nConstants.TEXT_SHOULD_NOT_BE_PRESENT, text), IssueSeverity.ERROR);
|
logError(line, col, path, IssueType.STRUCTURE, context.formatMessage(I18nConstants.TEXT_SHOULD_NOT_BE_PRESENT, Utilities.makeSingleLine(text)), IssueSeverity.ERROR);
|
||||||
}
|
}
|
||||||
n = n.getNextSibling();
|
n = n.getNextSibling();
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,11 +35,12 @@ public class OperationDefinitionRenderer extends TerminologyRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean render(XhtmlNode x, OperationDefinition opd) throws IOException, FHIRException, EOperationOutcome {
|
public boolean render(XhtmlNode x, OperationDefinition opd) throws IOException, FHIRException, EOperationOutcome {
|
||||||
x.h2().addText(opd.getName());
|
if (context.isHeader()) {
|
||||||
x.para().addText(Utilities.capitalize(opd.getKind().toString())+": "+opd.getName());
|
x.h2().addText(opd.getName());
|
||||||
x.para().tx("The official URL for this operation definition is: ");
|
x.para().addText(Utilities.capitalize(opd.getKind().toString())+": "+opd.getName());
|
||||||
x.pre().tx(opd.getUrl());
|
x.para().tx("The official URL for this operation definition is: ");
|
||||||
addMarkdown(x, opd.getDescription());
|
x.pre().tx(opd.getUrl());
|
||||||
|
addMarkdown(x, opd.getDescription());}
|
||||||
|
|
||||||
if (opd.getSystem())
|
if (opd.getSystem())
|
||||||
x.para().tx("URL: [base]/$"+opd.getCode());
|
x.para().tx("URL: [base]/$"+opd.getCode());
|
||||||
|
|
|
@ -123,11 +123,13 @@ public class QuestionnaireBuilder {
|
||||||
// we don't do the intensive parts of the work (save time)
|
// we don't do the intensive parts of the work (save time)
|
||||||
private Questionnaire prebuiltQuestionnaire;
|
private Questionnaire prebuiltQuestionnaire;
|
||||||
private ProfileUtilities profileUtilities;
|
private ProfileUtilities profileUtilities;
|
||||||
|
private String rootPath;
|
||||||
|
|
||||||
public QuestionnaireBuilder(IWorkerContext context) {
|
public QuestionnaireBuilder(IWorkerContext context, String rootPath) {
|
||||||
super();
|
super();
|
||||||
this.context = context;
|
this.context = context;
|
||||||
profileUtilities = new ProfileUtilities(context, null, null);
|
profileUtilities = new ProfileUtilities(context, null, null);
|
||||||
|
this.rootPath = rootPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Resource getReference() {
|
public Resource getReference() {
|
||||||
|
@ -235,7 +237,8 @@ public class QuestionnaireBuilder {
|
||||||
questionnaire.addItem(item);
|
questionnaire.addItem(item);
|
||||||
item.setLinkId("meta");
|
item.setLinkId("meta");
|
||||||
item.getCode().addAll(profile.getKeyword());
|
item.getCode().addAll(profile.getKeyword());
|
||||||
questionnaire.setId(nextId("qs-"+profile.getType()));
|
questionnaire.setId(nextId("qgen-"+profile.getId()));
|
||||||
|
questionnaire.setUrl(Utilities.pathURL(rootPath, "Questionnaire", questionnaire.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ public class QuestionnaireBuilderTester {
|
||||||
// private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\");
|
// private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\");
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
QuestionnaireBuilder b = new QuestionnaireBuilder(null);
|
QuestionnaireBuilder b = new QuestionnaireBuilder(null, "http://hl7.org/fhir/test");
|
||||||
for (String f : new File(TEST_PROFILE_DIR).list()) {
|
for (String f : new File(TEST_PROFILE_DIR).list()) {
|
||||||
if (f.endsWith(".profile.xml") && !f.contains("type-")) {
|
if (f.endsWith(".profile.xml") && !f.contains("type-")) {
|
||||||
System.out.println("process "+f);
|
System.out.println("process "+f);
|
||||||
|
|
|
@ -1745,4 +1745,13 @@ public class Utilities {
|
||||||
return Utilities.padLeft(Long.toString(i), ' ', len);
|
return Utilities.padLeft(Long.toString(i), ' ', len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Object makeSingleLine(String text) {
|
||||||
|
text = text.replace("\r", " ");
|
||||||
|
text = text.replace("\n", " ");
|
||||||
|
while (text.contains(" ")) {
|
||||||
|
text = text.replace(" ", " ");
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1551,3 +1551,11 @@ v: {
|
||||||
"system" : "urn:ietf:bcp:47"
|
"system" : "urn:ietf:bcp:47"
|
||||||
}
|
}
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
|
{"code" : {
|
||||||
|
"code" : "[%payloadFormat%]"
|
||||||
|
}, "url": "http://hl7.org/fhir/ValueSet/mimetypes", "version": "4.0.1", "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"true", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||||
|
v: {
|
||||||
|
"severity" : "error",
|
||||||
|
"error" : "The code \"[%payloadFormat%]\" is not valid in the system urn:ietf:bcp:13; The code provided (urn:ietf:bcp:13#[%payloadFormat%]) is not valid in the value set 'Mime Types' (from http://tx.fhir.org/r4)"
|
||||||
|
}
|
||||||
|
-------------------------------------------------------------------------------------
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<hapi_fhir_version>5.4.0</hapi_fhir_version>
|
<hapi_fhir_version>5.4.0</hapi_fhir_version>
|
||||||
<validator_test_case_version>v1.1.105</validator_test_case_version>
|
<validator_test_case_version>1.1.106-SNAPSHOT</validator_test_case_version>
|
||||||
<junit_jupiter_version>5.7.1</junit_jupiter_version>
|
<junit_jupiter_version>5.7.1</junit_jupiter_version>
|
||||||
<junit_platform_launcher_version>1.8.2</junit_platform_launcher_version>
|
<junit_platform_launcher_version>1.8.2</junit_platform_launcher_version>
|
||||||
<maven_surefire_version>3.0.0-M5</maven_surefire_version>
|
<maven_surefire_version>3.0.0-M5</maven_surefire_version>
|
||||||
|
|
Loading…
Reference in New Issue