package ch.elexis.data;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import ch.elexis.core.exceptions.ElexisException;
import ch.elexis.core.types.LabItemTyp;
import ch.rgw.tools.JdbcLink;
import ch.rgw.tools.TimeTool;
public class Test_LabItem extends AbstractPersistentObjectTest {
public Test_LabItem(JdbcLink link){
super(link);
}
private Organisation org;
private Patient formulaPat;
private LabResult formulaResult;
private LabItem formulaItem;
private static final String REF_ITEM_KUERZEL = "kuerzel";
private static final String REF_ITEM_NAME = "testname";
private static final String REF_ITEM_UNIT = "mg/dl";
private static final String REF_ITEM_REFM = "0-1";
private static final String REF_ITEM_REFW = "0-2";
private static final String REF_ITEM_GROUP = "G gruppe";
private LabItem currentLabItem;
@Before
public void setUp(){
// create a instance of an PersistentObject ex. Organisation to test the query
org = new Organisation("orgname", "orgzusatz1");
currentLabItem = new LabItem(REF_ITEM_KUERZEL, REF_ITEM_NAME, org, REF_ITEM_REFM, REF_ITEM_REFW,
REF_ITEM_UNIT, LabItemTyp.NUMERIC, REF_ITEM_GROUP, "0");
}
@After
public void after() {
currentLabItem.delete();
org.delete();
}
@Test
public void testGetLabItems(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
}
@Test
public void testGetLabItemsSelective(){
// create a second lab item to select
LabItem item =
new LabItem("kuerzel1", "testname1", org, "0-1", "0-2", "mg/dl", LabItemTyp.NUMERIC,
"gruppe", "0");
List<LabItem> items = LabItem.getLabItems(org.getId(), "kuerzel1", "0-1", "0-2", "mg/dl");
assertEquals(1, items.size());
assertEquals(item.getId(), items.get(0).getId());
items = LabItem.getLabItems(org.getId(), null, "0-1", "0-2", "mg/dl");
assertEquals(2, items.size());
items = LabItem.getLabItems(org.getId(), null, null, null, null);
assertEquals(2, items.size());
items = LabItem.getLabItems(org.getId(), REF_ITEM_KUERZEL, null, null, null);
assertEquals(1, items.size());
items = LabItem.getLabItems(org.getId(), REF_ITEM_KUERZEL + "_dummy", null, null, null);
assertEquals(0, items.size());
item.delete();
}
@Test
public void testGetEinheit(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(REF_ITEM_UNIT, loc.getEinheit());
}
@Test
public void testSetEinheit(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
loc.setEinheit("l");
assertEquals("l", loc.getEinheit());
}
@Test
public void testGetGroup(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(REF_ITEM_GROUP, loc.getGroup());
}
@Test
public void testGetRefM(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(REF_ITEM_REFM, loc.getRefM());
}
@Test
public void testSetRefM(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
loc.setRefM("1-2");
assertEquals("1-2", loc.getRefM());
}
@Test
public void testGetRefW(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(REF_ITEM_REFW, loc.getRefW());
}
@Test
public void testSetRefW(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
loc.setRefW("1-2");
assertEquals("1-2", loc.getRefW());
}
@Test
public void testGetLabor(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(org, loc.getLabor());
}
@Test
public void testGetLabel(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertNotNull(loc.getLabel());
}
@Test
public void testGetShortLabel(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertNotNull(loc.getShortLabel());
}
@Test
public void testGetTyp(){
List<LabItem> items = LabItem.getLabItems();
assertEquals(1, items.size());
LabItem loc = items.get(0);
assertEquals(LabItemTyp.NUMERIC, loc.getTyp());
}
// @Test TODO: does not work under Elexis 3.0
public void testSetFormula(){
createFormulaEnv();
assertEquals("G_1*2", formulaItem.getFormula());
}
// @Test TODO: does not work under Elexis 3.0
public void testEvaluate(){
createFormulaEnv();
// a null pointer will be thrown when looking for the script interpreter
// TODO write a plugin test including the interpreter
try {
formulaItem.evaluate(formulaPat, new TimeTool("01.01.00"));
} catch (NullPointerException e) {
} catch (ElexisException e) {
fail();
}
}
private void createFormulaEnv(){
// create a second lab item to select
LabItem item =
new LabItem("kuerzel1", "testname1", org, "0-1", "0-2", "mg/dl", LabItemTyp.NUMERIC,
"G gruppe", "1");
// create a lab item made up by a formula
formulaItem =
new LabItem("formula", "formulatest", org, "0-2", "0-4", "mg/dl", LabItemTyp.FORMULA,
"G gruppe", "2");
formulaPat = new Patient("testName", "testVorname", "01.01.79", "m");
formulaResult = new LabResult(formulaPat, new TimeTool("01.01.00"), item, "0.5", "comment");
formulaItem.setFormula("G_1*2");
}
}