| [613] | 1 | IBCORC1 ;ALB/CPM - RANK INSURANCE CARRIERS (COMPILE/PRINT) ; 30-JUN-93
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**29,47,68,80**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | DQ ; Tasked entry point to generate and print the rankings.
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 |  ; - look at all insurance bills within date range and accumulate $$
 | 
|---|
 | 7 |  K ^TMP("IBORIC",$J,"IC"),^("IC1"),^("AMT"),^("NUM")
 | 
|---|
 | 8 |  S IBDT=$$START(IBABEG,-1)
 | 
|---|
 | 9 |  F  S IBDT=$O(^DGCR(399,"AP",IBDT)) Q:'IBDT!(IBDT>IBAEND)  D
 | 
|---|
 | 10 |  .S IBN=0 F  S IBN=$O(^DGCR(399,"AP",IBDT,IBN)) Q:'IBN  D EVAL
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 |  ; - if executed by IRM, generate the formatted bulletin and quit
 | 
|---|
 | 13 |  I $G(IBIRM) D BULL^IBCORC3 G ENQ
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 |  ; - invert the list by carrier to rank by amount billed
 | 
|---|
 | 16 |  S IBINS=0 F  S IBINS=$O(^TMP("IBORIC",$J,"IC",IBINS)) Q:'IBINS  S ^TMP("IBORIC",$J,"AMT",-$G(^(IBINS)),IBINS)=""
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ; - print out the ranking list
 | 
|---|
 | 19 |  S IBAMT="",(IBQ,IBCNT,IBPAG,IBTAMT)=0 D HDR
 | 
|---|
 | 20 |  F  S IBAMT=$O(^TMP("IBORIC",$J,"AMT",IBAMT)) Q:IBAMT=""!(IBQ)!(IBCNT>IBNR)  D
 | 
|---|
 | 21 |  .S IBINS=0 F  S IBINS=$O(^TMP("IBORIC",$J,"AMT",IBAMT,IBINS)) Q:'IBINS!(IBQ)!(IBCNT>IBNR)  D
 | 
|---|
 | 22 |  ..S IBCNT=IBCNT+1 Q:IBCNT>IBNR
 | 
|---|
 | 23 |  ..S IBAMTP=-IBAMT,IBTAMT=IBTAMT+IBAMTP
 | 
|---|
 | 24 |  ..S IBINS0=$G(^DIC(36,IBINS,0)),IBINSA=$G(^(.11))
 | 
|---|
 | 25 |  ..I $Y>(IOSL-8) D PAUSE Q:IBQ  D HDR
 | 
|---|
 | 26 |  ..W !!,$J(IBCNT,4),"." W:$P(IBINS0,"^",5) ?16,"**"
 | 
|---|
 | 27 |  ..W ?20,$S($P(IBINS0,"^")]"":$P(IBINS0,"^"),1:"CARRIER UNKNOWN")
 | 
|---|
 | 28 |  ..S X=IBAMTP,X2="2$",X3=15 D COMMA^%DTC W ?55,X
 | 
|---|
 | 29 |  ..D INSDIS(IBINSA)
 | 
|---|
 | 30 |  G:IBQ ENQ
 | 
|---|
 | 31 |  ;
 | 
|---|
 | 32 |  ; - print a total
 | 
|---|
 | 33 |  I $Y>(IOSL-4) D PAUSE G:IBQ ENQ D HDR
 | 
|---|
 | 34 |  W !!,"Total Amount Billed to all Ranked Carriers:" S X=IBTAMT,X2="2$",X3=15 D COMMA^%DTC W ?55,X
 | 
|---|
 | 35 |  D PAUSE
 | 
|---|
 | 36 |  ;I IBFLG W !!,"Sending the report in a bulletin to the MCCR Program Office... " D BULL^IBCORC2 W "done."
 | 
|---|
 | 37 |  ;
 | 
|---|
 | 38 | ENQ K ^TMP("IBORIC",$J,"IC"),^("IC1"),^("AMT"),^("NUM")
 | 
|---|
 | 39 |  I $D(ZTQUEUED) S ZTREQ="@" Q
 | 
|---|
 | 40 |  D ^%ZISC
 | 
|---|
 | 41 |  K DIR,DIRUT,DUOUT,DTOUT,DIROUT,IBAMT,IBAMTP,IBI,IBINS0,IBINSA
 | 
|---|
 | 42 |  K IBQ,IBPAG,IBNR,IBCNT,IBDT,IBND,IBINS,IBN,IBTAMT,X,X1,X2,X3,Y
 | 
|---|
 | 43 | ENQ1 Q
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 | EVAL ; Accumulate amount billed for the carrier if the bill type is correct.
 | 
|---|
 | 46 |  F IBI=0,"M","S","MP" S IBND(IBI)=$G(^DGCR(399,IBN,IBI))
 | 
|---|
 | 47 |  I IBND(0)="" G EVALQ ; no zeroth node
 | 
|---|
 | 48 |  I $P(IBND(0),"^",11)'="i" G EVALQ ; insurer not responsible
 | 
|---|
 | 49 |  S IBINS=+IBND("MP") I 'IBINS G EVALQ ; no carrier associated with bill
 | 
|---|
 | 50 |  I $P(IBND("S"),"^",16) G EVALQ ; bill has been cancelled
 | 
|---|
 | 51 |  S IBAMT=+$$ORI^PRCAFN(IBN) I IBAMT'>0 G EVALQ ; no bill amount
 | 
|---|
 | 52 |  S IBINS=$$INACT(IBINS) ; see if company has been repointed
 | 
