PSXDODH1 ;BIR/HTW-HL7 Message Conversion ;01/15/02 13:10:52
Source file <PSXDODH1.m>
| Name | Comments | DBIA/ICR reference |
|---|---|---|
| BLDSEQ | ;build check sequence of SEGMENTS
|
|
| PUT(REC,DLM,XX) | ;
; Set VAR into piece I of REC using delimiter DLM |
|
| STRBLD(STR0,SEPS) | ;
; default separators for all segments, fields, components are | ^ & ; other separators can be passed in SEPS ex: "|,^,&" or "|,\F\,\S\" ; or placed within the field and segment nodes STR0( , , ..,"S")= separator ; ex: for NTE|1 of HL7 2.1 ; segment NTE|1 STR0("S")="|" ; facility field STR0(4,"S")="\F\" ; address component STR0(4,2,"S")="\S\" |
|
| GETELM(STR,PIECES,SEPS) | ;
; uses STRing and ; returns value of the element located by path of pieces and seperators ; ex: PIECES "3,2,1" SEPS "|,^,&" |
|
| CHECK | ;patient safety check
|
|
| TESTBT | ;test the sequence of the messages in the batch
; stored in ^tmp($j,"PSXDOD","MSG0",I) |
|
| HEADER | ; read FHS,BHS,ORC assemble $$XMIT,NTE|1 called from PSXDODH
|
|
| L2 | ||
| SEGBLD | ; data for checking sequence of segments. ZR1 needs special handling.
|
|
| L1 | ||
| SETELM(STR,PIECES,SEPS,VALUE) | ||
| PIECE(REC,DLM,XX) | ;
; Set VAR = piece I of REC using delimiter DLM |
|
| L3 |
| Name | Field # of Occurrence |
|---|---|
| $$FMDATE^HLFNC | HEADER+13 |
| Name | Line Occurrences |
|---|---|
| Function Call: WRITE |
|
| Function Call: WRITE |
|
| Function Call: WRITE |
|
| Function Call: WRITE |
|
| Function Call: WRITE |
|
| Name | Line Occurrences |
|---|---|
| $$GETELM | CHECK+4, HEADER+12, HEADER+16 |
| CHECK | TESTBT+8 |
| L2 | L1+4 |
| L3 | L2+4 |
| PIECE | HEADER+11, HEADER+17, HEADER+18, HEADER+19 |
| PUT | HEADER+23, HEADER+29, HEADER+30, HEADER+31 |
| >> | Not killed explicitly |
| * | Changed |
| ! | Killed |
| ~ | Newed |
| Name | Field # of Occurrence |
|---|---|
| >> ADDRESS | HEADER+19 |
| >> BATIDB | CHECK+1*, CHECK+2, CHECK+3 |
| >> BATIDM | CHECK+2*, CHECK+3 |
| >> BATNM | HEADER+12* |
| >> BHS | CHECK+1*, HEADER+10*, HEADER+12 |
| >> BTS | CHECK+10* |
| >> DIVISION | HEADER+16*, HEADER+17 |
| >> DIVNUM | HEADER+20* |
| DLM | PIECE~, PIECE+2, PUT~, PUT+3 |
| >> END | HEADER+14* |
| >> FACNUM | HEADER+20* |
| >> FHS | TESTBT+5*, HEADER+10*, HEADER+11 |
| >> G | TESTBT+3, HEADER+10 |
| I | BLDSEQ+2*, PIECE+2~*, PUT+2~*, PUT+3, GETELM+5*, GETELM+6*, SETELM+6*, SETELM+7*, SETELM+8, SETELM+9* |
| IOST | CHECK+3, CHECK+6, CHECK+8, CHECK+12, CHECK+14 |
| >> J | BLDSEQ+4* |
| >> LINE | BLDSEQ+2*, BLDSEQ+3, BLDSEQ+4 |
| >> LN | TESTBT+3*, TESTBT+5, CHECK+1, CHECK+2, CHECK+4, CHECK+5, CHECK+7, CHECK+10 |
| >> LNNUM | TESTBT+3*, TESTBT+5, CHECK+4 |
| >> LSEG | TESTBT+2*, TESTBT+5*, TESTBT+6*, TESTBT+7*, BLDSEQ+3*, BLDSEQ+4 |
| NTE1 | HEADER+9!, HEADER+33* |
| >> NTE1ADD | HEADER+30* |
| >> NTE1DIV | HEADER+29* |
| >> NTE1LOC | HEADER+31*, HEADER+33 |
| >> ORC | HEADER+10*, HEADER+15*, HEADER+16, HEADER+18 |
| >> ORDCNT | TESTBT+2*, CHECK+5*, CHECK+13, CHECK+14 |
| >> ORDCNTB | CHECK+10*, CHECK+13, CHECK+14 |
| >> ORDSEQ | CHECK+2*, CHECK+5, CHECK+7 |
| P | GETELM+4~, GETELM+5*, GETELM+6, SETELM+4~, SETELM+6*, SETELM+7, SETELM+9 |
| P( | GETELM+5*, GETELM+6, SETELM+6*, SETELM+7, SETELM+9 |
| P1 | STRBLD+8~, L1*, L1+3*, L1+4, L1+5, L2+1, L2+2, L2+3, L2+4, L2+5 , L2+6, L3+1, L3+2, L3+3, L3+4, L3+5 |
| P2 | STRBLD+8~, L2*, L2+3*, L2+4, L2+5, L3+1, L3+2, L3+3, L3+4, L3+5 |
| P3 | STRBLD+8~, L3*, L3+3*, L3+4 |
| PI | GETELM+4~, GETELM+5*, SETELM+4~, SETELM+6* |
| PIECES | GETELM~, GETELM+5, SETELM~, SETELM+6 |
| >> PSXERR | TESTBT+2*, TESTBT+6*, CHECK+2*, CHECK+3, CHECK+5*, CHECK+6, CHECK+7*, CHECK+8, CHECK+11*, CHECK+12 , CHECK+13*, CHECK+14 |
| >> PTCNT | TESTBT+2*, CHECK+9*, CHECK+11, CHECK+12 |
| >> PTCNTB | CHECK+10*, CHECK+11, CHECK+12, HEADER+14 |
| REC | PIECE~, PIECE+2, PUT~, PUT+3* |
| >> RXID1 | CHECK+7*, CHECK+8 |
| >> RXIDC | CHECK+4*, CHECK+5, CHECK+6, CHECK+7, CHECK+8 |
| >> RXIDE | CHECK+5*, CHECK+6 |
| >> RXSEQ | CHECK+4*, CHECK+5, CHECK+7 |
| S | GETELM+4~, SETELM+4~ |
| S( | GETELM+5*, GETELM+6, SETELM+6*, SETELM+7, SETELM+9 |
| S1 | STRBLD+8~, L1+2*, L1+5 |
| S2 | STRBLD+8~, L2+2*, L2+5, L2+6 |
| S3 | STRBLD+8~, L3+2*, L3+4, L3+5 |
| >> SEG | TESTBT+3*, TESTBT+4, TESTBT+5, TESTBT+6, TESTBT+7, TESTBT+8, CHECK+1, CHECK+2, CHECK+4, CHECK+5 , CHECK+7, CHECK+9, CHECK+10, BLDSEQ+4* |
| SEGSEQ | BLDSEQ+1! |
| SEGSEQ( | TESTBT+6, BLDSEQ+4* |
| SEPS | GETELM~, GETELM+5, SETELM~, SETELM+6, STRBLD~, STRBLD+9*, L1+1, L2+1, L3+1 |
| >> START | HEADER+14* |
| STR | GETELM~, GETELM+4, SETELM~, SETELM+5, STRBLD+8~, STRBLD+10*, L1*, L1+5*, L1+6 |
| STR( | L1+3, L1+4, L1+5, L2+1*, L2+2, L2+3, L2+4, L2+5*, L2+6*, L3+1* , L3+2, L3+3, L3+4*, L3+5* |
| STR("S" | L1+1*, L1+2 |
| STR0 | STRBLD~, STRBLD+10 |
| >> TRANDTS | HEADER+13* |
| U | TESTBT+6, CHECK+5, CHECK+7, PIECE+2, PUT+2 |
| V | GETELM+4~*, GETELM+6*, GETELM+7, SETELM+4~, SETELM+5*, SETELM+7* |
| V( | SETELM+7*, SETELM+8*, SETELM+9* |
| V(0 | SETELM+5*, SETELM+10 |
| VALUE | SETELM~, SETELM+8 |
| XM | HEADER+9!, HEADER+22*, HEADER+23, HEADER+24* |
| XX | PIECE~, PIECE+2, PUT~, PUT+2 |
| Y | PIECE+2~*, PUT+2~*, PUT+3 |
| >> YY | HEADER+11*, HEADER+17*, HEADER+18*, HEADER+19*, HEADER+23*, HEADER+29*, HEADER+30*, HEADER+31* |
| Name | Field # of Occurrence |
|---|---|
| $T(SEGBLD+I | BLDSEQ+2 |