Skip to content

Commit

Permalink
Fix #131 - Narrative generator incorrectly sets the Resource.text.status
Browse files Browse the repository at this point in the history
to 'generated' even if the given resource type does not have a template
(and therefore no narrative is actually generated).
  • Loading branch information
jamesagnew committed Mar 24, 2015
1 parent cffda75 commit c7558c7
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 0 deletions.
Expand Up @@ -147,6 +147,10 @@ public void generateNarrative(String theProfile, IBaseResource theResource, Base
result = cleanWhitespace(result);
ourLog.trace("Post-whitespace cleaning: ", result);
}

if (isBlank(result)) {
return;
}

theNarrative.getDiv().setValueAsString(result);
theNarrative.getStatus().setValueAsString("generated");
Expand Down
Expand Up @@ -50,6 +50,7 @@
import ca.uhn.fhir.model.dstu.resource.AllergyIntolerance;
import ca.uhn.fhir.model.dstu.resource.Binary;
import ca.uhn.fhir.model.dstu.resource.Composition;
import ca.uhn.fhir.model.dstu.resource.Condition;
import ca.uhn.fhir.model.dstu.resource.Conformance;
import ca.uhn.fhir.model.dstu.resource.Conformance.RestResource;
import ca.uhn.fhir.model.dstu.resource.DiagnosticReport;
Expand All @@ -73,6 +74,7 @@
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.narrative.DefaultThymeleafNarrativeGenerator;
import ca.uhn.fhir.narrative.INarrativeGenerator;
import ca.uhn.fhir.parser.JsonParserTest.MyPatientWithOneDeclaredAddressExtension;
import ca.uhn.fhir.parser.JsonParserTest.MyPatientWithOneDeclaredExtension;
Expand All @@ -97,6 +99,22 @@ public void testComposition() {

}

/**
* See #131
*/
@Test
public void testParseAndReencodeCondition() {
FhirContext ctx = FhirContext.forDstu1();
ctx.setNarrativeGenerator(new DefaultThymeleafNarrativeGenerator());
InputStreamReader reader = new InputStreamReader(XmlParserTest.class.getResourceAsStream("/condition.xml"));
Condition cond = ctx.newXmlParser().parseResource(Condition.class, reader);

String enc = ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(cond);
ourLog.info(enc);

assertThat(enc, not(containsString("generated")));
}

@Test
public void testEncodeOmitsVersionAndBase() {
Patient p = new Patient();
Expand Down
85 changes: 85 additions & 0 deletions hapi-fhir-structures-dstu/src/test/resources/condition.xml
@@ -0,0 +1,85 @@
<Condition
xmlns="http://hl7.org/fhir">
<extension url="http://www.dmix.gov/fhir/Profile/commonextensions#id">
<valueString value="site2957-pat226-prb-159"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/metadata#Metadata">
<extension url="http://www.dmix.gov/fhir/Profile/metadata#ImplementationVersion">
<valueString value="0.2.dstu1"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/metadata#JenkinsBuildInfo">
<valueString value="Build Tag: [jenkins-FHIR DSTU1 Branch Development Build-40] Built At: [2015-03-18_16-25-36] GIT Branch: [origin/DSTU1] GIT Commit: [e0e7cfba1f74b4b49f8769d9078beaf90c681264]"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/metadata#BuildUser">
<valueString value="Built by: [jenkins@null]"/>
</extension>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/commonextensions#Domain">
<valueString value="ProblemLists"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/commonextensions#sourceEnterprise">
<valueString value="VA"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/commonextensions#sourceDataSystem">
<valueString value="VistA - VDS"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/commonextensions#sourceSite">
<valueCodeableConcept>
<coding>
<system value="http://www.dmix.gov/vaSiteCode"/>
<code value="2957"/>
<display value="VistA Site 2957"/>
</coding>
<coding>
<system value="http://www.dmix.gov/dmisId"/>
<code value="7001"/>
</coding>
<coding>
<system value="http://www.dmix.gov/moniker"/>
<code value="SMS1"/>
</coding>
<text value="VistA Site 2957"/>
</valueCodeableConcept>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/dmixcondition#acuity">
<valueString value="ACUTE"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/dmixcondition#last-modified">
<valueDate value="1999-08-17"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/dmixcondition#problem-id">
<valueString value="159"/>
</extension>
<extension url="http://www.dmix.gov/fhir/Profile/dmixcondition#service-connected">
<valueBoolean value="false"/>
</extension>
<identifier>
<use value="official"/>
<label value="VistA Problem Id at Site 2957 - 159"/>
<system value="http://www.dmix.gov/vaProblemId/2957"/>
<value value="159"/>
</identifier>
<subject>
<reference value="Patient/site2957-pat226"/>
</subject>
<asserter>
<reference value="Practitioner/..Condition..site2957-pat226-prb-159..vapvdr-11817"/>
</asserter>
<dateAsserted value="1999-08-17"/>
<code>
<coding>
<system value="http://hl7.org/fhir/sid/icd-9-cm"/>
<code value="787.91"/>
<display value="Diarrhea"/>
<primary value="true"/>
</coding>
<coding>
<system value="http://snomed.info/sct"/>
<code value="62315008"/>
<display value="Diarrhea"/>
</coding>
<text value="Diarrhea"/>
</code>
<status value="confirmed"/>
<notes value="--------------------&#xa;Date: 1999-08-17T00:00:00-04:00&#xa;Entered By: RADTECH,FORTYONE&#xa;&#xa;PATIENT SOMEWHAT DEHYDRATED&#xa;"/>
</Condition>
5 changes: 5 additions & 0 deletions src/changes/changes.xml
Expand Up @@ -64,6 +64,11 @@
reference if the base matches the base for the server giving
the response.
</action>
<action type="fix" fix="131">
Narrative generator incorrectly sets the Resource.text.status to 'generated' even if the
given resource type does not have a template (and therefore no narrative is actually generated).
Thanks to Bill de Beaubien for reporting!
</action>
</release>
<release version="0.9" date="2015-Mar-14">
<action type="add">
Expand Down

0 comments on commit c7558c7

Please sign in to comment.