package ca.uhn.fhir.context;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.io.IOException;
import org.junit.AfterClass;
import org.junit.Test;
import ca.uhn.fhir.model.primitive.DateTimeDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.IParser;
import ca.uhn.fhir.parser.MyPatient;
import ca.uhn.fhir.util.TestUtil;
public class ExtensionTest {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ExtensionTest.class);
private static FhirContext ourCtx = FhirContext.forDstu1();
@Test
public void testExtensionType() {
DummyPatientWithExtensions patient = new DummyPatientWithExtensions();
patient.setPetName(new StringDt("Fido"));
patient.getImportantDates().add(new DateTimeDt("2010-01-02"));
patient.getImportantDates().add(new DateTimeDt("2014-01-26T11:11:11"));
patient.addName().addFamily("Smith").addGiven("John").addGiven("Quincy").addSuffix("Jr");
String messageString = ourCtx.newXmlParser().encodeResourceToString(patient);
ourLog.info(messageString);
assertThat(messageString, containsString("<modifierExtension url=\"http://example.com/dontuse#importantDates\"><valueDateTime value=\"2010-01-02\"/></modifierExtension>"));
}
@Test
public void testEmptyExtensionType() {
DummyPatientWithExtensions patient = new DummyPatientWithExtensions();
patient.addName().addFamily("Smith").addGiven("John").addGiven("Quincy").addSuffix("Jr");
String messageString = ourCtx.newXmlParser().encodeResourceToString(patient);
ourLog.info(messageString);
assertThat(messageString, not(containsString("xtension")));
}
@Test
public void testEmptyExtensionTypeJson() {
DummyPatientWithExtensions patient = new DummyPatientWithExtensions();
patient.addName().addFamily("Smith").addGiven("John").addGiven("Quincy").addSuffix("Jr");
String messageString = ourCtx.newJsonParser().encodeResourceToString(patient);
ourLog.info(messageString);
assertThat(messageString, not(containsString("xtension")));
}
@SuppressWarnings("unused")
public static void main(String[] args) throws DataFormatException, IOException {
// START SNIPPET: patientUse
MyPatient patient = new MyPatient();
patient.setPetName(new StringDt("Fido"));
patient.getImportantDates().add(new DateTimeDt("2010-01-02"));
patient.getImportantDates().add(new DateTimeDt("2014-01-26T11:11:11"));
patient.addName().addFamily("Smith").addGiven("John").addGiven("Quincy").addSuffix("Jr");
IParser p = FhirContext.forDstu1().newXmlParser().setPrettyPrint(true);
String messageString = p.encodeResourceToString(patient);
System.out.println(messageString);
// END SNIPPET: patientUse
// START SNIPPET: patientParse
IParser parser = FhirContext.forDstu1().newXmlParser();
MyPatient newPatient = parser.parseResource(MyPatient.class, messageString);
// END SNIPPET: patientParse
{
FhirContext ctx2 = FhirContext.forDstu1();
RuntimeResourceDefinition def = ctx2.getResourceDefinition(patient);
System.out.println(ctx2.newXmlParser().setPrettyPrint(true).encodeResourceToString(def.toProfile("http://foo.org/fhir")));
}
}
@AfterClass
public static void afterClassClearContext() {
TestUtil.clearAllStaticFieldsForUnitTest();
}
}