| [613] | 1 | IBCNEDEP ;DAOU/ALA - Process Transaction Records ;17-JUN-2002
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**184,271,300**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  ;  This program finds records needing HL7 msg creation
 | 
|---|
 | 6 |  ;  Periodically check for stop request for background task
 | 
|---|
 | 7 |  ;
 | 
|---|
 | 8 |  ;  Variables
 | 
|---|
 | 9 |  ;    RETR = # retries allowed
 | 
|---|
 | 10 |  ;    HLMAX = Maximum # of HL7 msgs
 | 
|---|
 | 11 |  ;    MGRP = Msg Mailgroup
 | 
|---|
 | 12 |  ;    FAIL = # of days before failure
 | 
|---|
 | 13 |  ;    FMSG = Failure Mailman flag
 | 
|---|
 | 14 |  ;    TMSG = Timeout Mailman flag
 | 
|---|
 | 15 |  ;    FLDT = Failure date
 | 
|---|
 | 16 |  ;    FUTDT = Future transmission date
 | 
|---|
 | 17 |  ;    DFN = Patient IEN
 | 
|---|
 | 18 |  ;    PAYR = Payer IEN
 | 
|---|
 | 19 |  ;    DTCRT = Date Created
 | 
|---|
 | 20 |  ;    BUFF = Buffer File IEN
 | 
|---|
 | 21 |  ;    NRETR = # of retries accomplished
 | 
|---|
 | 22 |  ;    IHCNT = Count of successful HL7 msgs
 | 
|---|
 | 23 |  ;    QUERY = Type of msg
 | 
|---|
 | 24 |  ;    EXT =  Which extract produced record
 | 
|---|
 | 25 |  ;    SRVDT = Service Date
 | 
|---|
 | 26 |  ;    IRIEN = Insurance Record IEN
 | 
|---|
 | 27 |  ;    NTRAN = # of transmissions accomplished
 | 
|---|
 | 28 |  ;    OVRIDE = Override Flag
 | 
|---|
 | 29 |  ;    BNDL = Bundle Verification Flag
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 | EN ;  Entry point
 | 
|---|
 | 32 |  ;
 | 
|---|
 | 33 |  ;  Start processing of data
 | 
|---|
 | 34 |  K ^TMP("HLS",$J),^TMP("IBQUERY",$J)
 | 
|---|
 | 35 |  ; Initialize count for periodic TaskMan check
 | 
|---|
 | 36 |  S IBCNETOT=0
 | 
|---|
 | 37 |  ;
 | 
|---|
 | 38 |  ;  Get IB Site Parameters
 | 
|---|
 | 39 |  S IBCNEP=$G(^IBE(350.9,1,51))
 | 
|---|
 | 40 |  S RETR=+$P(IBCNEP,U,6),HLMAX=$P(IBCNEP,U,15),BNDL=$P(IBCNEP,U,23)
 | 
|---|
 | 41 |  S:HLMAX="" HLMAX=99999999
 | 
|---|
 | 42 |  S MGRP=$$MGRP^IBCNEUT5()
 | 
|---|
 | 43 |  S FAIL=$P(IBCNEP,U,5),TMSG=$P(IBCNEP,U,7),FMSG=$P(IBCNEP,U,20)
 | 
|---|
 | 44 |  S FLDT=$$FMADD^XLFDT(DT,-FAIL)
 | 
|---|
 | 45 |  ; Statuses
 | 
|---|
 | 46 |  ;   1 = Ready To Transmit
 | 
|---|
 | 47 |  ;   2 = Transmitted
 | 
|---|
 | 48 |  ;   4 = Hold
 | 
|---|
 | 49 |  ;   6 = Retry
 | 
|---|
 | 50 |  ;
 | 
|---|
 | 51 | HLD ;  Go through the 'Hold' statuses, see if ready to be 'retried'
 | 
|---|
 | 52 |  S IEN=""
 | 
|---|
 | 53 |  F  S IEN=$O(^IBCN(365.1,"AC",4,IEN)) Q:IEN=""  D  Q:$G(ZTSTOP)
 | 
|---|
 | 54 |  . ; Update count for periodic check
 | 
|---|
 | 55 |  . S IBCNETOT=IBCNETOT+1
 | 
|---|
 | 56 |  . ; Check for request to stop background job, periodically
 | 
|---|
 | 57 |  . I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
 | 
