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