Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register
Show
Ignore:
Timestamp:
05/07/08 18:28:28 (8 months ago)
Author:
msheley
Message:

sockethl7listener --
* Removal of provider name and id from person attribute. This was primarily for use related to patient matching. They are no longer required
* Removed some member variables in MatchHandler.
* Adjusted comparison methods for identifier, name, address, provider.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openmrs-modules/sockethl7listener/src/org/openmrs/module/sockethl7listener/HL7SocketHandler.java

    r4059 r4133  
    9595        protected ConceptService cs; 
    9696         
    97         private UserContext userContext; 
    9897        private HL7PatientHandler patientHandler; 
    9998        private boolean providerCheck; 
     
    101100        protected ca.uhn.hl7v2.parser.Parser parser = null; 
    102101         
    103         private static final String PROVIDER_ID = "Provider ID"; 
    104         private static final String PROVIDER_NAME = "Provider Name"; 
    105102        private static final String MATCH_INFO = "Other Matching Information"; 
    106103        public static final String ATTRIBUTE_NEXT_OF_KIN = "Mother's Name"; 
     
    121118                us = Context.getUserService(); 
    122119                cs = Context.getConceptService(); 
    123                 userContext = Context.getUserContext(); 
    124120                hl7Service = Context.getHL7Service(); 
    125121         
     
    179175                ConsoleHandler ch = new ConsoleHandler(); 
    180176                Message response = null; 
    181                  
    182                  
    183          
    184177                 
    185178                if (!(message instanceof ORU_R01) && !(message instanceof ADT_A01)) 
     
    296289                        Date encounterDate = TranslateDate(timeStamp); 
    297290                        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);                  
    301294                        Encounter encounter = findEncounter(incomingMessageString,resultPatient, 
    302295                                        encounterDate, isDuplicateHL7); 
     
    12381231private void logCreatedPatient(Patient hl7Patient, int openmrs_id  ){ 
    12391232                 
    1240                 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    12411233                 
    12421234                String id, mrn ,fn,ln,gender,city,state,zip, db, mb, yb, tel , hl7Tel, matchTel, addr1; 
    1243                 String telUpdateDate; 
     1235                 
    12441236                Calendar hl7cal = Calendar.getInstance(); 
    12451237                hl7cal.setTime(hl7Patient.getBirthdate()); 
     
    12531245                 
    12541246                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                } 
    12631258                 
    12641259                PersonAddress hl7PA = hl7Patient.getPersonAddress(); 
     
    13031298                        String nkfn = String.format("%1$-10s %2$-20s \r\n", "NKFN:",hl7NKGivenName ); 
    13041299                        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); 
    13081302                         
    13091303                         
     
    13201314                SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    13211315                 
    1322                 String mrn ,fn,ln,gender,race, city,state,zip, db, mb, yb, tel , hl7Tel; 
    1323                 String telUpdateDate; 
    13241316                Calendar hl7cal = Calendar.getInstance(); 
    13251317                hl7cal.setTime(hl7Patient.getBirthdate()); 
     
    13301322                 
    13311323                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"); 
    13491325                String inputIdent = HL7PatientHandler.getAttributeComponent(matching_input, "mrn"); 
    13501326                String inputln = HL7PatientHandler.getAttributeComponent(matching_input, "ln"); 
     
    13741350                         
    13751351                         
    1376                         String logString = "FIND   mrn:" + inputIdent + "|fn:" + inputfnRaw + "|ln:" + inputln  
     1352                        String logString = "FIND   mrn:" + inputIdent + "|fn:" + inputfn + "|ln:" + inputln  
    13771353                        + "|sex:" + inputGender + "|race:" + inputRace + "|city:" + inputCity + "|st:" + inputState 
    13781354                        + "|zip:" + inputZip + "|db:"+ inputDB + "|mb:" + inputMB + "|yb:" + inputYB 
     
    14801456                 
    14811457                try { 
    1482                         Integer matchedPatientID = mp.getPatientId(); 
    1483  
     1458                 
    14841459                        //patient id was found in database 
    14851460 
    1486                         MatchHandler matchHandler = new MatchHandler(hl7Patient, 
    1487                                         mp, encounterDate); 
     1461                        MatchHandler matchHandler = new MatchHandler(); 
    14881462 
    14891463                        PersonAttribute mpa = mp.getAttribute(MATCH_INFO); 
    1490                         Patient resolvedPatient = matchHandler.setPatient(); 
     1464                        Patient resolvedPatient = matchHandler.setPatient(hl7Patient, mp, encounterDate); 
    14911465                         
    14921466                        resultPatient = patientService.updatePatient(resolvedPatient); 
     
    15091483         
    15101484        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                  
    15131489                 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                  
    15201503                return loc; 
    15211504        } 
     
    16051588         
    16061589 
    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) { 
    16091606                        if(NKNameAttr == null) 
    16101607                        { 
     
    16281625                                 
    16291626                        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                          
    16671627                         
    16681628                }