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

IBTODD.m

Go to the documentation of this file.
  1. IBTODD ;ALB/AAS - CLAIMS TRACKING DENIED DAYS REPORT ; 27-OCT-93
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;
  1. % I '$D(DT) D DT^DICRW
  1. W !!,"Denied Days Report",!!
  1. ;
  1. S IBSORT="P"
  1. N DIR
  1. S DIR("?")="Answer YES if you only want to print a summary or answer NO if you want a detailed listing plus the summary."
  1. S DIR(0)="Y",DIR("A")="Print Summary Only",DIR("B")="YES" D ^DIR K DIR
  1. I $D(DIRUT) G END
  1. S IBSUM=Y
  1. G:IBSUM DATE
  1. ;
  1. SORT ; -- ask how they want it sorted
  1. W !!
  1. S DIR(0)="SOBA^P:PATIENT;A:ATTENDING;S:SERVICE"
  1. S DIR("A")="Print Report By [P]atient [A]ttending [S]ervice: "
  1. S DIR("B")="P"
  1. S DIR("?",1)="This report may be prepared by either Patient, Attending, or Service."
  1. S DIR("?",2)=""
  1. S DIR("?",3)=""
  1. S DIR("?",4)=""
  1. S DIR("?",5)=""
  1. S DIR("?",6)=""
  1. S DIR("?",7)=""
  1. S DIR("?",8)=" "
  1. S DIR("?")=""
  1. D ^DIR K DIR
  1. S IBSORT=Y I "PAS"'[Y!($D(DIRUT)) G END
  1. ;
  1. DATE ; -- select date range
  1. W ! D DATE^IBOUTL
  1. I IBBDT=""!(IBEDT="") G END
  1. ;
  1. DEV ; -- select device, run option
  1. W !
  1. I 'IBSUM W !!,"You will need a 132 column printer for this report!",!
  1. S %ZIS="QM" D ^%ZIS G:POP END
  1. I $D(IO("Q")) S ZTRTN="DQ^IBTODD",ZTSAVE("IB*")="",ZTDESC="IB - Denied Days Report" D ^%ZTLOAD K IO("Q"),ZTSK D HOME^%ZIS G END
  1. ;
  1. U IO
  1. D DQ G END
  1. Q
  1. ;
  1. END ; -- Clean up
  1. W ! K ^TMP($J,"IBTODD")
  1. I $D(ZTQUEUED) S ZTREQ="@" Q
  1. D ^%ZISC
  1. K I,J,X,X2,Y,DFN,%ZIS,DGPM,VA,IBI,IBJ,IBTRN,IBTRND,IBTRND1,IBPAG,IBHDT,IBDISDT,IBETYP,IBQUIT,IBTAG,IBTRC,IBTRCD,IBDEN,IBDAY,IBTALL,IBADM,IBDISCH,IBMAX
  1. K IBAPL,IBBBS,IBBDT,IBC,IBCDT,IBCNT,IBDT,IBD,IBDATA,IBEDT,IBNAM,IBPRIM,IBPROV,IBRATE,IBSECN,IBSERV,IBSORT,IBSPEC,IBSUM,IBSUBT,IBTOTL
  1. D KVAR^VADPT
  1. Q
  1. DQ ; -- entry print from taskman
  1. K ^TMP($J,"IBTODD")
  1. S X=132 X ^%ZOSF("RM")
  1. S IBPAG=0,IBHDT=$$HTE^XLFDT($H,1),IBQUIT=0
  1. S IBDEN=$O(^IBE(356.7,"ACODE",20,0))
  1. D BLD,PRINT^IBTODD1
  1. I $D(ZTQUEUED) G END
  1. Q
  1. ;
  1. BLD ; -- sort through data and build array to print from
  1. ;
  1. S IBTRC=0
  1. F S IBTRC=$O(^IBT(356.2,"ACT",IBDEN,IBTRC)) Q:'IBTRC D
  1. .N IBTRN,IBTRND,IBTRCD,DFN
  1. .S IBTRCD=$G(^IBT(356.2,+IBTRC,0))
  1. .S IBTALL=$P($G(^IBT(356.2,+IBTRC,1)),"^",7)
  1. .I +IBTRCD<IBBDT!(+IBTRCD>(IBEDT+.9)) Q
  1. .S IBTRN=$P(IBTRCD,"^",2),IBTRND=$G(^IBT(356,+IBTRN,0))
  1. .I $P($G(^IBE(356.6,+$P(IBTRND,"^",18),0)),"^",3)'=1 Q ; not an admission type event
  1. .S DFN=$P(IBTRCD,"^",5),IBNAM=$P($G(^DPT(+DFN,0)),"^") Q:IBNAM=""
  1. .S IBD=$$PROV(IBTRC),IBPROV=+IBD,IBSPEC=$P(IBD,"^",2),IBSERV=$P(IBD,"^",3)
  1. .S IBBBS=$$BBS^IBTOSUM1($P(IBD,"^",2))
  1. .S IBRATE=$$RATE^IBTOSUM1(IBBBS,+IBTRCD)
  1. .S IBMAX=$$DAY^IBTUTL3(IBBDT,IBEDT)+1
  1. .S IBCDT=$$CDT^IBTODD1(IBTRN)
  1. .I 'IBTALL S IBDAY=$$DAY^IBTUTL3(+$P(IBTRCD,"^",15),+$P(IBTRCD,"^",16),IBTRN)
  1. .I IBTALL S IBDAY=$$DAY^IBTUTL3(+IBCDT,$S($P(IBCDT,"^",2):$P(IBCDT,"^",2),1:DT),IBTRN)
  1. .I IBDAY>IBMAX S IBDAY=IBMAX
  1. .D SET
  1. Q
  1. ;
  1. SET ; -- set array to print from
  1. ; -- ^tmp($j,"ibtodd",primary sort,secondary sort,ibtrc)=DFN ^ attending ^ treating specialty ^ service ^ billing bed section ^ billing rate^ no. days denied
  1. S IBPRIM=$S(IBSORT="P":IBNAM,IBSORT="A":IBPROV,1:IBSERV)
  1. S IBSECN=$S(IBSORT="P":IBPROV,1:IBNAM)
  1. S:IBPRIM="" IBPRIM="UNKNOWN" S:IBSECN="" IBSECN="UNKNOWN"
  1. S ^TMP($J,"IBTODD",IBPRIM,IBSECN,IBTRC)=DFN_"^"_IBPROV_"^"_IBSPEC_"^"_IBSERV_"^"_IBBBS_"^"_IBRATE_"^"_IBDAY
  1. Q
  1. ;
  1. PROV(IBTRC) ; -- find attending for an inpt. stay
  1. N I,J,X,Y,DFN,DGPM,VA200,VAIN,VAERR
  1. ;
  1. S VA200="",VAINDT=+$G(^IBT(356.2,+IBTRC,0)),DFN=$P($G(^(0)),"^",5) D INP^VADPT
  1. I VAIN(1)="" S VAINDT=+$G(^DGPM(+$P($G(^IBT(356,+$P($G(^IBT(356.2,+IBTRC,0)),"^",2),0)),"^",5),0)) S VAINDT=$P(VAINDT,".")+.24 D INP^VADPT
  1. ;
  1. S X=+VAIN(11)
  1. S DGPM=$P($G(^IBT(356,+$P($G(^IBT(356.2,+IBTRC,0)),"^",2),0)),"^",5)
  1. S Y=$G(^IBT(356.94,+$O(^IBT(356.94,"ATP",+DGPM,1,0)),0))
  1. S:$P(Y,"^",3) X=$P(Y,"^",3)
  1. PROVQ Q X_"^"_+VAIN(3)_"^"_$P($G(^DIC(42.4,+$P($G(^DIC(45.7,+$G(VAIN(3)),0)),"^",2),0)),"^",3)
  1. ;
  1. Q
  1. ;
  1. SUBH(Z) ; -- write sub header for report
  1. ; input z = subheader data
  1. ; requires ibsort = how report is sorted
  1. N X S X=""
  1. Q:IBSORT="P" ; no sub header if sorting by patient
  1. I IBSORT="S" S X="Service: "_$$EXPAND^IBTRE(42.4,3,IBI)
  1. I IBSORT="A" S X="Attending: "_IBI
  1. I $L(X) W !!?15,X
  1. Q
  1. ;
  1. SUBT ; -- write out sub totals, initialize variable
  1. I '$G(IBSUBT) G SUBTQ
  1. W !?64,"------",!,?64,$J(IBSUBT,6)
  1. SUBTQ S IBSUBT=0
  1. Q