| 1 | IBARXEU4 ;ALB/AAS - RX COPAY EXEMPTION CHECK IF PREVIOUSLY CANCELED ; 12-JAN-93 | 
|---|
| 2 | ;;Version 2.0 ; INTEGRATED BILLING ;**34**; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | CANDT ; -- set beginning and ending dates | 
|---|
| 6 | ;    input     dfn     =: patient internal number | 
|---|
| 7 | ;              ibedt   =: end date to cancel | 
|---|
| 8 | ;              ibdt    =: beging date to cancel | 
|---|
| 9 | ; | 
|---|
| 10 | ;    output    ibcandt =: begin date^end date to cancel | 
|---|
| 11 | ; | 
|---|
| 12 | N X | 
|---|
| 13 | ;S IBCANDT=IBDT_"^"_IBEDT | 
|---|
| 14 | ; | 
|---|
| 15 | ; -- get last end date | 
|---|
| 16 | S X=+$O(^IBA(354.1,"ACAN",DFN,"")) S:X<0 X=-X D:'X CONV ;never previously cancelled | 
|---|
| 17 | I X,X>IBDT S IBDT=X | 
|---|
| 18 | ; | 
|---|
| 19 | ; -- only cancel back 1 year from today, or eff. legislation max | 
|---|
| 20 | I IBDT<$$MINUS^IBARXEU0(DT) S IBDT=$$MINUS^IBARXEU0(DT) | 
|---|
| 21 | I IBDT<$$STDATE^IBARXEU S IBDT=$$STDATE^IBARXEU | 
|---|
| 22 | S IBCANDT=IBDT_"^"_IBEDT | 
|---|
| 23 | CANDTQ Q | 
|---|
| 24 | ; | 
|---|
| 25 | CONV ; -- see if conversion done | 
|---|
| 26 | N X | 
|---|
| 27 | S X=$G(^IBE(350.9,1,3)) G:$P(X,"^",14) CONVQ ; conversion complete | 
|---|
| 28 | I $P(X,"^",3),DFN<$P(X,"^",4) G CONVQ ; patient already converted | 
|---|
| 29 | ; | 
|---|
| 30 | ; -- need to convert patient on the fly | 
|---|
| 31 | S IBDT=$$STDATE^IBARXEU | 
|---|
| 32 | CONVQ Q | 
|---|
| 33 | ; | 
|---|
| 34 | ARCAN(DFN,IBSTAT,IBDT,IBEDT) ; -- process cancellation with ar logic here | 
|---|
| 35 | ; | 
|---|
| 36 | ;   Input =:     dfn      patient internal entry number | 
|---|
| 37 | ;             ibstat      patient status from $$rxexmt or $$rxst | 
|---|
| 38 | ;               ibdt      beginning date to cancel | 
|---|
| 39 | ;              ibedt      ending date to cancel | 
|---|
| 40 | ; | 
|---|
| 41 | Q:'+IBSTAT  ; non-exempt patient | 
|---|
| 42 | ; | 
|---|
| 43 | S:IBEDT>DT IBEDT=DT S:IBDT<$$STDATE^IBARXEU IBDT=$$STDATE^IBARXEU | 
|---|
| 44 | ; | 
|---|
| 45 | ; -- set begin and ending date, check x-ref | 
|---|
| 46 | S X=+$O(^IBA(354.1,"ACAN",DFN,"")) S:X<0 X=-X | 
|---|
| 47 | I X,X>IBDT S IBDT=X | 
|---|
| 48 | ; | 
|---|
| 49 | ; -- end date must be after begin date | 
|---|
| 50 | I IBDT>IBEDT G ARCANQ | 
|---|
| 51 | ; | 
|---|
| 52 | ; -- set begin and ending dates in last entry created | 
|---|
| 53 | D UPCAN | 
|---|
| 54 | ; | 
|---|
| 55 | N IBWHER | 
|---|
| 56 | S ERR=0,IBWHER=17 | 
|---|
| 57 | D EN1^PRCAX(DFN,IBDT,IBEDT,.ERR) | 
|---|
| 58 | I ERR]"",+ERR'=ERR S ^TMP("IB-ERROR",$J,DFN)=ERR,IBEXERR=10 S:'$D(IBJOB) IBJOB=11 D ^IBAERR K IBEXERR | 
|---|
| 59 | ARCANQ Q | 
|---|
| 60 | ; | 
|---|
| 61 | UPCAN ; -- update canceled date fields | 
|---|
| 62 | N X2 | 
|---|
| 63 | S DIE="^IBA(354.1,",DR=".13////"_IBDT_";.14////"_IBEDT | 
|---|
| 64 | S DA=+$O(^(+$O(^IBA(354.1,"AIVDT",1,DFN,"")),0)) | 
|---|
| 65 | S X2=$G(^IBA(354.1,DA,0)) | 
|---|
| 66 | I $P(X2,"^",2)'=DFN!($P(X2,"^",14)) G UPCANQ | 
|---|
| 67 | D ^DIE | 
|---|
| 68 | K DIC,DIE,DA,DR,X | 
|---|
| 69 | UPCANQ Q | 
|---|