|---|
 | 53 |  S ^(IBINS)=$G(^TMP("IBORIC",$J,"IC",IBINS))+IBAMT
 | 
|---|
 | 54 |  I $G(IBIRM) S ^(IBINS)=$G(^TMP("IBORIC",$J,"IC1",IBINS))+1
 | 
|---|
 | 55 | EVALQ Q
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 | PAUSE ; Pause for screen output.
 | 
|---|
 | 58 |  Q:$E(IOST,1,2)'="C-"
 | 
|---|
 | 59 |  N IBI,DIR,DIRUT,DIROUT,DUOUT,DTOUT
 | 
|---|
 | 60 |  F IBI=$Y:1:(IOSL-3) W !
 | 
|---|
 | 61 |  S DIR(0)="E" D ^DIR I $D(DIRUT)!($D(DUOUT)) S IBQ=1
 | 
|---|
 | 62 |  Q
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 | HDR ; Display report header.
 | 
|---|
 | 65 |  N X,Y
 | 
|---|
 | 66 |  S X="Ranking Of The Top "_IBNR_" Insurance Carriers By Total Amount Billed"
 | 
|---|
 | 67 |  S Y=$$SITE^VASITE
 | 
|---|
 | 68 |  I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13
 | 
|---|
 | 69 |  S IBPAG=IBPAG+1
 | 
|---|
 | 70 |  W ?(80-$L(X)\2),X,!
 | 
|---|
 | 71 |  W !,"  Facility: ",$P(Y,"^",2)," (",$P(Y,"^",3),")",?58,"Run Date: ",$$DAT1^IBOUTL(DT)
 | 
|---|
 | 72 |  W !,"Date Range: ",$$DAT1^IBOUTL(IBABEG)," thru ",$$DAT1^IBOUTL(IBAEND),?62,"Page: ",IBPAG
 | 
|---|
 | 73 |  W !?45,"** - denotes an inactive company"
 | 
|---|
 | 74 |  W !,$$DASH,!?2,"Rank",?20,"Insurance Carrier",?55,"Total Amt Billed",!,$$DASH
 | 
|---|
 | 75 |  Q
 | 
|---|
 | 76 |  ;
 | 
|---|
 | 77 | DASH() ; Write dashed line.
 | 
|---|
 | 78 |  Q $TR($J("",79)," ","=")
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 | INSDIS(X) ; Display Insurance Company name and address.
 | 
|---|
 | 81 |  ;  Input:  X   --   .11 node of ins company entry in file #36
 | 
|---|
 | 82 |  W:$P(X,"^")]"" !?20,$P(X,"^")
 | 
|---|
 | 83 |  W:$P(X,"^",2)]"" !?20,$P(X,"^",2)
 | 
|---|
 | 84 |  W:$P(X,"^",3)]"" !?20,$P(X,"^",3)
 | 
|---|
 | 85 |  W:$P(X,"^")]""!($P(X,"^",2)]"")!($P(X,"^",3)]"") !?20
 | 
|---|
 | 86 |  W $P(X,"^",4) W:$P(X,"^",4)]""&($P(X,"^",5)]"") ", "
 | 
|---|
 | 87 |  W $P($G(^DIC(5,+$P(X,"^",5),0)),"^")
 | 
|---|
 | 88 |  W:$P(X,"^",6)]""&($P(X,"^",4)]""!($P(X,"^",5)]"")) "   "
 | 
|---|
 | 89 |  W $P(X,"^",6)
 | 
|---|
 | 90 |  Q
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 | START(X1,X2) ; Return the Start Date for the search, less one day.
 | 
|---|
 | 93 |  N X,%H D C^%DTC
 | 
|---|
 | 94 |  Q X
 | 
|---|
 | 95 |  ;
 | 
|---|
 | 96 | INACT(CN) ; Determine the repointed-to company for inactivated companies.
 | 
|---|
 | 97 |  ;  Input:  CN  --  Pointer to the ins company in file #36
 | 
|---|
 | 98 |  ; Output:  The repointed-to company, if inactivated (or the same)
 | 
|---|
 | 99 |  N X,Y,Z S X=+$G(CN)
 | 
|---|
 | 100 |  F  S Y=$G(^DIC(36,X,0)) Q:'$P(Y,"^",5)!('$P(Y,"^",16))!($P(Y,"^",16)=X)!($D(Z(+$P(Y,"^",16))))  S X=$P(Y,"^",16),Z(X)=""
 | 
|---|
 | 101 |  Q X
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 | DEL ; Delete "REPOINT PATIENTS TO" field
 | 
|---|
 | 104 |  N C1,C2,DA,DIR
 | 
|---|
 | 105 |  W !,"The routine will delete the REPOINT PATIENTS TO field of the entry"
 | 
|---|
 | 106 |  W !,"in the INSURANCE COMPANY file (#36) if the field entry is pointing"
 | 
|---|
 | 107 |  W !,"back to itself (same IEN).",!
 | 
|---|
 | 108 |  S DIR(0)="YO",DIR("A")="Are you sure you want to do this",DIR("B")="NO" D ^DIR Q:+Y=0  W !!,"A dot (.) will appear for every 50 records processed.",!
 | 
|---|
 | 109 |  S (C1,C2,DA)=0 F  S DA=$O(^DIC(36,DA)) Q:+DA=0  I $P($G(^DIC(36,DA,0)),U,16)=DA S $P(^DIC(36,DA,0),U,16)="",C1=C1+1,C2=C2+1 I C1=50 W "." S C1=0
 | 
|---|
 | 110 |  W !,*7,"Done...",C2," records changed." Q
 | 
|---|