| 1 | IBOTR3 ;ALB/CPM - INSURANCE PAYMENT TREND REPORT - OUTPUT ; 5-JUN-91
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**42,80,100,118,128,133**;21-MAR-94
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;MAP TO DGCROTR3
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN(IBDIV) ; - Entry point from IBOTR2.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; - Extract zero totals if no data available.
 | 
|---|
| 9 |  I $G(IBXTRACT),'$D(^TMP($J,"IBOTR",IBDIV)) D  G END
 | 
|---|
| 10 |  .S IBUNPD=0 F X=1:1:8 S IBTT(X)=0
 | 
|---|
| 11 |  .D E^IBJDE(8,0)
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  I $G(IBXTRACT) G IBX ; Calculate grand totals for extract.
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  S IBPAG=0,IBLINE="",$P(IBLINE,"-",IOM)="-",Y=DT D D^DIQ S IBTDT=Y
 | 
|---|
| 16 |  I $D(IBAF) D ADDFLD^IBOTR4
 | 
|---|
| 17 |  I '$D(^TMP($J,"IBOTR",IBDIV)) D  S IBCALC=3 D PAUSE G END
 | 
|---|
| 18 |  .S IBX=$S("Bb"'[IBBRT:IBBRT,IBBRN="C":"A",1:"I")
 | 
|---|
| 19 |  .D HDR W !!,"  NO INFORMATION MATCHES SELECTION CRITERIA."
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | IBX S IBX="" F  S IBX=$O(^TMP($J,"IBOTR",IBDIV,IBX)) Q:IBX=""  D  Q:IBQUIT
 | 
|---|
| 22 |  .I IBPRNT'="G"!('$G(IBG)) S IBTT="0^0^0^0^0^0^0^0^0^0"
 | 
|---|
| 23 |  .D:'$G(IBXTRACT) HDR Q:IBQUIT  D INS
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | END K IBINS,IBPAG,IBLINE,IBTDT,IBX,IBTT,IBTI,IBCALC,IBBN,IBD,IBDS,IBAFT
 | 
|---|
| 26 |  K IBAMT,IBG,IBI,IBPERC,IBUNPD,X,X1,X2
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | INS ; - Loop through each insurance company or amount.
 | 
|---|
| 30 |  I IBSORT="I" D
 | 
|---|
| 31 |  .S IBINS="" F  S IBINS=$O(^TMP($J,"IBOTR",IBDIV,IBX,IBINS)) Q:IBINS=""  D BILLNO Q:IBQUIT
 | 
|---|
| 32 |  E  D
 | 
|---|
| 33 |  .S IBAMT="" F  S IBAMT=$O(^TMP($J,"IBOTRS",IBDIV,IBX,IBAMT)) Q:IBAMT=""  S IBINS="" F  S IBINS=$O(^TMP($J,"IBOTRS",IBDIV,IBX,IBAMT,IBINS)) Q:IBINS=""  D BILLNO Q:IBQUIT
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ; - Extract grand totals data.
 | 
|---|
| 36 |  I $G(IBXTRACT),'IBQUIT D  Q
 | 
|---|
| 37 |  .S IBUNPD=$J($P(IBTT,U,2)-$P(IBTT,U,5),0,2)
 | 
