| [613] | 1 | IBECUSMU ;ALB/CPM - PHARMACY BILLING OPTION UTILITIES ; 12-DEC-96 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**52,347**;21-MAR-94;Build 24 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | FINDC(IBIN,IBW,IBOUT) ; Find transactions which can be cancelled. | 
|---|
|  | 6 | ;  Input:     IBIN  --  Array of transactions, passed by reference | 
|---|
|  | 7 | ;              IBW  --  1 => Write reject statements | 
|---|
|  | 8 | ;                       2 => No writes | 
|---|
|  | 9 | ; Output:    IBOUT  --  Array of transactions which can be cancelled | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | N IBKEY,IBCHTRN,IBCHTRN5,IBCHTRN6 | 
|---|
|  | 12 | S IBKEY="" F  S IBKEY=$O(IBIN(IBKEY)) Q:IBKEY=""  D | 
|---|
|  | 13 | .S IBCHTRN=IBIN(IBKEY) | 
|---|
|  | 14 | .S IBCHTRN5=$G(^IBA(351.5,IBCHTRN,5)),IBCHTRN6=$G(^(6)) | 
|---|
|  | 15 | .; | 
|---|
|  | 16 | .; - can cancel if original transmission was billed | 
|---|
|  | 17 | .;   (no billing rejects) without trying to cancel | 
|---|
|  | 18 | .;   (no cancel auth) or if the cancel was rejected | 
|---|
|  | 19 | .I IBCHTRN5="",IBCHTRN6=""!($P(IBCHTRN6,"^",3)'="") S IBOUT(IBKEY)=IBCHTRN Q | 
|---|
|  | 20 | .; | 
|---|
|  | 21 | .; - write error messages | 
|---|
|  | 22 | .Q:'$G(IBW) | 
|---|
|  | 23 | .; | 
|---|
|  | 24 | .; - billing transaction was rejected | 
|---|
|  | 25 | .I IBCHTRN5]"" W !," The claim for ",$S($P(IBKEY,";",2):"refill #"_$P(IBKEY,";",2),1:"the original fill")," for this prescription was rejected." Q | 
|---|
|  | 26 | .; | 
|---|
|  | 27 | .; - transaction was cancelled | 
|---|
|  | 28 | .W !?1,$S($P(IBKEY,";",2):"Refill #"_$P(IBKEY,";",2),1:"The original fill")," for this prescription has already been reversed." | 
|---|
|  | 29 | ; | 
|---|
|  | 30 | Q | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | ; | 
|---|
|  | 33 | FINDB(IBRX,IBW,IBOUT) ; Find prescriptions which can be billed. | 
|---|
|  | 34 | ;  Input:     IBRX  --  Pointer to the prescription in file #52 | 
|---|
|  | 35 | ;              IBW  --  1 => Write reject statements | 
|---|
|  | 36 | ;                       2 => No writes | 
|---|
|  | 37 | ; Output:    IBOUT  --  Array of transactions which can be billed | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | N IBARR,IBREF,IBKEY,IBCHTRN,IBCHTRN5,IBCHTRN6,IBREF1,LIST | 
|---|
|  | 40 | S LIST="FINDBLIST" | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | ; - build potential array from prescription (#52) file | 
|---|
|  | 43 | S IBARR(IBRX_";0")=$O(^IBA(351.5,"B",IBRX_";0",0)) | 
|---|
|  | 44 | S IBREF=0 | 
|---|
|  | 45 | D RX^PSO52API($$FILE^IBRXUTL(IBRX,2),LIST,IBRX,,"R^^",,) | 
|---|
|  | 46 | S IBREF=0 F  S IBREF=$O(^TMP($J,LIST,$$FILE^IBRXUTL(IBRX,2),IBRX,"RF",IBREF)) Q:IBREF'>0  D | 
|---|
|  | 47 | .Q:'IBREF | 
|---|
|  | 48 | .S IBARR(IBRX_";"_IBREF)=$O(^IBA(351.5,"B",IBRX_";"_IBREF,0)) | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | K ^TMP($J,LIST) | 
|---|
|  | 51 | S IBKEY="" F  S IBKEY=$O(IBARR(IBKEY)) Q:IBKEY=""  D | 
|---|
|  | 52 | .S IBCHTRN=IBARR(IBKEY) | 
|---|
|  | 53 | .I 'IBCHTRN S IBOUT(IBKEY)=IBCHTRN Q | 
|---|
|  | 54 | .; | 
|---|
|  | 55 | .S IBCHTRN5=$G(^IBA(351.5,IBCHTRN,5)),IBCHTRN6=$G(^(6)) | 
|---|
|  | 56 | .; | 
|---|
|  | 57 | .; - can bill if original transmission was rejected, | 
|---|
|  | 58 | .;   or if that transmission was cancelled (re-submit) | 
|---|
|  | 59 | .I IBCHTRN5]""!(IBCHTRN5=""&($P(IBCHTRN6,"^")'="")) S IBOUT(IBKEY)=IBCHTRN Q | 
|---|
|  | 60 | .; | 
|---|
|  | 61 | .; - write messages | 
|---|
|  | 62 | .Q:'$G(IBW) | 
|---|
|  | 63 | .; | 
|---|
|  | 64 | .; - already billed (previous cancellation was rejected) | 
|---|
|  | 65 | .I $P(IBCHTRN6,"^",3)'="" W !!," The previous cancellation for ",$S($P(IBKEY,";",2):"refill #"_$P(IBKEY,";",2),1:"the original fill")," was rejected." Q | 
|---|
|  | 66 | .; | 
|---|
|  | 67 | .; - never tried to cancel | 
|---|
|  | 68 | .W !!?1,$S($P(IBKEY,";",2):"Refill #"_$P(IBKEY,";",2),1:"The original fill")," for this prescription has already been billed." | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | Q | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | SEL(IBARR) ; Select a fill for a prescription. | 
|---|
|  | 74 | ;  Input:   IBARR  --  Array of prescriptions passed by reference. | 
|---|
|  | 75 | ; Output:   IBNUM  --  One of the fill numbers, or -1 (none selected) | 
|---|
|  | 76 | ; | 
|---|
|  | 77 | N DIR,DIRUT,DIROUT,DTOUT,DUOUT,IBSTR,IBKEY,IBRX,IBREF,IBFILL,IBNUM | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | ; - build string for DIR(0) | 
|---|
|  | 80 | S (IBSTR,IBKEY)="",IBNUM=-1 | 
|---|
|  | 81 | F  S IBKEY=$O(IBARR(IBKEY)) Q:IBKEY=""  D | 
|---|
|  | 82 | .S IBRX=+IBKEY,IBREF=+$P(IBKEY,";",2) | 
|---|
|  | 83 | .S IBFILL=$S(IBREF:+$$SUBFILE^IBRXUTL(IBRX,IBREF,52,.01),1:+$$FILE^IBRXUTL(IBRX,22)) | 
|---|
|  | 84 | .S IBSTR=IBSTR_IBREF_":"_$S(IBREF:"Refill #"_IBREF,1:"Original Fill")_" (filled "_$$DAT1^IBOUTL(IBFILL)_");" | 
|---|
|  | 85 | ; | 
|---|
|  | 86 | I IBSTR="" G SELQ | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | S DIR("A")="Select one of the fills by number",DIR(0)="S^"_IBSTR | 
|---|
|  | 89 | D ^DIR I $D(DUOUT)!$D(DIROUT)!$D(DTOUT) G SELQ | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | S IBNUM=Y | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | SELQ Q IBNUM | 
|---|