|---|
 | 58 |  . ;
 | 
|---|
 | 59 |  . S FUTDT=$P($G(^IBCN(365.1,IEN,0)),U,9)
 | 
|---|
 | 60 |  . ;
 | 
|---|
 | 61 |  . ;  If the future date is today, set status to 'Retry',
 | 
|---|
 | 62 |  . ;  DON'T clear future transmission date. (Need date to see if this is the first
 | 
|---|
 | 63 |  . ;  time that the payer asked us to resubmit this inquiry.)
 | 
|---|
 | 64 |  . I FUTDT'>DT D SST^IBCNEUT2(IEN,6) ;D
 | 
|---|
 | 65 |  . ;. NEW DA,DIE,DR
 | 
|---|
 | 66 |  . ;. S DA=IEN,DIE="^IBCN(365.1,",DR=".09///@" D ^DIE
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  ; Exit based on stop request
 | 
|---|
 | 69 |  I $G(ZTSTOP) G EXIT
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 | TMT ;  If the status is 'Transmitted' - is this a 'Retry' or
 | 
|---|
 | 72 |  ;  'Comm Failure'
 | 
|---|
 | 73 |  S IEN=""
 | 
|---|
 | 74 |  F  S IEN=$O(^IBCN(365.1,"AC",2,IEN)) Q:IEN=""  D  Q:$G(ZTSTOP)
 | 
|---|
 | 75 |  . ; Update count for periodic check
 | 
|---|
 | 76 |  . S IBCNETOT=IBCNETOT+1
 | 
|---|
 | 77 |  . ; Check for request to stop background job, periodically
 | 
|---|
 | 78 |  . I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
 | 
|---|
 | 79 |  . ;
 | 
|---|
 | 80 |  . NEW TDATA,DTCRT,BUFF,DFN,PAYR,XMSUB,VERID
 | 
|---|
 | 81 |  . S TDATA=$G(^IBCN(365.1,IEN,0))
 | 
|---|
 | 82 |  . S DFN=$P(TDATA,U,2),PAYR=$P(TDATA,U,3)
 | 
|---|
 | 83 |  . S DTCRT=$P(TDATA,U,6)\1,BUFF=$P(TDATA,U,5)
 | 
|---|
 | 84 |  . S VERID=$P(TDATA,U,11)
 | 
|---|
 | 85 |  . ;
 | 
|---|
 | 86 |  . ;  Check against the Failure Date
 | 
|---|
 | 87 |  . I DTCRT>FLDT Q
 | 
|---|
 | 88 |  . ;
 | 
|---|
 | 89 |  . ;  If retries are defined
 | 
|---|
 | 90 |  . I RETR>0 D  Q
 | 
|---|
 | 91 |  .. ;
 | 
|---|
 | 92 |  .. ;  Send timeout mail msg
 | 
|---|
 | 93 |  .. I PAYR'=$$FIND1^DIC(365.12,"","X","~NO PAYER") D TMRR^IBCNEDEQ
 | 
|---|
 | 94 |  .. D SST^IBCNEUT2(IEN,6)
 | 
|---|
 | 95 |  . ;
 | 
|---|
 | 96 |  . ; If no retries defined, set to fail
 | 
|---|
 | 97 |  . D SST^IBCNEUT2(IEN,5)
 | 
|---|
 | 98 |  . ;
 | 
|---|
 | 99 |  . ;  For msg in the Response file set the status to
 | 
|---|
 | 100 |  . ; 'Comm Failure'
 | 
|---|
 | 101 |  . D RSTA^IBCNEUT7(IEN)
 | 
|---|
 | 102 |  . ;
 | 
|---|
 | 103 |  . ;  Set Buffer symbol to 'B12' (Comm Failure)
 | 
|---|
 | 104 |  . I BUFF'="" D BUFF^IBCNEUT2(BUFF,15)
 | 
|---|
 | 105 |  . ;
 | 
|---|
 | 106 |  . I PAYR=$$FIND1^DIC(365.12,"","X","~NO PAYER") Q
 | 
|---|
 | 107 |  . ;
 | 
|---|
 | 108 |  . ; Issue comm fail MailMan msg only for ver'ns
 | 
|---|
 | 109 |  . I VERID="V" D CERR^IBCNEDEQ
 | 
|---|
 | 110 |  ;
 | 
|---|
 | 111 |  ; Exit for stop request
 | 
