| 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
 | 
|---|