Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBOTR2

IBOTR2.m

Go to the documentation of this file.
  1. IBOTR2 ;ALB/CPM - INSURANCE PAYMENT TREND REPORT - COMPILATION ; 5-JUN-91
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;
  1. ;MAP TO DGCROTR2
  1. ;
  1. ;***
  1. ;S XRTL=$ZU(0),XRTN="IBOTR-2" D T0^%ZOSV ;start rt clock
  1. K ^TMP($J) S IBQUIT=0
  1. S IBDA="" F IBCNT=1:1 S IBDA=$O(^DGCR(399,"AD",IBRT,IBDA)) Q:'IBDA D COMP I IBCNT#100=0 S IBQUIT=$$STOP^IBOUTL("Trend Report") Q:IBQUIT
  1. D:'IBQUIT ^IBOTR3 ; Write the output report.
  1. ;***
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOTR2" D T1^%ZOSV ;stop rt clock
  1. I $D(ZTQUEUED) S ZTREQ="@" Q
  1. K IB,IBAO,IBAP,IBCNT,IBDA,DFN,IBBC,DIC,DA,DR,DIQ,IBDP,IBDBC,IBSCF,IBSCT,IBQUIT
  1. D ^%ZISC Q
  1. ;
  1. ;
  1. COMP ; Compile Bill-Accounts/Receivable records for report.
  1. Q:'$D(^DGCR(399,IBDA,0)) S IBD=^(0),IBBN=$P(IBD,"^"),DFN=+$P(IBD,"^",2),IBBC=$P(IBD,"^",5) S:IBBN="" IBBN="NULL"
  1. Q:IBBRT="O"&("12"[IBBC) Q:IBBRT="I"&("34"[IBBC)
  1. S IBDBC=$$CLO^PRCAFN(IBDA) Q:IBARST="O"&(IBDBC>0)!(IBARST="C"&(IBDBC<0))
  1. S:IBDBC>0 IBBN=IBBN_" *" S:IBDBC'>0 IBDBC=DT
  1. I $D(IBBRN),IBBRN="S" S IBBRTY=$S("12"[IBBC:"I",1:"O")
  1. ;
  1. ; - perform edits for Insurance company
  1. S IBD=$P($G(^DGCR(399,IBDA,"M")),"^") Q:IBICF'="@"&(IBD="")
  1. I $D(IBIC) Q:IBIC="ALL"&(IBD="") Q:IBIC="NULL"&(IBD]"")
  1. S IBINS=$P($G(^DIC(36,+IBD,0)),"^")
  1. I IBINS="" S IBINS="UNKNOWN" G CANC
  1. I $G(IBIC)="ALL" G CANC
  1. I IBICF="@"&(IBICL="") G CANC
  1. Q:IBICF]IBINS!(IBINS]IBICL)
  1. ;
  1. ; - only keep cancelled bills if 'Bill Cancelled?' field is selected
  1. CANC S IBINS=IBINS_"@@"_IBD
  1. Q:'$D(^DGCR(399,IBDA,"S")) S IBD=^("S")
  1. I $G(IBAF)'=16 Q:$P(IBD,"^",16) ; Bill has been cancelled
  1. ;
  1. ; - perform Printed/Treatment date edits
  1. S IBDP=$P(IBD,"^",12)
  1. I IBDF=1 Q:IBDP<IBBDT!(IBDP>IBEDT) ; Date printed is out of range
  1. S IBD=$G(^DGCR(399,IBDA,"U")),IBSCF=$P(IBD,"^"),IBSCT=$P(IBD,"^",2)
  1. I IBDF=2 Q:IBSCT<IBBDT!(IBSCF>IBEDT) ; Treatment dates out of range
  1. I '$D(IBAF) G BUILD
  1. ;
  1. ; - find the selected field value and compare to selection parameters
  1. K IB S DIC=399,DA=IBDA,DR=IBAF,DIQ="IB" S:IBAFD DIQ(0)="I"
  1. D EN^DIQ1 K DIQ
  1. S:IBAFD IB(399,IBDA,IBAF)=IB(399,IBDA,IBAF,"I")
  1. S IB=$G(IB(399,IBDA,IBAF))
  1. Q:IBAFF'="@"&(IB="")
  1. I $D(IBAFZ) Q:IBAFZ="ALL"&(IB="") Q:IBAFZ="NULL"&(IB]"")
  1. I IB="" G BUILD
  1. I $G(IBAFZ)="ALL" G BUILD
  1. I IBAFF="@",IBAFL="" G BUILD
  1. I +IBAFF=IBAFF,+IBAFL=IBAFL Q:IB<IBAFF!(IB>IBAFL)
  1. E Q:IBAFF]IB!(IB]IBAFL)
  1. ;
  1. ; - retrieve A/R data and build sort global.
  1. BUILD S IBAO=$$ORI^PRCAFN(IBDA) S:IBAO<0 IBAO=0
  1. S IBAP=$$TPR^PRCAFN(IBDA) S:IBAP<0 IBAP=0
  1. S ^TMP($J,"IBOTR",IBBRTY,IBINS,$$NAMAGE(DFN)_"@@"_IBBN)="^"_IBSCF_"^"_IBSCT_"^"_IBDP_"^"_IBDBC_"^"_IBAO_"^"_IBAP
  1. Q
  1. ;
  1. NAMAGE(DFN) ; Return patient name and age.
  1. ; Input: DFN
  1. ; Output: Pt name (1st 18 chars)_"("_Pt Age_")"
  1. N DPT0,X,X1,X2
  1. S DPT0=$G(^DPT(DFN,0)),X2=$P(DPT0,"^",3)
  1. I 'X2 S X="UNK"
  1. E S X1=DT D ^%DTC S X=X\365.25
  1. Q $E($P(DPT0,"^"),1,18)_" ("_X_")"