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

IBERS3.m

Go to the documentation of this file.
  1. IBERS3 ;ALB/ARH - APPOINTMENT CHECK-OFF SHEET GENERATOR (CONTINUED); 12/6/91
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;gather data continued - dx's
  1. ;first three DXs from patients PTF records (by discharge date) and billing records (by event date) for the last year
  1. ;with a max of 18 (IBPDN), first 3 DX's from the last 6 records in year
  1. ;input: DFN, IBDT
  1. ;
  1. S IBFD="",IBPDN=18
  1. PTFDX ;701 dx's for last year, or at most 3 dx's from last 6 ptf's
  1. S (IBST,IBADT)=(IBDT-10000),IBEND=(IBDT+.99)
  1. ;get last years pft records, store in reverse cronological order by discharge date
  1. F S IBADT=$O(^DGPT("AAD",DFN,IBADT)) Q:IBADT=""!(IBADT>IBEND) S IBPTF="" D
  1. . F S IBPTF=$O(^DGPT("AAD",DFN,IBADT,IBPTF)) Q:IBPTF="" D
  1. .. S IBN=$G(^DGPT(IBPTF,70)) Q:IBN=""!(+IBN>IBEND) S IBG(-IBN,IBPTF)=IBN
  1. G:'$D(IBG) ENDPTF S IBDXP1=10,IBDXP2=16,IBDXP3=17,IBCNT=0
  1. D DX G:'$D(IBD) ENDPTF
  1. D DX1 G:'$D(IBTMP) ENDPTF S IBLBL="Discharge"
  1. D DX2
  1. ENDPTF K IBADT,IBCNT,IBPTF,IBST,IBEND,IBN
  1. ;
  1. BILLDX ;print billing dx's, or at most 3 dx's from last 6 bills
  1. S (IBST,IBEG)=(IBDT-10000),IBEND=(IBDT+.99),IBBN=""
  1. ;get last years billing records, store in reverse cronological order by event date
  1. F S IBBN=$O(^DGCR(399,"C",DFN,IBBN)) Q:IBBN="" D
  1. . S IBEDT=$P($G(^DGCR(399,IBBN,0)),"^",3) Q:(IBEDT>IBEND)!(IBEDT<IBEG)
  1. . S IBN=$G(^DGCR(399,IBBN,"C")) Q:IBN="" S IBG(-IBEDT,IBBN)=IBN
  1. G:'$D(IBG) ENDBILL S IBDXP1=14,IBDXP2=15,IBDXP3=16,IBCNT=0
  1. D DX G:'$D(IBD) ENDBILL
  1. D DX1 G:'$D(IBTMP) ENDBILL S IBLBL="Billing" S IBX="" D ENDLN
  1. D DX2
  1. ENDBILL K IBN,IBCNT,IBST,IBEDT,IBEND,IBEG,IBX,IBBN
  1. ;
  1. END I IBFD S IBX=IBDSH D ENDLN
  1. K IBFD,IBPDN
  1. Q
  1. ;
  1. DX ;get appropriate number of DX codes from choosen records
  1. S IBDDT="" F S IBDDT=$O(IBG(IBDDT)) Q:IBDDT=""!(IBPDN'>IBCNT) D
  1. . S IBX="" F S IBX=$O(IBG(IBDDT,IBX)) Q:IBX=""!(IBPDN'>IBCNT) S IBN=IBG(IBDDT,IBX) D
  1. .. F IBI=IBDXP1,IBDXP2,IBDXP3 S IBDX=$P(IBN,"^",IBI) I IBDX,(IBPDN>IBCNT),'($G(IBR($E(IBDDT,1,7),IBDX))) D
  1. ... S IBCNT=IBCNT+1,IBD(IBDDT,IBCNT)=IBDX_"^"_$S(IBI=10:"*",1:" ") I IBCNT=IBPDN S IBST=-IBDDT
  1. ... S IBR($E(IBDDT,1,7),IBDX)=1
  1. K IBDDT,IBX,IBI,IBDX,IBN,IBR,IBG,IBDXP1,IBDXP2,IBDXP3,IBX
  1. Q
  1. ;
  1. ;format records found that have dx's in past year (from previous steps)
  1. DX1 S IBFD=1,IBDDT="",IBROW=1,IBCOL=3,IBRMAX=(IBCNT\IBCOL)+$S(IBCNT#IBCOL=0:0,1:1)
  1. ;format dx's for printing, 3 columns, descending date
  1. F S IBDDT=$O(IBD(IBDDT)) Q:IBDDT="" S IBX="" F S IBX=$O(IBD(IBDDT,IBX)) Q:IBX="" D
  1. . S IBDX=IBD(IBDDT,IBX),IBDDTE=$$DAT1^IBOUTL(-IBDDT)
  1. . S IBDX=IBDDTE_" "_$P(IBDX,"^",2)_"("_$J($P($G(^ICD9(+IBDX,0)),"^",1),7)_") "_$P($G(^ICD9(+IBDX,0)),"^",3)
  1. . I IBROW>IBRMAX S IBROW=1,IBCOL=IBCOL-1,IBRMAX=(IBCNT\IBCOL)+$S(IBCNT#IBCOL=0:0,1:1)
  1. . S IBTMP(IBROW)=$S($D(IBTMP(IBROW)):IBTMP(IBROW),1:$J("",IB1))_$E(IBDX,1,IB3)_$J("",(IB3-$L(IBDX)))_$J("",IB4)
  1. . S IBROW=IBROW+1,IBCNT=IBCNT-1
  1. K IBDDT,IBROW,IBCOL,IBRMAX,IBX,IBDX,IBD,IBDDTE
  1. Q
  1. ;
  1. ;set results into temp array to be printed on check-off sheet
  1. DX2 S Y=IBST X ^DD("DD") S IBEG=$P(Y,"@",1),Y=IBDT X ^DD("DD") S IBEND=$P(Y,"@",1)
  1. S IBX=IBLBL_" Diagnosis for "_IBEG_" to "_IBEND,IBW=1 D LINE S IBX="" D ENDLN
  1. S IBDX="" F S IBDX=$O(IBTMP(IBDX)) Q:IBDX="" S IBX=$E(IBTMP(IBDX),1,IOM) D ENDLN
  1. K Y,IBEG,IBEND,IBX,IBDX,IBTMP,IBLBL
  1. Q
  1. ;
  1. ;enters a line into the temp file used to had the COS before printing
  1. LINE ;prints 1 (IBW=1) 2 (IBW=2) or three (IBW=3) pieces of data on a formated line
  1. ;use IBW=1 for headers centered on the page: IBX=header text
  1. ;entry at lable ENDLN can be used to insert a line with no additional formating
  1. I IBW=1 S IBT=IB1+(IB2-($L(IBX)/2)),IBX=$J("",IBT)_IBX G ENDLN
  1. S IBL=$S(IBW=2:IB2,1:IB3),IBT=IB4
  1. S IBX=$E(IBX,1,IBL),IBX=$J("",IB1)_IBX_$J("",(IBL-$L(IBX)))
  1. S IBY=$E(IBY,1,IBL),IBX=IBX_$J("",IBT)_IBY_$J("",(IBL-$L(IBY)))
  1. I IBW=3 S IBZ=$E(IBZ,1,IBL),IBX=IBX_$J("",IBT)_IBZ_$J("",(IBL-$L(IBZ)))
  1. ENDLN S IBLC=IBLC+1,^TMP("IBRSP",$J,IBLC)=IBX
  1. K IBT,IBL
  1. Q