[613] | 1 | IBCOPR ;WISC/RFJ,BOISE/WRL-print dollar amts for pre-registration ; 05 May 97 8:30 AM [7/22/03 11:59am]
|
---|
| 2 | ;;2.0; INTEGRATED BILLING ;**75,345**; 21-MAR-94;Build 28
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | W !!,"This report will sort through insurance policies in the patient file"
|
---|
| 6 | W !,"and print patients, bills, and payments with an insurance policy source"
|
---|
| 7 | W !,"of information equal to the user selected criteria."
|
---|
| 8 | ;
|
---|
| 9 | N DATEEND,DATESTRT,IBCNFSUM,IBCNESOI
|
---|
| 10 | ;
|
---|
| 11 | ; select date range
|
---|
| 12 | W ! D DATESEL I '$G(DATEEND) Q
|
---|
| 13 | ;
|
---|
| 14 | ; select Source of Information (SOI)
|
---|
| 15 | W ! D SOISEL I '$D(IBCNESOI) Q
|
---|
| 16 | ;
|
---|
| 17 | S IBCNFSUM=$$SUMMARY I 'IBCNFSUM Q
|
---|
| 18 | ;
|
---|
| 19 | W !!,"Since this report has to loop through all patients and check all insurance"
|
---|
| 20 | W !,"policies, it is recommended this report be queued."
|
---|
| 21 | ;
|
---|
| 22 | ; select device
|
---|
| 23 | W ! S %ZIS="Q" D ^%ZIS Q:POP
|
---|
| 24 | I $D(IO("Q")) D D ^%ZTLOAD K IO("Q"),ZTSK Q
|
---|
| 25 | . S ZTDESC="Source of Information Report",ZTRTN="DQ^IBCOPR"
|
---|
| 26 | . S ZTSAVE("DATE*")="",ZTSAVE("IBCN*")="",ZTSAVE("ZTREQ")="@"
|
---|
| 27 | ;
|
---|
| 28 | W !!,"<*> please wait <*>"
|
---|
| 29 | ;
|
---|
| 30 | DQ ; report (queue) starts here
|
---|
| 31 | N AMOUNT,BILLNUM,CANCEL,CLASS,COUNTNEW,DA,DATA,DATE,DFN,INSCO,PAYMTAMT,PAYMTCNT,TOTALAMT,TOTALCNT,TRANDA,VA,Y,SOI
|
---|
| 32 | K ^TMP($J,"IBCOPR")
|
---|
| 33 | S COUNTNEW=0
|
---|
| 34 | ;
|
---|
| 35 | ; build list of patients using source
|
---|
| 36 | S INSCO=0 F S INSCO=$O(^DPT("AB",INSCO)) Q:'INSCO D
|
---|
| 37 | . S DFN=0 F S DFN=$O(^DPT("AB",INSCO,DFN)) Q:'DFN D
|
---|
| 38 | . . S DA=0 F S DA=$O(^DPT("AB",INSCO,DFN,DA)) Q:'DA D
|
---|
| 39 | . . . S DATA=$G(^DPT(DFN,.312,DA,1))
|
---|
| 40 | . . . S DATE=$P($P(DATA,"^",10),".")
|
---|
| 41 | . . . S SOI=$P(DATA,"^",9)
|
---|
| 42 | . . . ;
|
---|
| 43 | . . . ; Check for existence of SOI
|
---|
| 44 | . . . I $G(SOI)="" Q
|
---|
| 45 | . . . ;
|
---|
| 46 | . . . ; check source of information
|
---|
| 47 | . . . I $G(IBCNESOI)'=1,$G(IBCNESOI(SOI))="" Q
|
---|
| 48 | . . . ;
|
---|
| 49 | . . . ; build list of all patients
|
---|
| 50 | . . . D PID^VADPT
|
---|
| 51 | . . . S Y=$P(DATE,".") D DD^%DT
|
---|
| 52 | . . . S ^TMP($J,"IBCOPR","ALL",DFN,INSCO)=$P($G(^DPT(DFN,0)),"^")_"^"_$G(VA("BID"))_"^"_Y_"^"_SOI
|
---|
| 53 | . . . ;
|
---|
| 54 | . . . ; check date of source of information
|
---|
| 55 | . . . I DATE<DATESTRT!(DATE>DATEEND) Q
|
---|
| 56 | . . . ;
|
---|
| 57 | . . . ; build list of patients match during select date range
|
---|
| 58 | . . . S COUNTNEW(SOI)=$G(COUNTNEW(SOI))+1
|
---|
| 59 | . . . S COUNTNEW=COUNTNEW+1
|
---|
| 60 | . . . S ^TMP($J,"IBCOPR","NEW",SOI,DFN,INSCO)=""
|
---|
| 61 | ;
|
---|
| 62 | ; get charges and payments
|
---|
| 63 | S DFN=0 F S DFN=$O(^TMP($J,"IBCOPR","ALL",DFN)) Q:'DFN D
|
---|
| 64 | . S INSCO=0 F S INSCO=$O(^TMP($J,"IBCOPR","ALL",DFN,INSCO)) Q:'INSCO D
|
---|
| 65 | . . S SOI=$P(^TMP($J,"IBCOPR","ALL",DFN,INSCO),"^",4)
|
---|
| 66 | . . S DA=0 F S DA=$O(^DGCR(399,"AE",DFN,INSCO,DA)) Q:'DA D
|
---|
| 67 | . . . ; date first printed, bill classification
|
---|
| 68 | . . . S DATE=$P($P($G(^DGCR(399,DA,"S")),"^",12),".")
|
---|
| 69 | . . . S CLASS=$P($G(^DGCR(399,DA,0)),"^",5)
|
---|
| 70 | . . . ;
|
---|
| 71 | . . . ; check for 1 or 2 inpatient, 3 or 4 outpatient
|
---|
| 72 | . . . S CLASS=$S(CLASS<3:1,1:3)
|
---|
| 73 | . . . ;
|
---|
| 74 | . . . ; bill canceled
|
---|
| 75 | . . . S CANCEL="" I $P($G(^DGCR(399,DA,"S")),"^",16)=1 S CANCEL="*"
|
---|
| 76 | . . . S BILLNUM=$P($G(^DGCR(399,DA,0)),"^")
|
---|
| 77 | . . . S AMOUNT=+$$ORI^PRCAFN(DA) I AMOUNT'>0 Q
|
---|
| 78 | . . . ;
|
---|
| 79 | . . . I DATE'<DATESTRT,DATE'>DATEEND D
|
---|
| 80 | . . . . S ^TMP($J,"IBCOPR","BILL",SOI,CLASS,DATE,DA)=DFN_"^"_INSCO_"^"_CANCEL_"^"_BILLNUM_"^"_AMOUNT
|
---|
| 81 | . . . . I CANCEL="" S TOTALCNT(SOI,CLASS)=$G(TOTALCNT(SOI,CLASS))+1,TOTALAMT(SOI,CLASS)=$G(TOTALAMT(SOI,CLASS))+AMOUNT
|
---|
| 82 | . . . ;
|
---|
| 83 | . . . ; get payments
|
---|
| 84 | . . . S TRANDA=0 F S TRANDA=$O(^PRCA(433,"C",DA,TRANDA)) Q:'TRANDA D
|
---|
| 85 | . . . . S DATA=$G(^PRCA(433,TRANDA,1))
|
---|
| 86 | . . . . ; transaction type 2 and 34 are payments
|
---|
| 87 | . . . . I $P(DATA,"^",2)'=2,$P(DATA,"^",2)'=34 Q
|
---|
| 88 | . . . . S DATE=$P($P(DATA,"^",9),".")
|
---|
| 89 | . . . . I DATE<DATESTRT!(DATE>DATEEND) Q
|
---|
| 90 | . . . . I '$P($G(^PRCA(433,TRANDA,0)),"^",4) Q
|
---|
| 91 | . . . . S AMOUNT=$P($G(^PRCA(433,TRANDA,3)),"^")
|
---|
| 92 | . . . . S ^TMP($J,"IBCOPR","TRAN",SOI,CLASS,DATE,DA)=DFN_"^"_INSCO_"^"_CANCEL_"^"_TRANDA_"^"_$P(DATA,"^",2)_"^"_AMOUNT
|
---|
| 93 | . . . . I CANCEL="" S PAYMTCNT(SOI,CLASS)=$G(PAYMTCNT(SOI,CLASS))+1,PAYMTAMT(SOI,CLASS)=$G(PAYMTAMT(SOI,CLASS))+AMOUNT
|
---|
| 94 | ;
|
---|
| 95 | S SOI=0
|
---|
| 96 | F S SOI=$O(TOTALCNT(SOI)) Q:SOI="" I $G(COUNTNEW(SOI))="" S COUNTNEW(SOI)=0
|
---|
| 97 | F S SOI=$O(PAYMTCNT(SOI)) Q:SOI="" I $G(COUNTNEW(SOI))="" S COUNTNEW(SOI)=0
|
---|
| 98 | D PRINT^IBCOPR1
|
---|
| 99 | ;
|
---|
| 100 | D ^%ZISC
|
---|
| 101 | K ^TMP($J,"IBCOPR")
|
---|
| 102 | Q
|
---|
| 103 | ;
|
---|
| 104 | ;
|
---|
| 105 | DATESEL ; select starting and ending dates in days
|
---|
| 106 | ; returns datestrt and dateend
|
---|
| 107 | N %,%DT,%H,%I,DEFAULT,X,Y
|
---|
| 108 | K DATEEND,DATESTRT
|
---|
| 109 | START S Y=$E(DT,1,5)_"01" D DD^%DT S DEFAULT=Y
|
---|
| 110 | S %DT("A")="Start with Date: ",%DT("B")=DEFAULT,%DT="AEP",%DT(0)=-DT D ^%DT I Y<0 Q
|
---|
| 111 | I $E(Y,6,7)="00" S Y=$E(Y,1,5)_"01"
|
---|
| 112 | S DATESTRT=Y
|
---|
| 113 | S Y=DT D DD^%DT S DEFAULT=Y
|
---|
| 114 | S %DT("A")=" End with Date: ",%DT("B")=DEFAULT,%DT="AEP",%DT(0)=-DT D ^%DT I Y<0 Q
|
---|
| 115 | I $E(Y,6,7)="00" S Y=$E(Y,1,5)_"01"
|
---|
| 116 | I Y<DATESTRT W !,"END DATE MUST BE GREATER THAN OR EQUAL TO THE START DATE.",! G START
|
---|
| 117 | S DATEEND=Y,Y=DATESTRT D DD^%DT
|
---|
| 118 | W !?5,"*** Selected date range from ",Y," to " S Y=DATEEND D DD^%DT W Y," ***"
|
---|
| 119 | Q
|
---|
| 120 | ;
|
---|
| 121 | ;;
|
---|
| 122 | SOISEL ; Select one SOI (source of information) or ALL - File #355.12
|
---|
| 123 | NEW DIC,DTOUT,DUOUT,X,Y,CT,Q
|
---|
| 124 | K IBCNESOI S CT=0 W !?5,"Enter Sources of Information to include one at a time."
|
---|
| 125 | SOISEL1 S DIC(0)="AMEQ"
|
---|
| 126 | S Q="Include Source of Information"
|
---|
| 127 | I CT=0 S Q=Q_" (<RETURN> for ALL)"
|
---|
| 128 | E S Q="Also "_Q
|
---|
| 129 | S DIC("A")=$$FO^IBCNEUT1(Q_": ",50,"R")
|
---|
| 130 | S DIC="^IBE(355.12,"
|
---|
| 131 | D ^DIC
|
---|
| 132 | I $D(DUOUT)!$D(DTOUT) G SOISELX
|
---|
| 133 | ; If nothing was selected (Y=-1), select ALL sources
|
---|
| 134 | I Y=-1 G SOISELX:CT=1 S IBCNESOI=1 G SOISELX
|
---|
| 135 | S IBCNESOI($P(Y,"^",1))=$P(Y,"^",2),CT=1 G SOISEL1
|
---|
| 136 | ;
|
---|
| 137 | SOISELX ; SOISEL exit pt
|
---|
| 138 | Q
|
---|
| 139 | ;
|
---|
| 140 | SUMMARY() ; ask to print detailed or summary report
|
---|
| 141 | N DIR,DIRUT,X,Y
|
---|
| 142 | S DIR(0)="SOA^D:detailed;S:summary;",DIR("B")="summary"
|
---|
| 143 | S DIR("A")="Type of report to print: "
|
---|
| 144 | W ! D ^DIR
|
---|
| 145 | I $D(DIRUT) Q 0
|
---|
| 146 | Q $S(Y="S":1,Y="D":2,1:0)
|
---|
| 147 | ;
|
---|