Changeset 4133 for openmrs-modules/sockethl7listener/src/org/openmrs/module/sockethl7listener/HL7SocketHandler.java
- Timestamp:
- 05/07/08 18:28:28 (8 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openmrs-modules/sockethl7listener/src/org/openmrs/module/sockethl7listener/HL7SocketHandler.java
r4059 r4133 95 95 protected ConceptService cs; 96 96 97 private UserContext userContext;98 97 private HL7PatientHandler patientHandler; 99 98 private boolean providerCheck; … … 101 100 protected ca.uhn.hl7v2.parser.Parser parser = null; 102 101 103 private static final String PROVIDER_ID = "Provider ID";104 private static final String PROVIDER_NAME = "Provider Name";105 102 private static final String MATCH_INFO = "Other Matching Information"; 106 103 public static final String ATTRIBUTE_NEXT_OF_KIN = "Mother's Name"; … … 121 118 us = Context.getUserService(); 122 119 cs = Context.getConceptService(); 123 userContext = Context.getUserContext();124 120 hl7Service = Context.getHL7Service(); 125 121 … … 179 175 ConsoleHandler ch = new ConsoleHandler(); 180 176 Message response = null; 181 182 183 184 177 185 178 if (!(message instanceof ORU_R01) && !(message instanceof ADT_A01)) … … 296 289 Date encounterDate = TranslateDate(timeStamp); 297 290 Patient hl7Patient = patientHandler.setPatientFromHL7(pid,nk1,encounterDate,encounterLocation); 298 Provider provider = patientHandler.setProviderFromPV1(pv1,hl7Patient ,encounterDate);299 300 Patient resultPatient = findPatient(hl7Patient,encounterDate); 291 Provider provider = patientHandler.setProviderFromPV1(pv1,hl7Patient); 292 293 Patient resultPatient = findPatient(hl7Patient,encounterDate); 301 294 Encounter encounter = findEncounter(incomingMessageString,resultPatient, 302 295 encounterDate, isDuplicateHL7); … … 1238 1231 private void logCreatedPatient(Patient hl7Patient, int openmrs_id ){ 1239 1232 1240 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");1241 1233 1242 1234 String id, mrn ,fn,ln,gender,city,state,zip, db, mb, yb, tel , hl7Tel, matchTel, addr1; 1243 String telUpdateDate;1235 1244 1236 Calendar hl7cal = Calendar.getInstance(); 1245 1237 hl7cal.setTime(hl7Patient.getBirthdate()); … … 1253 1245 1254 1246 PersonAttribute hl7NKNameAttr = hl7Patient.getAttribute(ATTRIBUTE_NEXT_OF_KIN); 1255 Parser parser = new Parser(); 1256 PersonName hl7NKName = parser.parseNKName(hl7NKNameAttr); 1257 1258 1259 PersonAttribute hl7ProvIDAttr = hl7Patient.getAttribute(PROVIDER_ID); 1260 PersonAttribute hl7ProvNameAttr = hl7Patient.getAttribute(PROVIDER_NAME); 1261 PersonName hl7ProvName = parser.parseProviderName(hl7ProvNameAttr); 1262 1247 PersonName hl7NKName = Parser.parseNKName(hl7NKNameAttr); 1248 1249 PersonAttribute matchAttr = hl7Patient.getAttribute(MATCH_INFO); 1250 String provln = "", provfn = "", provid = ""; 1251 1252 if (matchAttr != null){ 1253 String matchAttrList = matchAttr.getValue(); 1254 provfn = Parser.parseProvider(matchAttrList, "drfn"); 1255 provln = Parser.parseProvider(matchAttrList, "drln"); 1256 provid = Parser.parseProvider(matchAttrList, "drid"); 1257 } 1263 1258 1264 1259 PersonAddress hl7PA = hl7Patient.getPersonAddress(); … … 1303 1298 String nkfn = String.format("%1$-10s %2$-20s \r\n", "NKFN:",hl7NKGivenName ); 1304 1299 String nkln = String.format("%1$-10s %2$-20s \r\n", "NKLN:",hl7NKFamilyName ); 1305 String drfn = String.format("%1$-10s %2$-20s \r\n", "DRFN:", hl7ProvName.getGivenName()); 1306 String drln = String.format("%1$-10s %2$-20s \r\n", "DRLN:", hl7ProvName.getFamilyName()); 1307 1300 String drfn = String.format("%1$-10s %2$-20s \r\n", "DRFN:", provfn); 1301 String drln = String.format("%1$-10s %2$-20s \r\n", "DRLN:", provln); 1308 1302 1309 1303 … … 1320 1314 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 1321 1315 1322 String mrn ,fn,ln,gender,race, city,state,zip, db, mb, yb, tel , hl7Tel;1323 String telUpdateDate;1324 1316 Calendar hl7cal = Calendar.getInstance(); 1325 1317 hl7cal.setTime(hl7Patient.getBirthdate()); … … 1330 1322 1331 1323 String matching_input = hl7Patient.getAttribute(MATCH_INFO).getValue(); 1332 int index1 = matching_input.indexOf("fn:"); 1333 int index2 = matching_input.indexOf(":", index1); 1334 int index3 = matching_input.indexOf(";", index2); 1335 String inputfnRaw = null; 1336 if(index3!= -1) 1337 { 1338 inputfnRaw = matching_input.substring(index2+1,index3); 1339 } 1340 String inputfn = ""; 1341 if (inputfnRaw == null ||inputfnRaw.equals("")){ 1342 inputfn = "(Nullified)"; 1343 } 1344 1345 fn = HL7PatientHandler.checkFirstName(inputfnRaw,false); 1346 1347 1348 1324 String inputfn = HL7PatientHandler.getAttributeComponent(matching_input, "fn"); 1349 1325 String inputIdent = HL7PatientHandler.getAttributeComponent(matching_input, "mrn"); 1350 1326 String inputln = HL7PatientHandler.getAttributeComponent(matching_input, "ln"); … … 1374 1350 1375 1351 1376 String logString = "FIND mrn:" + inputIdent + "|fn:" + inputfn Raw+ "|ln:" + inputln1352 String logString = "FIND mrn:" + inputIdent + "|fn:" + inputfn + "|ln:" + inputln 1377 1353 + "|sex:" + inputGender + "|race:" + inputRace + "|city:" + inputCity + "|st:" + inputState 1378 1354 + "|zip:" + inputZip + "|db:"+ inputDB + "|mb:" + inputMB + "|yb:" + inputYB … … 1480 1456 1481 1457 try { 1482 Integer matchedPatientID = mp.getPatientId(); 1483 1458 1484 1459 //patient id was found in database 1485 1460 1486 MatchHandler matchHandler = new MatchHandler(hl7Patient, 1487 mp, encounterDate); 1461 MatchHandler matchHandler = new MatchHandler(); 1488 1462 1489 1463 PersonAttribute mpa = mp.getAttribute(MATCH_INFO); 1490 Patient resolvedPatient = matchHandler.setPatient( );1464 Patient resolvedPatient = matchHandler.setPatient(hl7Patient, mp, encounterDate); 1491 1465 1492 1466 resultPatient = patientService.updatePatient(resolvedPatient); … … 1509 1483 1510 1484 private Location setLocation(String locCode){ 1511 1512 Location loc = es.getLocationByName(locCode); 1485 Location location = new Location (); 1486 Location loc = es.getLocationByName(locCode); 1487 Date date = new Date(); 1488 1513 1489 if (loc == null) { 1514 loc.setName("INPC"); 1515 loc.setCreator(Context.getAuthenticatedUser()); 1516 Date date = new Date(); 1517 loc.setDateCreated(date); 1518 } 1519 1490 Location inpcloc = es.getLocationByName("INPC"); 1491 if (inpcloc == null) { 1492 //this is the default. Create if not present 1493 location.setName("INPC"); 1494 location.setDateCreated(date); 1495 location.setCreator(Context.getAuthenticatedUser()); 1496 adminService.createLocation(location); 1497 loc = location; 1498 } else { 1499 loc = inpcloc; 1500 } 1501 } 1502 1520 1503 return loc; 1521 1504 } … … 1605 1588 1606 1589 1607 public class Parser { 1608 public PersonName parseNKName(PersonAttribute NKNameAttr) { 1590 public static class Parser { 1591 1592 public static String parseProvider(String matching_input, String attributeName){ 1593 String result = ""; 1594 int index1 = matching_input.indexOf(attributeName); 1595 int index2 = matching_input.indexOf(":", index1); 1596 int index3 = matching_input.indexOf(";", index2); 1597 if (index3 == -1) 1598 result = matching_input.substring(index2+1); 1599 else 1600 result = matching_input.substring(index2+1,index3); 1601 1602 return result; 1603 } 1604 1605 public static PersonName parseNKName(PersonAttribute NKNameAttr) { 1609 1606 if(NKNameAttr == null) 1610 1607 { … … 1628 1625 1629 1626 return NKName; 1630 /*1631 String[] nameArray = NKNameAttr.getValue().split(".");1632 PersonName NKName = new PersonName();1633 String firstname = "";1634 String lastname = "";1635 if (nameArray.length == 1){1636 logger.error(" No split name = " + nameArray[0]);1637 lastname = nameArray[0];1638 }else if (nameArray.length == 2){1639 logger.error(" " +1640 "" +1641 "split name = " + nameArray[0] + " and " + nameArray[1]);1642 firstname = nameArray[0];1643 lastname = nameArray[1];1644 }1645 NKName.setGivenName(firstname);1646 NKName.setFamilyName(lastname);*/1647 1648 /*String[] nameArray = NKNameAttr.getValue().split(".");1649 PersonName NKName = new PersonName();1650 if (nameArray.length != 0){1651 for (int i=0; i<=3; i++){1652 if (nameArray != null){1653 String firstname = nameArray[0] != null? nameArray[0]: "";1654 String lastname = nameArray[1] != null? nameArray[1]: "";1655 NKName.setGivenName(firstname);1656 NKName.setFamilyName(lastname);1657 1658 }1659 1660 }1661 } else{1662 NKName.setGivenName("");1663 NKName.setFamilyName("");1664 1665 }*/1666 1667 1627 1668 1628 }