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