|---|
 | 112 |  I $G(ZTSTOP) G EXIT
 | 
|---|
 | 113 |  ;
 | 
|---|
 | 114 | RET ;  If status is 'Retry'
 | 
|---|
 | 115 |  S IEN=""
 | 
|---|
 | 116 |  F  S IEN=$O(^IBCN(365.1,"AC",6,IEN)) Q:IEN=""  D  Q:$G(ZTSTOP)
 | 
|---|
 | 117 |  . ; Update count for periodic check
 | 
|---|
 | 118 |  . S IBCNETOT=IBCNETOT+1
 | 
|---|
 | 119 |  . ; Check for request to stop background job, periodically
 | 
|---|
 | 120 |  . I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
 | 
|---|
 | 121 |  . ;
 | 
|---|
 | 122 |  . NEW TDATA,NRETR,PAYR,BUFF,DFN,MSG,RIEN,HIEN,XMSUB,VERID
 | 
|---|
 | 123 |  . S TDATA=$G(^IBCN(365.1,IEN,0))
 | 
|---|
 | 124 |  . S NRETR=$P(TDATA,U,8),PAYR=$P(TDATA,U,3)
 | 
|---|
 | 125 |  . S BUFF=$P(TDATA,U,5),DFN=$P(TDATA,U,2)
 | 
|---|
 | 126 |  . S VERID=$P(TDATA,U,11)
 | 
|---|
 | 127 |  . S NRETR=NRETR+1
 | 
|---|
 | 128 |  . ;
 | 
|---|
 | 129 |  . ;  If retries are finished, set to fail
 | 
|---|
 | 130 |  . I NRETR>RETR D  Q
 | 
|---|
 | 131 |  .. D SST^IBCNEUT2(IEN,5)
 | 
|---|
 | 132 |  .. ;
 | 
|---|
 | 133 |  .. ;  Set Buffer symbol to 'B12' (Comm Failure)
 | 
|---|
 | 134 |  .. I BUFF'="" D BUFF^IBCNEUT2(BUFF,15)
 | 
|---|
 | 135 |  .. ;
 | 
|---|
 | 136 |  .. ;  For msg in the Response file set the status to
 | 
|---|
 | 137 |  .. ; 'Comm Failure'
 | 
|---|
 | 138 |  .. D RSTA^IBCNEUT7(IEN)
 | 
|---|
 | 139 |  .. I PAYR=$$FIND1^DIC(365.12,"","X","~NO PAYER") Q
 | 
|---|
 | 140 |  .. ;
 | 
|---|
 | 141 |  .. I VERID="V" D CERE^IBCNEDEQ
 | 
|---|
 | 142 |  . ; If generating retry, set IIV status to comm failure (5) for
 | 
|---|
 | 143 |  . ; remaining related responses
 | 
|---|
 | 144 |  . D RSTA^IBCNEUT7(IEN)
 | 
|---|
 | 145 |  ;
 | 
|---|
 | 146 |  ; Exit for stop request
 | 
|---|
 | 147 |  I $G(ZTSTOP) G EXIT
 | 
|---|
 | 148 |  ;
 | 
|---|
 | 149 | FIN ; Prioritize requests for statuses 'Retry' and 'Ready to Transmit'
 | 
|---|
 | 150 |  ;
 | 
|---|
 | 151 |  ;  Separate inquiries into verifications, identifications,
 | 
|---|
 | 152 |  ;  and "fishes" - VNUM = Priority of output
 | 
|---|
 | 153 |  F STA=1,6 S IEN="" D
 | 
|---|
 | 154 |  . F  S IEN=$O(^IBCN(365.1,"AC",STA,IEN)) Q:IEN=""  D
 | 
|---|
 | 155 |  .. S IBDATA=$G(^IBCN(365.1,IEN,0)) Q:IBDATA=""
 | 
|---|
 | 156 |  .. S QUERY=$P(IBDATA,U,11),DFN=$P(IBDATA,U,2),OVRIDE=$P(IBDATA,U,14)
 | 
|---|
 | 157 |  .. S PAYR=$P(IBDATA,U,3)
 | 
|---|
 | 158 |  .. I QUERY="V" S VNUM=3
 | 
|---|
 | 159 |  .. I QUERY'="V" D
 | 
|---|
 | 160 |  ... I PAYR=$$FIND1^DIC(365.12,,"X","~NO PAYER") S VNUM=5 Q
 | 
