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

IBCONS1.m

Go to the documentation of this file.
  1. IBCONS1 ;ALB/AAS - NSC PATIENTS W/ INS BACKGROUND PRINTS ; 7 JUN 90
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;
  1. ;MAP TO DGCRONS1
  1. ;
  1. EN ; Inpatient Discharge entry to que background once weekly
  1. S IBINPT=2,IBSUB="AMV3" G QUEUE
  1. ;
  1. EN1 ; Inpatient Admission entry to que background once weekly
  1. S IBINPT=1,IBSUB="AMV1" G QUEUE
  1. ;
  1. EN2 ; Outpatient entry to que background once weekly
  1. S IBINPT=0,IBSUB=""
  1. ;
  1. QUEUE ; Set up the background job to run for the previous week
  1. ; o For All Divisions
  1. ; o For Insured veterans with unbilled episodes of care
  1. ; o With the output sorted by Terminal Digit
  1. ;
  1. K ^TMP($J)
  1. S X="T",%DT="" D ^%DT S IBEND=+Y
  1. S X="T-7",%DT="" D ^%DT S IBBEG=+Y K %DT
  1. S (VAUTD,IBSORT,IBTERM,IBRNB)=1
  1. U IO G BEGIN^IBCONSC
  1. ;
  1. ;
  1. LOOP25 ; Print all NSC w/Insurance reports.
  1. S IBQUIT=0,IBFL=1,IBDV=""
  1. F S IBDV=$O(^TMP($J,IBDV)) Q:IBDV="" D LOOP3 Q:IBQUIT
  1. D:'IBQUIT PAUSE
  1. ;
  1. Q K %,%DT,B,I,J,K,L,M,X,X1,X2,Y,DFN,IBCNT,IBIFN,IBBILL,IBDATE,IBFLAG,IBI,IBDT,IBPAGE,IBL,IBHD,IBBEG1
  1. K IBBEG,IBEND,IBINPT,IBFLAG,IBNAME,IBAPPT,IBDC,IBDAT,IBDFN,POP,^TMP($J)
  1. ;I '$D(ZTQUEUED) D ^%ZISC
  1. Q
  1. ;
  1. ;
  1. LOOP3 ; Loop through billed, unbilled, or both types of episodes of care.
  1. F IBBILL=$S(IBSORT<3:IBSORT,1:1):1:$S(IBSORT<3:IBSORT,1:2) S IBNAME="",IBPAGE=0 K IBFLAG D HEAD Q:IBQUIT D LOOP31 Q:IBQUIT
  1. Q
  1. ;
  1. LOOP31 ; Loop through each name or terminal digit (and associated DFN).
  1. F S IBNAME=$O(^TMP($J,IBDV,IBBILL,IBNAME)) D Q:IBNAME=""!(IBQUIT)
  1. . I IBNAME="",'$D(IBFLAG) W !!,"No matches found.",!
  1. . Q:IBNAME=""
  1. . S DFN=0 F S DFN=$O(^TMP($J,IBDV,IBBILL,IBNAME,DFN)) Q:'DFN D LOOP4 Q:IBQUIT W !
  1. Q
  1. ;
  1. LOOP4 ; Loop through each episode of care for a patient.
  1. S IBDAT="" F I=0:0 S IBDAT=$O(^TMP($J,IBDV,IBBILL,IBNAME,DFN,IBDAT)) Q:IBDAT=""!(IBQUIT) D PRINT I $Y>$S($D(IOSL):(IOSL-6),1:6) W ! D HEAD Q:IBQUIT
  1. Q
  1. ;
  1. PRINT ; Print each detail line.
  1. I '$G(IBRNB),$D(^TMP($J,IBDV,IBBILL,IBNAME,DFN,IBDAT,2)) Q ; if reason not billable, and don't print if not billable quit
  1. S IBFLAG=1 D PID^VADPT6
  1. W !,VA("BID"),?6,$E($P(^DPT(DFN,0),"^"),1,20),?28,VA("PID"),?42,$E($P($G(^DIC(8,+$G(^(.36)),0)),"^",6),1,16) K VA,VAERR
  1. S Y=IBDAT X ^DD("DD") W ?60,Y
  1. ;
  1. ; -- print insurance, use ibcns1 calls
  1. S X=$$INSP(DFN,IBDAT) W ?82,X
  1. ;
  1. ;S IBCNT=0 F II=0:0 S II=$O(^DPT(DFN,.312,II)) Q:'II S IBCNT=IBCNT+1,X=+^(II,0) D
  1. ;. I $D(^DIC(36,X,0)) W:IBCNT=2!(IBCNT=3) ", " W:IBCNT<4 $E($P(^(0),"^"),1,14) W:IBCNT=4 " " W:IBCNT>3 "*"
  1. ;
  1. ; -- print reason not billable
  1. I $G(^TMP($J,IBDV,IBBILL,IBNAME,DFN,IBDAT,2))]"" W ?115,$E(^(2),1,16)
  1. ;
  1. S X=$G(^TMP($J,IBDV,IBBILL,IBNAME,DFN,IBDAT,1))
  1. I X]"" W !?10,$P(X,"^") I $P(X,"^",2)]"" W " with " F IBDC=2:1 Q:$P(X,"^",IBDC)="" W $P(X,"^",IBDC),", "
  1. S X=^TMP($J,IBDV,IBBILL,IBNAME,DFN,IBDAT) Q:'$L(X) F K=1:1 S IBIFN=$P(X,"^",K) Q:IBIFN="" D PRINT1
  1. Q
  1. ;
  1. PRINT1 ; If an episode of care has been billed, display billing information.
  1. D GVAR^IBCBB
  1. W !?10,$P(^DGCR(399,IBIFN,0),"^"),?20,$P($G(^DGCR(399.3,+IBAT,0)),"^",4),"-",$S(IBCL<3:"INPT",IBCL>2:"OUTP",1:"")
  1. W ?37,"From: ",$E(IBFDT,4,5)_"/"_$E(IBFDT,6,7)_"/"_$E(IBFDT,2,3)
  1. W ?55,"To: ",$E(IBTDT,4,5)_"/"_$E(IBTDT,6,7)_"/"_$E(IBTDT,2,3)
  1. W ?78,"Debtor: "
  1. I IBWHO="i",$D(^DIC(36,+IBNDM,0)) W $P(^(0),"^")
  1. I IBWHO="o",$D(^DIC(4,+$P(IBNDM,"^",11),0)) W $P(^(0),"^")
  1. I IBWHO="p" W $P(^DPT(DFN,0),"^")
  1. D END^IBCBB1 Q
  1. ;
  1. I $D(ZTQUEUED),$$S^%ZTLOAD S (ZTSTOP,IBQUIT)=1 Q
  1. D:'IBFL PAUSE Q:IBQUIT S IBFL=0
  1. S IBPAGE=IBPAGE+1
  1. ; -- ibformfd = skip only intial form feed, need ffs for each div.
  1. I $E(IOST,1,2)["C-"!(IBPAGE>1)!($G(IBFORMFD)) W @IOF
  1. S IBFORMFD=1
  1. W IBHD,!,$S(IBBILL=2:"PREVIOUSLY ",1:"UN"),"BILLED PATIENTS for Division ",$P($G(^DG(40.8,IBDV,0)),"^"),?80,"Printed: ",IBDATE,?118,"Page: ",IBPAGE
  1. W !,"PT ID PATIENT",?28,"SSN",?42,"ELIGIBILITY",?60,"DATE OF ",$S(IBINPT=2:"DISCHARGE",1:"CARE"),?82,"INSURANCE COMPANIES"
  1. W:IBRNB ?115,"NOT BILLABLE"
  1. W !,IBL
  1. Q
  1. ;
  1. INSP(DFN,IBDAT) ; -- print ins. company on report logic
  1. N X,IBDD,IBDDINS,IBCNT
  1. S IBCNT=0,IBDDINS=""
  1. I '$G(DFN)!('$G(IBDAT)) G INSPQ
  1. S IBDD="" D ALL^IBCNS1(DFN,"IBDD",1,IBDAT)
  1. S X=0 F S X=$O(IBDD(X)) Q:'X!(IBCNT>2) D
  1. .S IBCNT=IBCNT+1
  1. .I IBCNT>1 S IBDDINS=IBDDINS_","
  1. .S IBDDINS=IBDDINS_$E($P($G(^DIC(36,+$G(IBDD(X,0)),0)),"^"),1,10)
  1. S IBDDINS=$E(IBDDINS,1,30)
  1. I $G(IBDD(0))>3 S IBDDINS=IBDDINS_"*"
  1. INSPQ Q IBDDINS
  1. ;
  1. PAUSE Q:$E(IOST,1,2)'="C-"
  1. F J=$Y:1:(IOSL-5) W !
  1. S DIR(0)="E" D ^DIR K DIR I $D(DIRUT)!($D(DUOUT)) S IBQUIT=1 K DIRUT,DTOUT,DUOUT
  1. Q