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 |