|---|
 | 161 |  ... S VNUM=4
 | 
|---|
 | 162 |  .. I OVRIDE'="" D
 | 
|---|
 | 163 |  ... I PAYR=$$FIND1^DIC(365.12,,"X","~NO PAYER") S VNUM=2 Q
 | 
|---|
 | 164 |  ... S VNUM=1
 | 
|---|
 | 165 |  .. S ^TMP("IBQUERY",$J,VNUM,DFN,IEN)=""
 | 
|---|
 | 166 |  ;
 | 
|---|
 | 167 | LP ;  Loop through priorities, process as either verifications
 | 
|---|
 | 168 |  ;  or identifications
 | 
|---|
 | 169 |  S VNUM="",IHCNT=0
 | 
|---|
 | 170 |  F  S VNUM=$O(^TMP("IBQUERY",$J,VNUM)) Q:VNUM=""  D  Q:IHCNT=HLMAX!$G(ZTSTOP)!$G(QFL)=1
 | 
|---|
 | 171 |  . I VNUM=1!(VNUM=3) D VER Q
 | 
|---|
 | 172 |  . D ID
 | 
|---|
 | 173 |  ;
 | 
|---|
 | 174 | EXIT ;  Finish
 | 
|---|
 | 175 |  K BUFF,CNT,D,D0,DA,DFN,DI,DIC,DIE,DISYS,DQ,DR,DTCRT,EXT,FAIL,FLDT,FUTDT
 | 
|---|
 | 176 |  K FRDT,FMSG,GT1,HCT,HIEN,HL,HLCDOM,HLCINS,HLCS,HLCSTCP,HLDOM,HLECH,%I,%H
 | 
|---|
 | 177 |  K HLEID,HLFS,HLHDR,HLINST,HLIP,HLN,HLPARAM,HLPROD,HLQ,HLRESLT,XMSUB
 | 
|---|
 | 178 |  K HLSAN,HLTYPE,HLX,IBCNEP,IBCNHLP,IEN,IN1,IRIEN,MDTM,MGRP,MSGID,TOT
 | 
|---|
 | 179 |  K NRETR,NTRAN,OVRIDE,PAYR,PID,QFL,QUERY,RETR,RSIEN,SRVDT,STA,TRANSR,X
 | 
|---|
 | 180 |  K ZMID,IHCNT,HLMAX,^TMP("IBQUERY",$J),Y,DOD,DGREL,TMSG,RSTYPE,OMSGID,QFL
 | 
|---|
 | 181 |  K IBCNETOT,HLP,SUBID,VNUM,BNDL,IBDATA
 | 
|---|
 | 182 |  Q
 | 
|---|
 | 183 |  ;
 | 
|---|
 | 184 | VER ;  Initialize HL7 variables protocol for Verifications
 | 
|---|
 | 185 |  S IBCNHLP="IBCNE IIV RQV OUT"
 | 
|---|
 | 186 |  D INIT^IBCNEHLO
 | 
|---|
 | 187 |  ;
 | 
|---|
 | 188 |  S DFN=""
 | 
|---|
 | 189 |  F  S DFN=$O(^TMP("IBQUERY",$J,VNUM,DFN)) Q:DFN=""  D  Q:IHCNT=HLMAX!$G(ZTSTOP)
 | 
|---|
 | 190 |  . ;
 | 
|---|
 | 191 |  . ;  If the INQUIRE SECONDARY INSURANCES flag is 'yes',
 | 
|---|
 | 192 |  . ;  bundle verifications together, send a continuation pointer
 | 
|---|
 | 193 |  . I VNUM=3,BNDL D  Q:QFL
 | 
|---|
 | 194 |  .. S TOT=0,IEN="",QFL=0
 | 
|---|
 | 195 |  .. F  S IEN=$O(^TMP("IBQUERY",$J,VNUM,DFN,IEN)) Q:IEN=""  S TOT=TOT+1
 | 
|---|
 | 196 |  .. ;
 | 
|---|
 | 197 |  .. ;  If the total # of "bundled" verifications is
 | 
|---|
 | 198 |  .. ;  greater than the maximum # of HL7 allowed, quit
 | 
|---|
 | 199 |  .. I (TOT+IHCNT)>HLMAX S QFL=1 Q
 | 
|---|
 | 200 |  . ;
 | 
