
import ca.uhn.hl7v2.model.*;
import ca.uhn.hl7v2.model.v25.message.*;
import ca.uhn.hl7v2.parser.*;
import junit.framework.TestCase;

public class EvnInOruTest extends TestCase {

  public void testEvnInOru() throws Exception {
    StringBuilder sb = new StringBuilder();

    sb.append("MSH|^~\\&|RM|EPIC|HBOCORM|EPIC|20100209161723||ORU^R01|20100209161723887B|P|2.5|||AL|NE\r");
    sb.append("EVN|R01|20100209161723\r");
    sb.append("PID|||222222222||XXXXXXXX^XXXXX^X||19401010000000|F|||8888 XX 888XX XX^^XXXXX^XX^88888-8888||2222222222|||F||444444444|777777777\r");
    sb.append("PV1||I|1NO||||88888^XXXXX^XXXXXXXX^^XX|^XXXXXXX^XXXXXXXXX|77777^XXXX^XXXXX^^XX||||||||88888^XXXXX^XXXXXXXX^^XX|||84||||||||||||||||||||||||20100131153000\r");
    sb.append("ORC|RE|17615904^HBOC|NOS0001044695||11||^^^20100209070000^^FUTURE||20100208190700|||55555^XXXXXX^XXXXX^^XX||||MESTASTIC SURGERY\r");
    sb.append("OBR||17615904|NOS0001044695|NMBOWB^NM BONE IMAGING WHOLE BODY^^52083078|FUTURE|20100208190700|20100209091346|20100209091410||||||||55555^XXXXXX^XXXXX^^XX||11|NM||||||||^^^20100209070000^^FUTURE||||^MESTASTIC SURGERY|11111&XXXXXXXXXXX&XXXXXX^^^^XX||&XXXXXXX&XXXXXX||20100209070000\r");
    sb.append("OBX|1|TX|R^REPORT^L||||||||F|||||||20100209161300\r");
    sb.append("OBX|2|TX|R^REPORT^L||Examination: Bone scan.||||||F|||||||20100209161300\r");
    sb.append("OBX|3|TX|R^REPORT^L||Indication: MESTASTIC SURGERY||||||F|||||||20100209161300\r");
    sb.append("OBX|4|TX|R^REPORT^L||Comparison: None.||||||F|||||||20100209161300\r");
    sb.append("OBX|5|TX|R^REPORT^L||Findings:||||||F|||||||20100209161300\r");
    sb.append("OBX|6|TX|R^REPORT^L||Anterior and posterior static images were obtained approximately 3 hours||||||F|||||||20100209161300\r");
    sb.append("OBX|7|TX|R^REPORT^L||after||||||F|||||||20100209161300\r");
    sb.append("OBX|8|TX|R^REPORT^L||intravenous injection of 24 millicuries of Technetium 99mMDP. There is normal||||||F|||||||20100209161300\r");
    sb.append("OBX|9|TX|R^REPORT^L||distribution of radiotracer throughout the bony structures. mild diffuse||||||F|||||||20100209161300\r");
    sb.append("OBX|10|TX|R^REPORT^L||increase uptake in the region of calvarium anteriorly is most likely related||||||F|||||||20100209161300\r");
    sb.append("OBX|11|TX|R^REPORT^L||to hyperostosis frontalis seen on CT scan of brain Both kidneys and the||||||F|||||||20100209161300\r");
    sb.append("OBX|12|TX|R^REPORT^L||urinary bladder are demonstrated.||||||F|||||||20100209161300\r");
    sb.append("OBX|13|TX|R^REPORT^L||Impression:||||||F|||||||20100209161300\r");
    sb.append("OBX|14|TX|R^REPORT^L||no focal increased uptake to suggest blastic metastases||||||F|||||||20100209161300\r");
    sb.append("OBX|15|TX|R^REPORT^L||Read by: XXXXXX XXXXXXXXXXX, X.X.||||||F|||||||20100209161300\r");
    sb.append("OBX|16|TX|R^REPORT^L||Dictated on: 02/09/2010 16:11:19||||||F|||||||20100209161300\r");
    sb.append("OBX|17|TX|R^REPORT^L||Electronically Signed by: XXXXXX XXXXXXXXXXX, X.X.||||||F|||||||20100209161300\r");
    sb.append("OBX|18|TX|R^REPORT^L||Signed on: 02/09/2010 16:13:22||||||F|||||||20100209161300\r");
    sb.append("OBX|19|TX|R^REPORT^L||||||||F|||||||20100209161300\r");

    PipeParser p = new PipeParser();
    Message m = p.parse(sb.toString());

    assertTrue (m instanceof ORU_R01);
    ORU_R01 oru = (ORU_R01) m;

    assertNotNull("MSH should be found", oru.getMSH());
    assertEquals("There should be 1 reps of PATIENT_RESULT", 1, oru.getPATIENT_RESULTReps());
  }

