package org.openehr.binding;
import java.io.File;
import java.lang.reflect.Method;
import org.apache.commons.io.FileUtils;
import org.openehr.schemas.v1.*;
public class CreateXMLObjectTest extends XMLBindingTestBase {
public void testCreateDVTEXT() throws Exception {
DVTEXT dvtext = DVTEXT.Factory.newInstance();
dvtext.setValue("test value");
}
public void testCreateDvQuantity() throws Exception {
DVQUANTITY dvq = DVQUANTITY.Factory.newInstance();
dvq.setUnits("mmol/l");
dvq.setMagnitude(6.1);
}
public void testCreateElement() throws Exception {
ELEMENT element = ELEMENT.Factory.newInstance();
element.setName(dvText("name"));
element.setValue(dvQuantity(6.1, "mmol/l"));
}
public void testCreateItemTree() throws Exception {
ITEMTREE tree = ITEMTREE.Factory.newInstance();
tree.setName(dvText("item tree"));
ELEMENT element = element("element", 6.1, "mmol/l");
tree.insertNewItems(0);
tree.setItemsArray(0, element);
assertNotNull(tree.getItemsArray(0));
assertEquals("element",
((ELEMENT) tree.getItemsArray(0)).getName().getValue());
}
public void testCreatePointEvent() throws Exception {
POINTEVENT pe = POINTEVENT.Factory.newInstance();
pe.setName(dvText("any event"));
pe.setTime(dvDateTime("2008-05-22T20:04:26"));
pe.setData(itemTree());
}
public void testCreateObservation() throws Exception {
OBSERVATION obs = OBSERVATION.Factory.newInstance();
obs.setName(dvText("Lipid studies"));
obs.setArchetypeNodeId("openEHR-EHR-OBSERVATION.laboratory-lipids.v1");
obs.setLanguage(codePhrase("ISO_639-1", "en"));
obs.setEncoding(codePhrase("IANA_character-sets", "UTF-8"));
obs.setArchetypeDetails(archetyped(
"openEHR-EHR-OBSERVATION.laboratory-lipids.v1",
"Lipids", "1.0.1"));
obs.setSubject(partySelf());
obs.setData(history());
//FileUtils.writeStringToFile(new File("xml.txt"), obs.toString(), null);
}
public void testCreateInstanceWithReflection() throws Exception {
Class klass = Class.forName("org.openehr.schemas.v1.DVTEXT");
Class factoryClass = klass.getClasses()[0];
Method factoryMethod = factoryClass.getMethod("newInstance", null);
Object obj = factoryMethod.invoke(null, null);
assertTrue(obj instanceof DVTEXT);
}
public void testCallSetterWithReflection() throws Exception {
Class klass = Class.forName("org.openehr.schemas.v1.DVTEXT");
Class factoryClass = klass.getClasses()[0];
Method factoryMethod = factoryClass.getMethod("newInstance", null);
Object obj = factoryMethod.invoke(null, null);
Method setterMethod = klass.getMethod("setValue", String.class);
setterMethod.invoke(obj, "new value");
assertEquals("new value", ((DVTEXT) obj).getValue());
}
private HISTORY history() {
HISTORY history = HISTORY.Factory.newInstance();
history.setName(dvText("data"));
history.setOrigin(dvDateTime("2008-05-22T20:04:26"));
history.insertNewEvents(0);
history.setEventsArray(0, pointEvent());
return history;
}
private PARTYSELF partySelf() {
return PARTYSELF.Factory.newInstance();
}
private ARCHETYPED archetyped(String archetypeId, String templateId,
String rmVersion) {
ARCHETYPED archetyped = ARCHETYPED.Factory.newInstance();
archetyped.setArchetypeId(archetypeId(archetypeId));
archetyped.setTemplateId(templateId(templateId));
archetyped.setRmVersion(rmVersion);
return archetyped;
}
private TEMPLATEID templateId(String value) {
TEMPLATEID tid = TEMPLATEID.Factory.newInstance();
tid.setValue(value);
return tid;
}
private ARCHETYPEID archetypeId(String value) {
ARCHETYPEID aid = ARCHETYPEID.Factory.newInstance();
aid.setValue(value);
return aid;
}
private TERMINOLOGYID terminologyId(String value) {
TERMINOLOGYID tid = TERMINOLOGYID.Factory.newInstance();
tid.setValue(value);
return tid;
}
private CODEPHRASE codePhrase(String terminologyId, String code) {
CODEPHRASE cp = CODEPHRASE.Factory.newInstance();
cp.setTerminologyId(terminologyId(terminologyId));
cp.setCodeString(code);
return cp;
}
private POINTEVENT pointEvent() {
POINTEVENT pe = POINTEVENT.Factory.newInstance();
pe.setName(dvText("any event"));
pe.setTime(dvDateTime("2008-05-22T20:04:26"));
pe.setData(itemTree());
return pe;
}
private ITEMTREE itemTree() {
ITEMTREE tree = ITEMTREE.Factory.newInstance();
tree.setName(dvText("data"));
ELEMENT element = null;
element = element("Total Cholesterol", 6.1, "mmol/l");
tree.insertNewItems(0);
tree.setItemsArray(0, element);
element = element("Triglycerides", 2.3, "mmol/l");
tree.insertNewItems(1);
tree.setItemsArray(1, element);
return tree;
}
private ELEMENT element(String name, double value, String units) {
ELEMENT element = ELEMENT.Factory.newInstance();
element.setName(dvText(name));
element.setValue(dvQuantity(value, units));
return element;
}
private DVDATETIME dvDateTime(String value) {
DVDATETIME datetime = DVDATETIME.Factory.newInstance();
datetime.setValue(value);
return datetime;
}
private DVTEXT dvText(String value) {
DVTEXT text = DVTEXT.Factory.newInstance();
text.setValue(value);
return text;
}
private DVQUANTITY dvQuantity(double magnitude, String units) {
DVQUANTITY dvq = DVQUANTITY.Factory.newInstance();
dvq.setUnits(units);
dvq.setMagnitude(magnitude);
return dvq;
}
}