|---|
 | 201 |  . S IEN="",OMSGID="",QFL=0,CNT=0
 | 
|---|
 | 202 |  . F  S IEN=$O(^TMP("IBQUERY",$J,VNUM,DFN,IEN)) Q:IEN=""  D  Q:IHCNT=HLMAX!$G(ZTSTOP)
 | 
|---|
 | 203 |  .. ; Update count for periodic check
 | 
|---|
 | 204 |  .. S IBCNETOT=IBCNETOT+1
 | 
|---|
 | 205 |  .. ; Check for request to stop background job, periodically
 | 
|---|
 | 206 |  .. I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
 | 
|---|
 | 207 |  .. ;
 | 
|---|
 | 208 |  .. D PROC I PID="" Q
 | 
|---|
 | 209 |  .. ;
 | 
|---|
 | 210 |  .. I BNDL S HLP("CONTPTR")=$G(OMSGID)
 | 
|---|
 | 211 |  .. ; D GENERATE^HLMA(HLEID,"GM",1,.HLRESLT,"",.HLP)
 | 
|---|
 | 212 |  .. D GENERATE^HLMA(IBCNHLP,"GM",1,.HLRESLT,"",.HLP)
 | 
|---|
 | 213 |  .. K ^TMP("HLS",$J),HLP
 | 
|---|
 | 214 |  .. ;
 | 
|---|
 | 215 |  .. ;  If not successful
 | 
|---|
 | 216 |  .. I $P(HLRESLT,U,2)]"" D HLER^IBCNEDEQ Q
 | 
|---|
 | 217 |  .. ;  If successful
 | 
|---|
 | 218 |  .. D SCC^IBCNEDEQ
 | 
|---|
 | 219 |  .. I BNDL D
 | 
|---|
 | 220 |  ... I CNT=1 S OMSGID=MSGID
 | 
|---|
 | 221 |  ;
 | 
|---|
 | 222 |  K HL,IN1,GT1,PID,DFN,^TMP($J,"HLS")
 | 
|---|
 | 223 |  ;
 | 
|---|
 | 224 |  ; Exit based on stop request
 | 
|---|
 | 225 |  I $G(ZTSTOP) Q
 | 
|---|
 | 226 |  ;
 | 
|---|
 | 227 |  ;  If the # of HL7 msgs generate equals the
 | 
|---|
 | 228 |  ;  maximum # of HL7 msgs allowed, quit
 | 
|---|
 | 229 |  I IHCNT=HLMAX Q
 | 
|---|
 | 230 |  ;
 | 
|---|
 | 231 |  Q
 | 
|---|
 | 232 |  ;
 | 
|---|
 | 233 | ID ;  Send Identification Msgs
 | 
|---|
 | 234 |  ;
 | 
|---|
 | 235 |  ;  Initialize the HL7 variables based on the HL7 protocol
 | 
|---|
 | 236 |  S IBCNHLP="IBCNE IIV RQI OUT"
 | 
|---|
 | 237 |  D INIT^IBCNEHLO
 | 
|---|
 | 238 |  ;
 | 
|---|
 | 239 |  S DFN=""
 | 
|---|
 | 240 |  F  S DFN=$O(^TMP("IBQUERY",$J,VNUM,DFN)) Q:DFN=""  D  Q:IHCNT=HLMAX!$G(ZTSTOP)!QFL
 | 
|---|
 | 241 |  . ; Update count for periodic check
 | 
|---|
 | 242 |  . S IBCNETOT=IBCNETOT+1
 | 
|---|
 | 243 |  . ; Check for request to stop background job, periodically
 | 
|---|
 | 244 |  . I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
 | 
|---|
 | 245 |  . ;
 | 
|---|
 | 246 |  . S TOT=0,IEN="",CNT=0,OMSGID="",QFL=0
 | 
|---|
 | 247 |  . ;
 | 
|---|
 | 248 |  . ;  Get the total # of identification msgs for a patient
 | 
|---|
 | 249 |  . F  S IEN=$O(^TMP("IBQUERY",$J,VNUM,DFN,IEN)) Q:IEN=""  S TOT=TOT+1
 | 
|---|
 | 250 |  . ;
 | 
|---|
 | 251 |  . ;  If the total # of identification msgs for this
 | 
|---|
 | 252 |  . ;  patient is greater than the maximum # of allowed
 | 
|---|
 | 253 |  . ;  HL7 msgs, stop processing until the next night
 | 