  public void testProperOru() throws Exception {
    StringBuilder sb = new StringBuilder();

    sb.append("MSH|^~\\&|RM|EPIC|HBOCORM|EPIC|20100209161723||ORU^R01|20100209161723887B|P|2.5|||AL|NE\r");
    sb.append("PID|||222222222||XXXXXXXX^XXXXX^X||19401010000000|F|||8888 XX 888XX XX^^XXXXX^XX^88888-8888||2222222222|||F||444444444|777777777\r");
    sb.append("PV1||I|1NO||||88888^XXXXX^XXXXXXXX^^XX|^XXXXXXX^XXXXXXXXX|77777^XXXX^XXXXX^^XX||||||||88888^XXXXX^XXXXXXXX^^XX|||84||||||||||||||||||||||||20100131153000\r");
    sb.append("ORC|RE|17615904^HBOC|NOS0001044695||11||^^^20100209070000^^FUTURE||20100208190700|||55555^XXXXXX^XXXXX^^XX||||MESTASTIC SURGERY\r");
    sb.append("OBR||17615904|NOS0001044695|NMBOWB^NM BONE IMAGING WHOLE BODY^^52083078|FUTURE|20100208190700|20100209091346|20100209091410||||||||55555^XXXXXX^XXXXX^^XX||11|NM||||||||^^^20100209070000^^FUTURE||||^MESTASTIC SURGERY|11111&XXXXXXXXXXX&XXXXXX^^^^XX||&XXXXXXX&XXXXXX||20100209070000\r");
    sb.append("OBX|1|TX|R^REPORT^L||||||||F|||||||20100209161300\r");
    sb.append("OBX|2|TX|R^REPORT^L||Examination: Bone scan.||||||F|||||||20100209161300\r");
    sb.append("OBX|3|TX|R^REPORT^L||Indication: MESTASTIC SURGERY||||||F|||||||20100209161300\r");
    sb.append("OBX|4|TX|R^REPORT^L||Comparison: None.||||||F|||||||20100209161300\r");
    sb.append("OBX|5|TX|R^REPORT^L||Findings:||||||F|||||||20100209161300\r");
    sb.append("OBX|6|TX|R^REPORT^L||Anterior and posterior static images were obtained approximately 3 hours||||||F|||||||20100209161300\r");
    sb.append("OBX|7|TX|R^REPORT^L||after||||||F|||||||20100209161300\r");
    sb.append("OBX|8|TX|R^REPORT^L||intravenous injection of 24 millicuries of Technetium 99mMDP. There is normal||||||F|||||||20100209161300\r");
    sb.append("OBX|9|TX|R^REPORT^L||distribution of radiotracer throughout the bony structures. mild diffuse||||||F|||||||20100209161300\r");
    sb.append("OBX|10|TX|R^REPORT^L||increase uptake in the region of calvarium anteriorly is most likely related||||||F|||||||20100209161300\r");
    sb.append("OBX|11|TX|R^REPORT^L||to hyperostosis frontalis seen on CT scan of brain Both kidneys and the||||||F|||||||20100209161300\r");
    sb.append("OBX|12|TX|R^REPORT^L||urinary bladder are demonstrated.||||||F|||||||20100209161300\r");
    sb.append("OBX|13|TX|R^REPORT^L||Impression:||||||F|||||||20100209161300\r");
    sb.append("OBX|14|TX|R^REPORT^L||no focal increased uptake to suggest blastic metastases||||||F|||||||20100209161300\r");
    sb.append("OBX|15|TX|R^REPORT^L||Read by: XXXXXX XXXXXXXXXXX, X.X.||||||F|||||||20100209161300\r");
    sb.append("OBX|16|TX|R^REPORT^L||Dictated on: 02/09/2010 16:11:19||||||F|||||||20100209161300\r");
    sb.append("OBX|17|TX|R^REPORT^L||Electronically Signed by: XXXXXX XXXXXXXXXXX, X.X.||||||F|||||||20100209161300\r");
    sb.append("OBX|18|TX|R^REPORT^L||Signed on: 02/09/2010 16:13:22||||||F|||||||20100209161300\r");
    sb.append("OBX|19|TX|R^REPORT^L||||||||F|||||||20100209161300\r");

    PipeParser p = new PipeParser();
    Message m = p.parse(sb.toString());

    assertTrue (m instanceof ORU_R01);
    ORU_R01 oru = (ORU_R01) m;

    assertNotNull("MSH should be found", oru.getMSH());
    assertEquals("There should be 1 reps of PATIENT_RESULT", 1, oru.getPATIENT_RESULTReps());
  }
}
