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 |