|---|
 | 254 |  . I (TOT+IHCNT)>HLMAX S QFL=1 Q
 | 
|---|
 | 255 |  . ;
 | 
|---|
 | 256 |  . ;  For each identification transaction generate an HL7 msg
 | 
|---|
 | 257 |  . F  S IEN=$O(^TMP("IBQUERY",$J,VNUM,DFN,IEN)) Q:IEN=""  D  Q:IHCNT=HLMAX
 | 
|---|
 | 258 |  .. D PROC
 | 
|---|
 | 259 |  .. ;
 | 
|---|
 | 260 |  .. I VNUM=4 S HLP("CONTPTR")=$G(OMSGID)
 | 
|---|
 | 261 |  .. ; D GENERATE^HLMA(HLEID,"GM",1,.HLRESLT,"",.HLP)
 | 
|---|
 | 262 |  .. D GENERATE^HLMA(IBCNHLP,"GM",1,.HLRESLT,"",.HLP)
 | 
|---|
 | 263 |  .. K ^TMP("HLS",$J),HLP
 | 
|---|
 | 264 |  .. ;
 | 
|---|
 | 265 |  .. ;  If not successful
 | 
|---|
 | 266 |  .. I $P(HLRESLT,U,2)]"" D HLER^IBCNEDEQ Q
 | 
|---|
 | 267 |  .. ;
 | 
|---|
 | 268 |  .. ;  If successful
 | 
|---|
 | 269 |  .. D SCC^IBCNEDEQ
 | 
|---|
 | 270 |  .. I VNUM=4 D
 | 
|---|
 | 271 |  ... I CNT=1 S OMSGID=MSGID
 | 
|---|
 | 272 |  ;
 | 
|---|
 | 273 |  Q
 | 
|---|
 | 274 |  ;
 | 
|---|
 | 275 | PROC ;  Process TQ record
 | 
|---|
 | 276 |  S TRANSR=$G(^IBCN(365.1,IEN,0))
 | 
|---|
 | 277 |  S DFN=$P(TRANSR,U,2),PAYR=$P(TRANSR,U,3),BUFF=$P(TRANSR,U,5)
 | 
|---|
 | 278 |  S QUERY=$P(TRANSR,U,11),EXT=$P(TRANSR,U,10),SRVDT=$P(TRANSR,U,12)
 | 
|---|
 | 279 |  S IRIEN=$P(TRANSR,U,13),HCT=0,NTRAN=$P(TRANSR,U,7),NRETR=$P(TRANSR,U,8)
 | 
|---|
 | 280 |  S SUBID=$P(TRANSR,U,16),OVRIDE=$P(TRANSR,U,14),STA=$P(TRANSR,U,4)
 | 
|---|
 | 281 |  S FRDT=$P(TRANSR,U,17)
 | 
|---|
 | 282 |  ;
 | 
|---|
 | 283 |  ;  Build the HL7 msg
 | 
|---|
 | 284 |  S HCT=HCT+1,^TMP("HLS",$J,HCT)="PRD|NA"
 | 
|---|
 | 285 |  D PID^IBCNEHLQ I PID=""!(PID?."*") Q
 | 
|---|
 | 286 |  S HCT=HCT+1,^TMP("HLS",$J,HCT)=$TR(PID,"*","")
 | 
|---|
 | 287 |  D GT1^IBCNEHLQ I GT1'="",GT1'?."*" S HCT=HCT+1,^TMP("HLS",$J,HCT)=$TR(GT1,"*","")
 | 
|---|
 | 288 |  D IN1^IBCNEHLQ I IN1'="",IN1'?."*" D
 | 
|---|
 | 289 |  . S HCT=HCT+1
 | 
|---|
 | 290 |  . I VNUM=1 S ^TMP("HLS",$J,HCT)=$TR(IN1,"*","") Q
 | 
|---|
 | 291 |  . I VNUM=2,'BNDL S ^TMP("HLS",$J,HCT)=$TR(IN1,"*","") Q
 | 
|---|
 | 292 |  . S CNT=CNT+1
 | 
|---|
 | 293 |  . S $P(IN1,HLFS,22)=TOT,$P(IN1,HLFS,21)=CNT
 | 
|---|
 | 294 |  . S ^TMP("HLS",$J,HCT)=$TR(IN1,"*","")
 | 
|---|
 | 295 |  Q
 | 
|---|