|
|
|
Fred Aabedi-2
|
Some javascript/style in this post has been disabled (why?)
Hello, The call to trans.transform(source, new javax.xml.transform.stream.StreamResult(baos)) hangs - goes into infinite loop when you give it this data: The data is valid and has proper (0D) line termination. MSH|^~\&|LAB|STL||SL126259|20090511121540||ORU^R01|20090511585402327590|P|2.3||||||| PID|1|VS1234567890|KS847271C|10106|TEST^JOHN^F||19640209|M||||||||||0000002||||||||||||| ORC|RE|0000002|KS847271C||CM|||||||^PHYS NETWORK^^|||||||| OBR|1|0000002|KS847271C|$CPTO^LIPID PANEL WITH REFLEX TO DIRECT LDL^^$CPTO^LIPID PANEL WITH REFLEX TO DIRECT LDL|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^$CPTO^TRIGLYCERIDES||20090511111300|||F||||||||||||||||||| OBX|1|TX|$CPTO^COPY(IES) SENT TO:^^$CPTO^COPY(IES) SENT TO:^||||||||P|||20090511111300|||| NTE|1|| | NTE|2|| PHYSICIAN NETWORK| NTE|3|| 1201 S COLLEGEVILLE RD| NTE|4|| COLLEGEVILLE, PA 19426-2998| OBR|2|0000002|KS847271C|14852SB=^LIPID PANEL WITH REFLEX TO DIRECT LDL^^14852SB=^LIPID PANEL WITH REFLEX TO DIRECT LDL|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^896SB=^TRIGLYCERIDES|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25002900^TRIGLYCERIDES^^25002900^TRIGLYCERIDES^||115|mg/dL|<150|N|||F|||20090511111300|KS^^L||| OBR|3|0000002|KS847271C|14852SB=^^^14852SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^334SB=^CHOLESTEROL, TOTAL|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25003000^CHOLESTEROL, TOTAL^^25003000^CHOLESTEROL, TOTAL^||174|mg/dL|125-200|N|||F|||20090511111300|KS^^L||| OBR|4|0000002|KS847271C|14852SB=^^^14852SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^608SB=^HDL CHOLESTEROL|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25015900^HDL CHOLESTEROL^^25015900^HDL CHOLESTEROL^||72|mg/dL|> OR = 46|N|||F|||20090511111300|KS^^L||| OBR|5|0000002|KS847271C|14852SB=^^^14852SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^%8841SB^LDL-CHOLESTEROL|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25016900^LDL-CHOLESTEROL^^25016900^LDL-CHOLESTEROL^||79|mg/dL (calc)|<130|N|||F|||20090511111300|KS^^L||| NTE|1|| | NTE|2||DESIRABLE RANGE <100 MG/DL FOR PATIENTS WITH CHD OR| NTE|3||DIABETES AND <70 MG/DL FOR DIABETIC PATIENTS WITH| NTE|4||KNOWN HEART DISEASE.| NTE|5|| | OBR|6|0000002|KS847271C|14852SB=^^^14852SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^%8842SB^CHOL/HDLC RATIO|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25017000^CHOL/HDLC RATIO^^25017000^CHOL/HDLC RATIO^||2.4|(calc)|< OR = 5.0|N|||F|||20090511111300|KS^^L||| OBR|7|0000002|KS847271C|19694SB=^BIOMETRICS (HT,WT,BP)^^19694SB=^BIOMETRICS (HT,WT,BP)|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^19689SB=^HEIGHT|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|97014701^FEET^^97014701^FEET^||5||||||F|||20090511111300|KS^^L||| OBX|2|NM|97014702^INCHES^^97014702^INCHES^||8||||||F|||20090511111300|KS^^L||| OBR|8|0000002|KS847271C|19694SB=^^^19694SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^19690SB=^WEIGHT|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|97014703^WEIGHT^^97014703^WEIGHT^||170|lbs|||||F|||20090511111300|KS^^L||| OBR|9|0000002|KS847271C|19694SB=^^^19694SB=^|||20090507064000|||||||20090508205100||^PHYS NETWORK^^||||^^^19691SB=^BLOOD PRESSURE|KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|97014704^SYSTOLIC^^97014704^SYSTOLIC^||122||||||F|||20090511111300|KS^^L||| OBX|2|NM|97014705^DIASTOLIC^^97014705^DIASTOLIC^||78||||||F|||20090511111300|KS^^L||| OBR|10|0000002|KS847271C|285SB=^BILIRUBIN, DIRECT^^285SB=^BILIRUBIN, DIRECT|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25001800^BILIRUBIN, DIRECT^^25001800^BILIRUBIN, DIRECT^||0.1|mg/dL|< OR = 0.2|N|||F|||20090511111300|KS^^L||| OBR|11|0000002|KS847271C|482SB=^GGT^^482SB=^GGT|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25002200^GGT^^25002200^GGT^||12|U/L|3-70|N|||F|||20090511111300|KS^^L||| OBR|12|0000002|KS847271C|823SB=^ALT^^823SB=^ALT|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25002400^ALT^^25002400^ALT^||15|U/L|6-40|N|||F|||20090511111300|KS^^L||| OBR|13|0000002|KS847271C|905SB=^URIC ACID^^905SB=^URIC ACID|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25002500^URIC ACID^^25002500^URIC ACID^||4.8|mg/dL|2.5-7.0|N|||F|||20090511111300|KS^^L||| OBR|14|0000002|KS847271C|7573SB=^IRON AND TOTAL IRON BINDING CAPACITY^^7573SB=^IRON AND TOTAL IRON BINDING CAPACITY|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25002600^IRON, TOTAL^^25002600^IRON, TOTAL^||89|mcg/dL|40-160|N|||F|||20090511111300|KS^^L||| OBX|2|NM|25002700^IRON BINDING CAPACITY^^25002700^IRON BINDING CAPACITY^||290|mcg/dL|250-450|N|||F|||20090511111300|KS^^L||| OBX|3|NM|25002800^% SATURATION^^25002800^% SATURATION^||31|% (calc)|15-50|N|||F|||20090511111300|KS^^L||| OBR|15|0000002|KS847271C|34389SB=^COMPREHENSIVE METABOLIC PNL W/EGFR W/O CO2, ALT^^34389SB=^COMPREHENSIVE METABOLIC PNL W/EGFR W/O CO2, ALT|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|25000000^GLUCOSE^^25000000^GLUCOSE^||96|mg/dL|65-99|N|||F|||20090511111300|KS^^L||| NTE|1|| FASTING REFERENCE INTERVAL| OBX|2|NM|25000100^UREA NITROGEN (BUN)^^25000100^UREA NITROGEN (BUN)^||13|mg/dL|7-25|N|||F|||20090511111300|KS^^L||| OBX|3|NM|25000200^CREATININE^^25000200^CREATININE^||1.20|mg/dL|0.60-1.10|H|||F|||20090511111300|KS^^L||| OBX|4|NM|25000210^eGFR NON-AFR. AMERICAN^^25000210^eGFR NON-AFR. AMERICAN^||47|mL/min/1.73m2|> OR = 60|L|||F|||20090511111300|KS^^L||| OBX|5|NM|25000220^eGFR AFRICAN AMERICAN^^25000220^eGFR AFRICAN AMERICAN^||56|mL/min/1.73m2|> OR = 60|L|||F|||20090511111300|KS^^L||| OBX|6|NM|25000300^BUN/CREATININE RATIO^^25000300^BUN/CREATININE RATIO^||11|(calc)|6-22|N|||F|||20090511111300|KS^^L||| OBX|7|NM|25000400^SODIUM^^25000400^SODIUM^||142|mmol/L|135-146|N|||F|||20090511111300|KS^^L||| OBX|8|NM|25000500^POTASSIUM^^25000500^POTASSIUM^||4.3|mmol/L|3.5-5.3|N|||F|||20090511111300|KS^^L||| OBX|9|NM|25000600^CHLORIDE^^25000600^CHLORIDE^||106|mmol/L|98-110|N|||F|||20090511111300|KS^^L||| OBX|10|NM|25001000^CALCIUM^^25001000^CALCIUM^||9.7|mg/dL|8.6-10.2|N|||F|||20090511111300|KS^^L||| OBX|11|NM|25001300^PROTEIN, TOTAL^^25001300^PROTEIN, TOTAL^||7.6|g/dL|6.2-8.3|N|||F|||20090511111300|KS^^L||| OBX|12|NM|25001400^ALBUMIN^^25001400^ALBUMIN^||4.6|g/dL|3.6-5.1|N|||F|||20090511111300|KS^^L||| OBX|13|NM|25001500^GLOBULIN^^25001500^GLOBULIN^||3.0|g/dL (calc)|2.2-3.9|N|||F|||20090511111300|KS^^L||| OBX|14|NM|25001600^ALBUMIN/GLOBULIN RATIO^^25001600^ALBUMIN/GLOBULIN RATIO^||1.5|(calc)|1.0-2.1|N|||F|||20090511111300|KS^^L||| OBX|15|NM|25001700^BILIRUBIN, TOTAL^^25001700^BILIRUBIN, TOTAL^||0.6|mg/dL|0.2-1.2|N|||F|||20090511111300|KS^^L||| OBX|16|NM|25002000^ALKALINE PHOSPHATASE^^25002000^ALKALINE PHOSPHATASE^||45|U/L|33-130|N|||F|||20090511111300|KS^^L||| OBX|17|NM|25002300^AST^^25002300^AST^||21|U/L|10-35|N|||F|||20090511111300|KS^^L||| OBR|16|0000002|KS847271C|10124SB=^CARDIO CRP(R)^^10124SB=^CARDIO CRP(R)|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|45203715^CARDIO CRP(R)^^45203715^CARDIO CRP(R)^||0.7|mg/L ||N|||F|||20090511111300|KS^^L||| NTE|1|| | NTE|2||LOWER RELATIVE CARDIOVASCULAR RISK ACCORDING TO AHA/CDC | NTE|3||GUIDELINES. | NTE|4|| | NTE|5||FOR AGES > 17 YEARS:| NTE|6|| | NTE|7||CCRP mg/L RISK ACCORDING TO AHA/CDC GUIDELINES | NTE|8||--------- ------------------------------------| NTE|9||<1.0 LOWER RELATIVE CARDIOVASCULAR RISK.| NTE|10||1.0-3.0 AVERAGE RELATIVE CARDIOVASCULAR RISK.| NTE|11||3.1-10.0 HIGHER RELATIVE CARDIOVASCULAR RISK.| NTE|12|| CONSIDER RETESTING IN 1 TO 2 WEEKS TO| NTE|13|| EXCLUDE A BENIGN TRANSIENT ELEVATION | NTE|14|| IN THE BASELINE CRP VALUE SECONDARY | NTE|15|| TO INFECTION OR INFLAMMATION.| NTE|16||>10.0 PERSISTENT ELEVATION, UPON RETESTING,| NTE|17|| MAY BE ASSOCIATED WITH INFECTION AND | NTE|18|| INFLAMMATION.| NTE|19|| | OBR|17|0000002|KS847271C|457SB=^FERRITIN^^457SB=^FERRITIN|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|55059300^FERRITIN^^55059300^FERRITIN^||173|ng/mL|10-232|N|||F|||20090511111300|KS^^L||| OBR|18|0000002|KS847271C|866SB=^T4, FREE^^866SB=^T4, FREE|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|55070600^T4, FREE^^55070600^T4, FREE^||1.1|ng/dL|0.8-1.8|N|||F|||20090511111300|KS^^L||| OBR|19|0000002|KS847271C|36127SB=^TSH, 3RD GENERATION W/REFLEX TO FT4^^36127SB=^TSH, 3RD GENERATION W/REFLEX TO FT4|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|55080410^TSH, 3RD GENERATION W/REFLEX TO FT4^^55080410^TSH, 3RD GENERATION W/REFLEX TO FT4^||5.07|mIU/L||H|||F|||20090511111300|KS^^L||| NTE|1||REFERENCE RANGE:| NTE|2|| | NTE|3|| > OR = 20 YEARS: 0.40-4.50| NTE|4|| | NTE|5|| PREGNANCY RANGES| NTE|6|| FIRST TRIMESTER 0.20-4.70| NTE|7|| SECOND TRIMESTER 0.30-4.10| NTE|8|| THIRD TRIMESTER 0.40-2.70| NTE|9|| | OBR|20|0000002|KS847271C|496SB=^HEMOGLOBIN A1c^^496SB=^HEMOGLOBIN A1c|||20090507064000|||||||20090508205100||^PHYS NETWORK^^|||||KS^ABC Diagnostics-Lenexa^10101 Renner Blvd^Lenexa^KS^66219-9752^Patrick James M.D.|20090511111300|||F||||||||||||||||||| OBX|1|NM|50026400^HEMOGLOBIN A1c^^50026400^HEMOGLOBIN A1c^||5.5|% of total Hgb|See Note:|N|||F|||20090511111300|KS^^L||| NTE|1||Reference Range:| NTE|2||| NTE|3||NON-DIABETIC: <6.0%| NTE|4|| | We have isolated the issue to a specific module inside the ESB HL7 Encoder. The issue is inside the UnmarshalAdaptor.java. Here is our observations. It is hanging at the OBR segment and going into infinite loop for OBR-27 field value, contains sub sub components.But not for all OBR segments. The first 4 OBR segments are parsed successfully and from 5th OBR segments, it is hanging at OBR-27 field. We observed that all the OBR-27 field values are same in the message. We are wondering why it is hanging from 5th OBR segment. If we remove the OBR-27 field value from all the OBR segments starting from the 5th OBR segment onwards, it works fine. when debugging we observed that the below code snippet is causing the issue (look for: here going in to the infinite loop) Inside the UnmarshalAdaptor.java private static boolean parseFieldCompSubcomp(SchemaParticle particle, ParsingState state, int sequence) throws IOException, SAXException { int occu = 0; QName qName; int kind = whatKind(particle.getType()); if ((kind & KIND_ELEMENTARY) != 0) { // i.e. KIND_SIMPLE, KIND_ESCAPE or KIND_VARIES if (!state.mToken.mIsConsumed) { final int maxOccu = (particle.getMaxOccurs() != null) ? particle.getIntMaxOccurs() : Integer.MAX_VALUE; final int semLevel = state.mSemanticLevel; int nonQualiConsumed = 0; while ((occu < maxOccu) && state.mToken.mTokenType == Token.VALUE) { if (nonQualiConsumed > 0) { // the previous delimiter is not an expected one and // the token value must have been consumed if (state.mToken.mTokenType == Token.VALUE && state.mToken.mDelimType == Token.DELIM_NOT_READ) { state.mLexer.fillNextToken(state.mToken); continue; } else if ((state.mToken.mDelimType & mDelimQualiMask[semLevel]) != 0) { nonQualiConsumed = 0; state.mToken.mIsConsumed = true; } if ((state.mToken.mDelimType & mDelimEndMask[semLevel]) != 0) { break; } forwardToken(state, semLevel); continue; } else { if ((state.mToken.mDelimType & mDelimQualiMask[semLevel]) == 0) { // The delimiter type is not expected at // this location. But always pick up the // first one even though the delimiter is // not as expected. This is to allow old // version processor to process newer // version messages. // //For elementary content, need to see a // //qualified delimiter for the specific // level // throwException("The delimiter is not" // + " expected at the location.", null, // state); nonQualiConsumed++; } } if (state.mToken.mDelimType == Token.DELIM_NOT_READ && state.mToken.mCount == 0) { state.mLexer.fillNextToken(state.mToken); if (state.mToken.mTokenType != Token.VALUE || (state.mToken.mDelimType & mDelimQualiMask[semLevel]) == 0) { break; } if (state.mToken.mDelimType == Token.DELIM_NOT_READ && state.mToken.mCount == 0) { // This should not be possible throwException(mMessages.getString("HL7ENC-E0026.No_consecutive_data_read"), null, state); } } // end-- if (state.mToken.mDelimType == Token.... if (state.mToken.mCount <= 0) { state.mToken.mIsConsumed = true; } else { if (state.mModelLevelPendingStartTagAt >= 0) { // fire the start element events that // are pending for (int j = state.mModelLevelPendingStartTagAt; j < state.mModelLevel; j++) { qName = state.mQNamePath[j]; state.mContentHandler.startElement( qName.getNamespaceURI(), qName.getLocalPart(), qName.getLocalPart(), mEmptyAttributes); } state.mModelLevelPendingStartTagAt = -1; } qName = particle.getName(); state.mContentHandler.startElement( qName.getNamespaceURI(), qName.getLocalPart(), qName.getLocalPart(), mEmptyAttributes); fireCharacters(state, false); // set to already consumed state.mToken.mIsConsumed = true; while (state.mToken.mTokenType == Token.VALUE && state.mToken.mDelimType == Token.DELIM_NOT_READ) { state.mLexer.fillNextToken(state.mToken); if (state.mToken.mTokenType == Token.VALUE) { fireCharacters(state, false); } state.mToken.mIsConsumed = true; } state.mContentHandler.endElement( qName.getNamespaceURI(), qName.getLocalPart(), qName.getLocalPart()); occu++; } if ((state.mToken.mDelimType & mDelimEndMask[semLevel]) != 0) { break; // break while ((occu < maxOccu) && state.mToken.mTokenType == Token.VALUE) } forwardToken(state, semLevel); } // end of while ((occu < maxOccu) && state.mToken.mTokenType == Token.VALUE) } if (occu < particle.getIntMinOccurs() && state.mMinFactor[state.mModelLevel] > 0) { String errMsg = mMessages.getString("HL7ENC-E0027.Element_must_occur", new Object[]{particle.getName().getLocalPart(), "" + particle.getIntMinOccurs()}); throwException(errMsg, null, state); } while ((state.mToken.mDelimType & mDelimEndMask[state.mSemanticLevel]) == 0) { here going in to the infinite loop. // Haven't seen the terminator for this level forwardToken(state, state.mSemanticLevel); } forwardToken(state, state.mSemanticLevel); return (occu > 0); } else { // i.e. KIND_COMPLEX if (state.mSemanticLevel == SUBCOMPONENT) { throwException(mMessages.getString("HL7ENC-E0028.Sub_comp_must_have_simple_content"), null, state); } return parsePseudoGroup(particle, state, sequence); } } If you can tell us why it's not finding the terminator even though there is 0D char at the end of each record/... or the cause/fix for the issue, I really appreciate it. You cam reach me at 626-278-4085 or [hidden email] Thanks a million, Fred Windows Liveā¢: Keep your life in sync. Check it out. |
| Free Embeddable Forum Powered by Nabble | Help |