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