|---|
| 38 |  .F X=1:1:8 S IBTT(X)=$S(19'[X:$J($P(IBTT,U,X),0,2),1:$P(IBTT,U,X))
 | 
|---|
| 39 |  .D E^IBJDE(8,0)
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  I 'IBQUIT,'$G(IBG) D GTOT^IBOTR4 ; Write grand totals for report.
 | 
|---|
| 42 |  Q
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | BILLNO ; - Loop through all bills for an insurance company.
 | 
|---|
| 45 |  I $G(IBXTRACT) G LOOP
 | 
|---|
| 46 |  I $Y>(IOSL-15) S IBCALC=15 D PAUSE Q:IBQUIT  D HDR Q:IBQUIT
 | 
|---|
| 47 |  I IBPRNT'="G" S IBDS=0,IBTI="0^0^0^0" D INSADD
 | 
|---|
| 48 |  E  I $G(IBG) S IBTT="0^0^0^0^0^0^0^0^0^0" D INSADD
 | 
|---|
| 49 | LOOP S IBBN="" F  S IBBN=$O(^TMP($J,"IBOTR",IBDIV,IBX,IBINS,IBBN)) Q:IBBN=""  S IBD=^(IBBN) D DETAIL Q:IBQUIT
 | 
|---|
| 50 |  I 'IBQUIT D
 | 
|---|
| 51 |  .I IBPRNT'="G" D SUBTOT^IBOTR4 ; Write insurance co. sub-totals.
 | 
|---|
| 52 |  .E  D:$G(IBG) GTOT^IBOTR4 ;      Write insurance co. grand totals.
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | DETAIL ; - Write out detail lines.
 | 
|---|
| 56 |  N IBPEN S IBPEN=$S($P(IBBN,"@@",2)["*":0,1:$P(IBD,U,6)-$P(IBD,U,7))
 | 
|---|
| 57 |  G:IBPRNT="S" SUBTOT G:IBPRNT="G" GNDTOT
 | 
|---|
| 58 |  I $Y>(IOSL-7) S IBCALC=7 D PAUSE Q:IBQUIT  D HDR Q:IBQUIT  D INSADD
 | 
|---|
| 59 |  W !,$P(IBBN,"@@",2),?10,$P(IBBN,"@@"),?34,$$DATE($P(IBD,U,2))
 | 
|---|
| 60 |  W ?44,$$DATE($P(IBD,U,3)),?54,$$DATE($P(IBD,U,4))
 | 
|---|
| 61 |  W ?64,$S($P(IBD,U,5):$$DATE($P(IBD,U,5)),1:$P(IBD,U,5))
 | 
|---|
| 62 |  S X1=$S($P(IBD,U,5):$P(IBD,U,5),1:DT),X2=$P(IBD,U,4) D ^%DTC S IBDS=IBDS+X
 | 
|---|
| 63 |  W ?74,$J(X,4),?79,$J($P(IBD,U,6),11,2),?91,$J($P(IBD,U,7),10,2)
 | 
|---|
| 64 |  W ?102,$J($P(IBD,U,6)-$P(IBD,U,7),11,2),?114,$J(IBPEN,11,2)
 | 
|---|
| 65 |  W ?126,$J($S(+$P(IBD,U,6)=0:0,1:$P(IBD,U,7)/$P(IBD,U,6)*100),6,2)
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | SUBTOT ; - Update sub-totals.
 | 
|---|
| 68 |  S $P(IBTI,U)=$P(IBTI,U)+1,$P(IBTI,U,2)=$P(IBTI,U,2)+$P(IBD,U,6)
 | 
|---|
| 69 |  S $P(IBTI,U,3)=$P(IBTI,U,3)+$P(IBD,U,7),$P(IBTI,U,4)=$P(IBTI,U,4)+IBPEN
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | GNDTOT ; - Update grand totals.
 | 
|---|
| 72 |  S $P(IBTT,U)=$P(IBTT,U)+1,$P(IBTT,U,2)=$P(IBTT,U,2)+$P(IBD,U,6)
 | 
|---|
| 73 |  I +$P($P(IBBN,"@@"),"(",2)<65 S $P(IBTT,U,3)=$P(IBTT,U,3)+$P(IBD,U,6),$P(IBTT,U,6)=$P(IBTT,U,6)+$P(IBD,U,7)
 | 
|---|
| 74 |  E  S $P(IBTT,U,4)=$P(IBTT,U,4)+$P(IBD,U,6),$P(IBTT,U,7)=$P(IBTT,U,7)+$P(IBD,U,7)
 | 
|---|
| 75 |  S $P(IBTT,U,5)=$P(IBTT,U,5)+$P(IBD,U,7),$P(IBTT,U,8)=$P(IBTT,U,8)+IBPEN
 | 
|---|
| 76 |  I $G(IBCANC),$P(IBD,U,8) S $P(IBTT,U,9)=$P(IBTT,U,9)+1,$P(IBTT,U,10)=$P(IBTT,U,10)+$P(IBD,U,6)
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | HDR ; - Print the report header.
 | 
|---|
| 80 |  S IBPAG=IBPAG+1 W @IOF,IBRTN," PAYMENT TREND REPORT - "
 | 
|---|
| 81 |  W $S(IBX="I":"INPATIENT",IBX="O":"OUTPATIENT",1:"COMBINED INPATIENT AND OUTPATIENT")," BILLING"
 | 
|---|
| 82 |  W ?109,IBTDT,"   PAGE ",$J(IBPAG,3),!
 | 
|---|
| 83 |  I IBDIV W "For: ",$P($G(^DG(40.8,IBDIV,0)),U)," - "
 | 
|---|
| 84 |  W IBDFN,": ",$$DATE(IBBDT)," - ",$$DATE(IBEDT)
 | 
|---|
| 85 |  I IBPRNT="M" W ?82,"Note: '*' after the Bill No. denotes a CLOSED bill"
 | 
|---|
| 86 |  W:$D(IBAF) !,IBAFT G:IBPRNT="G" HDL
 | 
|---|
| 87 |  W !!,"BILL",?10,"PATIENT",?55,"DATE",?64,"DATE BILL",?75,"#"
 | 
|---|
| 88 |  W ?83,"AMOUNT",?93,"AMOUNT",?106,"AMOUNT",?117,"AMOUNT",?127,"PERC"
 | 
|---|
| 89 |  W !,"NUMBER",?10,"NAME (AGE)",?34,"BILL FROM  -  TO",?54,"PRINTED"
 | 
|---|
| 90 |  W ?65,"CLOSED",?74,"DAYS",?83,"BILLED",?92,"COLLECTED",?106,"UNPAID"
 | 
|---|
| 91 |  W ?117,"PENDING",?127,"COLL"
 | 
|---|
| 92 | HDL W !,IBLINE
 | 
|---|
| 93 |  I IBPRNT="M" W !?56,"M A I N  R E P O R T"
 | 
|---|
| 94 |  I IBPRNT="G" W !?55,"G R A N D  T O T A L S",!
 | 
|---|
| 95 |  I IBPRNT="S" W !?49,"S U M M A R Y  S T A T I S T I C S"
 | 
|---|
| 96 |  I "OP"[IBSORT W !?30,"S O R T E D  B Y  A M O U N T  ",$S(IBSORT="O":"O W E",1:"P A I")," D - H I G H E S T  T O  L O W E S T"
 | 
|---|
| 97 |  S IBQUIT=$$STOP^IBOUTL("Trend Report")
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | DATE(IBX) S:IBX]"" IBX=$E(IBX,4,5)_"/"_$E(IBX,6,7)_"/"_$E(IBX,2,3) Q IBX
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | PAUSE I $E(IOST,1,2)'="C-" Q
 | 
|---|
| 103 |  I IOSL<60 F IBI=$Y:1:(IOSL-IBCALC) W !
 | 
|---|
| 104 |  S DIR(0)="E" D ^DIR K DIR
 | 
|---|
| 105 |  I $D(DIRUT)!($D(DUOUT)) S IBQUIT=1 K DIRUT,DTOUT,DUOUT
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | INSADD ; - Display Insurance Company name and address.
 | 
|---|
| 109 |  ; Input: IBINS
 | 
|---|
| 110 |  N D,PH,IEN
 | 
|---|
| 111 |  W !!?16,"INSURANCE CARRIER: ",$P(IBINS,"@@")
 | 
|---|
| 112 |  S IEN=$P(IBINS,"@@",2) G:'IEN INSADQ
 | 
|---|
| 113 |  S D=$G(^DIC(36,IEN,.11)),PH=$P($G(^(.13)),U) G:D="" INSADQ
 | 
|---|
| 114 |  W:$P(D,U)]"" !?35,$P(D,U)
 | 
|---|
| 115 |  W:$P(D,U,2)]"" !?35,$P(D,U,2)
 | 
|---|
| 116 |  W:$P(D,U,3)]"" !?35,$P(D,U,3)
 | 
|---|
| 117 |  W:$P(D,U)]""!($P(D,U,2)]"")!($P(D,U,3)]"") !?35
 | 
|---|
| 118 |  W $P(D,U,4) W:$P(D,U,4)]""&($P(D,U,5)]"") ", "
 | 
|---|
| 119 |  W $P($G(^DIC(5,+$P(D,U,5),0)),U)
 | 
|---|
| 120 |  W:$P(D,U,6)]""&($P(D,U,4)]""!($P(D,U,5)]"")) "   "
 | 
|---|
| 121 |  W $P(D,U,6) W:PH]"" $J("",8),"Phone: ",PH
 | 
|---|
| 122 | INSADQ W ! Q
 | 
|---|