[613] | 1 | IBARXMA ;LL/ELZ - PHARMCAY COPAY BACKGROUND PROCESSES ;19-JAN-2001
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**150,158**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | FILER(IBA) ; This label is called by the IB background filer to
|
---|
| 6 | ; notify other facilities that a transaction has occurred on the current
|
---|
| 7 | ; facility. It will then update the status in 354.71 assuming that the
|
---|
| 8 | ; transaction was accepted at all the subscribing facilities.
|
---|
| 9 | ;
|
---|
| 10 | ; IBA would be the IEN of file 350 to process.
|
---|
| 11 | ;
|
---|
| 12 | N IBZ,IBY,Y,IBER
|
---|
| 13 | ;
|
---|
| 14 | S IBZ=$P($G(^IB(+IBA,0)),"^",19) I 'IBZ Q
|
---|
| 15 | S $P(^IBAM(354.71,IBZ,0),"^",4)=+IBA ; set reference back
|
---|
| 16 | ;
|
---|
| 17 | S IBY=1 D FOUND(.IBY,IBZ)
|
---|
| 18 | ;
|
---|
| 19 | I -1=+$G(IBY) S Y=IBY D ^IBAERR
|
---|
| 20 | ;
|
---|
| 21 | Q
|
---|
| 22 | ;
|
---|
| 23 | FOUND(IBY,IBZ) ; come in here to do the work
|
---|
| 24 | ;
|
---|
| 25 | ; ien in 354.71 stored in IBZ, assumes DFN is defined
|
---|
| 26 | ;
|
---|
| 27 | N IBTFL,IBX,IBT,X,Y,DIE,DA,DR,DIC,IBS
|
---|
| 28 | ;
|
---|
| 29 | ; get treating facility list
|
---|
| 30 | S IBTFL=$$TFL^IBARXMU(DFN,.IBTFL)
|
---|
| 31 | ;
|
---|
| 32 | ; no other facilities, i'm done
|
---|
| 33 | I 'IBTFL D STATUS(.IBY,IBZ,0) Q
|
---|
| 34 | ;
|
---|
| 35 | ; ok lets do some talking to other VA's
|
---|
| 36 | S IBX=0 F S IBX=$O(IBTFL(IBX)) Q:IBX<1!(IBY<1) D
|
---|
| 37 | . ;
|
---|
| 38 | . ; have I already completed transmission here?
|
---|
| 39 | . S IBS=$$LKUP^XUAF4(IBX) I IBS>0,$P($G(^IBAM(354.71,IBZ,1,+$O(^IBAM(354.71,IBZ,1,"B",+IBS,0)),0)),"^",2),'$G(IBONE) Q
|
---|
| 40 | . ;
|
---|
| 41 | . I '$D(ZTQUEUED) U IO W !,"Now transmitting to ",$P(IBTFL(IBX),"^",2)," ..."
|
---|
| 42 | . S IBT=$$SEND^IBARXMU(DFN,IBX,^IBAM(354.71,IBZ,0))
|
---|
| 43 | . ;
|
---|
| 44 | . ; update 354.71 transmission record
|
---|
| 45 | . S DA=$O(^IBAM(354.71,IBZ,1,"B",IBS,0)),DA(1)=IBZ
|
---|
| 46 | . ;
|
---|
| 47 | . ; save of error(s) for message
|
---|
| 48 | . S:IBT<1 IBER(IBX)=IBT
|
---|
| 49 | . ;
|
---|
| 50 | . I DA D Q
|
---|
| 51 | .. S DIE="^IBAM(354.71,"_IBZ_",1,",DR=".02////"_$S(+IBT>0:1,1:0)
|
---|
| 52 | .. L +^IBAM(354.71,IBZ,1,DA):10 I '$T S IBY="-1^IB318" Q
|
---|
| 53 | .. D ^DIE L -^IBAM(354.71,IBZ,1,DA)
|
---|
| 54 | . S DIC="^IBAM(354.71,"_IBZ_",1,",DIC(0)="",X=IBS
|
---|
| 55 | . S DIC("DR")=".02////"_$S(IBT>0:1,1:0) D FILE^DICN
|
---|
| 56 | ;
|
---|
| 57 | D STATUS(.IBY,IBZ,IBTFL):IBY>0
|
---|
| 58 | ;
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | NIGHT ; queue off job to do nightly processing
|
---|
| 62 | N IOP,ZTIO,ZTSAVE,ZTRTN,ZTDESC,ZTASK,%ZIS,ZTDTH
|
---|
| 63 | S ZTIO="",ZTRTN="NIGHTQ^IBARXMA",ZTDTH=$H,ZTDESC="RX Copay Cap Follow-up Transmissions"
|
---|
| 64 | D ^%ZTLOAD
|
---|
| 65 | Q
|
---|
| 66 | ;
|
---|
| 67 | NIGHTQ ; called from nightly background job for transmissions
|
---|
| 68 | ;
|
---|
| 69 | N IBX,IBS,X
|
---|
| 70 | ;
|
---|
| 71 | F IBS="P","Y" S IBX=0 F S IBX=$O(^IBAM(354.71,"AC",IBS,IBX)) Q:IBX<1 D
|
---|
| 72 | . N IBY,IBZ,IBM,XMZ,XMY,XMDUZ,XMSUB,IBL,IBF,IBT,DFN,IBA,IBN,IBER S IBY=1
|
---|
| 73 | . ;
|
---|
| 74 | . S DFN=$P($G(^IBAM(354.71,+IBX,0)),"^",2) Q:'DFN
|
---|
| 75 | . S IBY=1 D FOUND(.IBY,IBX)
|
---|
| 76 | . ;
|
---|
| 77 | . ; if it is successful, quit and move on to next one
|
---|
| 78 | . S IBZ=^IBAM(354.71,IBX,0)
|
---|
| 79 | . I IBY>0,($P(IBZ,"^",5)="C"!($P(IBZ,"^",5)="X")) Q
|
---|
| 80 | . ;
|
---|
| 81 | . ; is the transaction < 2 days old, quit
|
---|
| 82 | . I $$FMADD^XLFDT($P(IBZ,"^",15),2)>DT Q
|
---|
| 83 | . ;
|
---|
| 84 | . ; send message to mail group of old transaction notification
|
---|
| 85 | . D DEM^VADPT
|
---|
| 86 | . S XMSUB="Rx Copay Transmission Error",XMDUZ="INTEGRATED BILLING PACKAGE" D XMZ^XMA2 I XMZ<1 Q
|
---|
| 87 | . S IBL=0
|
---|
| 88 | . D M("A medication co-payment transaction could not be sent to one or more of"),M("the patient's treating facilities for at least 2 days. After verifying that")
|
---|
| 89 | . D M("the HL7 Logical Links are working correctly to the sites listed below, you"),M("can use the option 'Push Rx Copay Cap Transactions' to transmit this")
|
---|
| 90 | . D M("transaction immediately or the IB software will try to transmit this"),M("transaction when the IB MT NIGHT COMP job runs.")
|
---|
| 91 | . D M(" "),M(" Patient: "_VADM(1)),M(" SSN: "_VA("PID")),M("Transaction: "_$P(IBZ,"^")),M(" ")
|
---|
| 92 | . D M("Facility Status"),M("----------------------------------- --------------------")
|
---|
| 93 | . S IBF=0 F S IBF=$O(^IBAM(354.71,IBX,1,IBF)) Q:IBF<1 S IBT=^IBAM(354.71,IBX,1,IBF,0),IBN=$$FAC^IBARXMU(+IBT),IBN=$P(IBN,"^")_" ("_$P(IBN,"^",2)_")" D
|
---|
| 94 | .. D M($$SP(IBN,39)_$$EXTERNAL^DILFD(354.711,.02,"",$P(IBT,"^",2)))
|
---|
| 95 | . ;
|
---|
| 96 | . ; include errors in message
|
---|
| 97 | . I $D(IBER) D M(" "),M("Errors:") S X=0 F S X=$O(IBER(X)) Q:X<1 D M(X_" = "_IBER(X))
|
---|
| 98 | . ;
|
---|
| 99 | . S ^XMB(3.9,XMZ,2,0)="^3.92^"_IBL_"^"_IBL_"^"_DT
|
---|
| 100 | . S XMY("G.IB RX COPAY CAP ERROR")=""
|
---|
| 101 | . D ENT1^XMD
|
---|
| 102 | Q
|
---|
| 103 | ;
|
---|
| 104 | SP(X,Y) ; makes X be Y space long
|
---|
| 105 | F Q:$L(X)>(Y-1) S X=X_" "
|
---|
| 106 | Q $E(X,1,Y)
|
---|
| 107 | ;
|
---|
| 108 | STATUS(IBY,IBZ,IBT) ; update status in 354.71 if applicable
|
---|
| 109 | ; IBY is return error if applicable
|
---|
| 110 | ; IBZ is the entry number in 354.71
|
---|
| 111 | ; IBT indicates number of treating facilities
|
---|
| 112 | ;
|
---|
| 113 | N IBS,IBX,DA,DIE,DR,X,Y,IBD
|
---|
| 114 | ;
|
---|
| 115 | S IBS=1,IBX=0 I IBT F S IBX=$O(^IBAM(354.71,IBZ,1,IBX)) Q:IBX<1 S:$P(^IBAM(354.71,IBZ,1,IBX,0),"^",2)'=1 IBS=0
|
---|
| 116 | ;
|
---|
| 117 | I IBS S IBD=$P(^IBAM(354.71,IBZ,0),"^",5) D
|
---|
| 118 | . S DIE="^IBAM(354.71,",DA=IBZ
|
---|
| 119 | . S DR=".05///"_$S(IBD="Y":"X",IBD="X":IBD,1:"C")
|
---|
| 120 | . L +^IBAM(354.71,IBZ):10 I '$T S IBY="-1^IB318" Q
|
---|
| 121 | . D ^DIE L -^IBAM(354.71,IBZ)
|
---|
| 122 | ;
|
---|
| 123 | I $G(IBY)<1 S IBY=1 ; success flag
|
---|
| 124 | ;
|
---|
| 125 | Q
|
---|
| 126 | M(T) ; used to set text in mail message
|
---|
| 127 | ; assumes XMZ and IBL
|
---|
| 128 | S IBL=IBL+1,^XMB(3.9,XMZ,2,IBL,0)=T
|
---|