PSULRHL1 ;HCIOFO/BH/RDC - Process real time HL7 Lab messages ; 8/1/07 11:26am
Source file <PSULRHL1.m>
| Package | Total | Call Graph | 
|---|---|---|
| Health Level Seven | 2 | INIT^HLFNC2 $$EN^HLOCNRT | 
| Registration | 2 | $$EMPL^DGSEC4 BLDPID^VAFCQRY | 
| Lab Service | 1 | $$TSTRES^LRRPU | 
| Name | Comments | DBIA/ICR reference | 
|---|---|---|
| HL7 | ; Entry point for PBM processing - triggered by lab protocol ; LR7O ALL EVSEND RESULTS. | |
| PID | ;  Create the PID segment using the standard builder | |
| STRING(HLSTR,CNT) | ;  Loops through sub nodes to create a full data string | |
| OBR(REC) | ;  Re-forms lab OBR to only send required data | |
| OBX(REC) | ;  Reforms lab OBX to only send the data needed | |
| PARAMS | ; Get the delimiters used in the lab data | |
| SETSEG(SEG) | ; | |
| GENERATE | ; Generate HL7 message | |
| LOOP | ; | 
| Name | Line Occurrences (* Changed, ! Killed) | 
|---|---|
| ^DPT - [#2] | HL7+40 | 
| ^LAB(60 - [#60] | OBX+11 | 
| ^TMP("HLS" | HL7+20, LOOP+2!, GENERATE+7! | 
| ^XTMP("PBM/HLO" | GENERATE+6* | 
| Name | Line Occurrences | 
|---|---|
| $$STRING | LOOP+6, LOOP+20, LOOP+31 | 
| GENERATE | HL7+49 | 
| LOOP | HL7+45 | 
| OBR | LOOP+27 | 
| OBX | LOOP+35 | 
| PARAMS | HL7+25 | 
| PID | LOOP+26 | 
| SETSEG | PID+15, OBR+15, OBX+48 | 
| >> | Not killed explicitly | 
| * | Changed | 
| ! | Killed | 
| ~ | Newed | 
| Name | Field # of Occurrence | 
|---|---|
| ARR | HL7+3~, HL7+31, PARAMS+3! | 
| ARR("DFN" | HL7+32, HL7+36, HL7+40, PID+4, PARAMS+11* | 
| ARR("PSUHLECH" | HL7+26, PARAMS+9* | 
| CNT | LOOP+1~, LOOP+3*, LOOP+4*, LOOP+5, LOOP+6, LOOP+18*, LOOP+19, LOOP+20, LOOP+22*, LOOP+29* , LOOP+30, LOOP+31, LOOP+33*, STRING~, STRING+3, PARAMS+2~, PARAMS+4*, PARAMS+5*, PARAMS+6 | 
| CODES | OBX+1~, OBX+19* | 
| DT | GENERATE+6 | 
| ERR | HL7+51!, PID+4 | 
| FIRST | HL7+3~, HL7+44*, HL7+49, LOOP+26* | 
| HLSTR | STRING~, STRING+3*, STRING+4 | 
| HRANGE | OBX+1~, OBX+21*, OBX+22 | 
| I1 | SETSEG+14~, SETSEG+23*, SETSEG+24 | 
| I2 | SETSEG+14~, SETSEG+22*, SETSEG+23*, SETSEG+24 | 
| ID | PARAMS+2~ | 
| J | STRING+1~, STRING+2*, STRING+3* | 
| K1 | PID+2~, PID+9*, PID+10*, PID+11 | 
| LABS | OBX+1~, OBX+8*, OBX+9, OBX+26*, OBX+33*, OBX+40 | 
| LNAME | OBX+1~, OBX+20*, OBX+33 | 
| LOINC | OBX+1~, OBX+20*, OBX+30, OBX+33 | 
| LOINCS | OBX+1~, OBX+19*, OBX+20 | 
| LR60 | OBX+1~, OBX+9*, OBX+10, OBX+11, OBX+17 | 
| LRANGE | OBX+1~, OBX+21*, OBX+22 | 
| LRDFN | HL7+3~, HL7+40*, OBX+17 | 
| LRDN | OBX+1~, OBX+11*, OBX+12*, OBX+16, OBX+17 | 
| LRIDT | LOOP+1~, LOOP+16*, OBX+17 | 
| LRSS | LOOP+1~, LOOP+11*, LOOP+15, OBX+17 | 
| MAXLEN | SETSEG+14~, SETSEG+16*, SETSEG+18, SETSEG+21, SETSEG+22, SETSEG+23 | 
| NEWSEG | PID+2~, PID+9*, PID+11*, PID+15 | 
| NODE | SETSEG+14~, SETSEG+15*, SETSEG+16, SETSEG+18, SETSEG+24 | 
| OBRSEG | OBR+2~, OBR+3*, OBR+10*, OBR+11*, OBR+15 | 
| OPTNS | HL7+51!, GENERATE+4 | 
| OPTNS("QUEUE" | GENERATE+3* | 
| >> OREMSG | HL7+8, LOOP+4, LOOP+5, LOOP+18, LOOP+19, LOOP+29, LOOP+30, STRING+3, PARAMS+5, PARAMS+6 | 
| P12 | OBX+1~, OBX+5*, OBX+44 | 
| P2 | OBX+1~, OBX+3*, OBX+38 | 
| P3 | OBX+1~, OBX+4*, OBX+39 | 
| PREV1 | LOOP+1~, LOOP+18*, LOOP+22 | 
| PREV2 | LOOP+1~, LOOP+29*, LOOP+33 | 
| PSUEXT | HL7+3~ | 
| PSUEXT("PSUBUF" | HL7+20*, SETSEG+15 | 
| PSUEXT("PSUPTR" | HL7+21*, SETSEG+15, SETSEG+26* | 
| PSUHL | HL7+12, HL7+51!, PID+4 | 
| PSUHL("CS" | HL7+16*, OBR+6, OBX+26, OBX+33 | 
| PSUHL("ECH" | HL7+16 | 
| PSUHL("FS" | OBR+10, OBR+11, OBX+38, OBX+39, OBX+40, OBX+41, OBX+42, OBX+43, OBX+44 | 
| PSUHLCS | HL7+3~, HL7+27*, LOOP+10, OBR+6, OBX+26 | 
| PSUHLECH | HL7+3~, HL7+26*, HL7+27 | 
| PSUHLFS | HL7+3~, LOOP+7, LOOP+9, LOOP+21, LOOP+32, OBR+4, OBR+5, OBX+3, OBX+4, OBX+5 , OBX+6, OBX+7, OBX+8, PARAMS+8*, PARAMS+9, PARAMS+10, PARAMS+11 | 
| PTR | SETSEG+14~, SETSEG+15*, SETSEG+16, SETSEG+18, SETSEG+24, SETSEG+26 | 
| PTR1 | SETSEG+14~, SETSEG+23*, SETSEG+24 | 
| QUIT | PARAMS+2~, PARAMS+4*, PARAMS+5, PARAMS+9*, PARAMS+12* | 
| QUIT1 | LOOP+1~, LOOP+17*, LOOP+18, LOOP+22* | 
| QUIT2 | LOOP+1~, LOOP+28*, LOOP+29, LOOP+33* | 
| RANGE | OBX+1~, OBX+22*, OBX+43 | 
| REC | LOOP+1~, LOOP+5*, LOOP+6*, LOOP+7, LOOP+9, OBR~, OBR+4, OBR+5, OBX~, OBX+3 , OBX+4, OBX+5, OBX+6, OBX+7, OBX+8, PARAMS+2~, PARAMS+6*, PARAMS+7, PARAMS+8, PARAMS+9 , PARAMS+10, PARAMS+11 | 
| REC1 | LOOP+1~, LOOP+19*, LOOP+20*, LOOP+21, LOOP+27 | 
| REC2 | LOOP+1~, LOOP+30*, LOOP+31*, LOOP+32, LOOP+35 | 
| RES | OBX+1~, OBX+17*, OBX+19, OBX+21, PARAMS+2~, PARAMS+4* | 
| >> RESULT | GENERATE+4*, GENERATE+5, GENERATE+6 | 
| RESULTS | OBX+1~, OBX+6*, OBX+41 | 
| SEG | LOOP+1~, LOOP+7*, LOOP+8, PID+2~, PID+3*, PID+4, OBX+1~, OBX+37*, OBX+38*, OBX+39* , OBX+40*, OBX+41*, OBX+42*, OBX+43*, OBX+44*, OBX+48, SETSEG~, SETSEG+16, SETSEG+18, SETSEG+24 | 
| SEG( | PID+10, PID+11 | 
| SEG1 | LOOP+1~, LOOP+21*, LOOP+22, LOOP+23 | 
| SEG2 | LOOP+1~, LOOP+32*, LOOP+33, LOOP+34 | 
| SID | SETSEG+14~ | 
| SITE | OBR+2~, OBR+5*, OBR+6*, OBR+11 | 
| SL | SETSEG+14~, SETSEG+16*, SETSEG+21, SETSEG+23 | 
| SPECDATE | OBR+2~, OBR+4*, OBR+10 | 
| STR1 | LOOP+1~, LOOP+9*, LOOP+10*, LOOP+11, LOOP+16 | 
| U | OBX+19, OBX+21 | 
| UNITS | OBX+1~, OBX+7*, OBX+42 |