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

FBAAV6.m

Go to the documentation of this file.
  1. FBAAV6 ;AISC/GRR,WOIFO/SAB - CREATE TRANSACTIONS TO SEND TO PRICER ;9/14/2009
  1. ;;3.5;FEE BASIS;**55,108**;JAN 30, 1995;Build 115
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. S FBFLAG=1,FBTXT=0
  1. S FBSTAT="P",FBJ=J D UPDT^FBAAUTL2 S J=FBJ F K=0:0 S K=$O(^FBAAI("AC",J,K)) Q:K'>0 S Y(0)=$G(^FBAAI(K,0)),Y(5)=$G(^FBAAI(K,5)) I Y(0)]"" D
  1. .I 'FBTXT S FBTXT=1 D NEWMSG^FBAAV01
  1. .D GOT
  1. D:FBTXT XMIT^FBAAV01 K FBFLAG Q
  1. ;
  1. GOT N FBCDCNT,FBCSVDT,FBI,FBLNCNT,FBTL
  1. S FBCSVDT=$$FRDTINV^FBCSV1(K) ; code set version date
  1. S FBPAYT=$P(Y(0),"^",13),FBPAYT=$S(FBPAYT]"":$S(FBPAYT="R":"P",1:FBPAYT),1:"V"),FBVID=$P(Y(0),"^",3),FBVEN=FBVID I FBVID]"" S FBVID=$S($D(^FBAAV(FBVID,0)):$P(^(0),"^",17),1:$E(PAD,1,6))
  1. S:FBVID']"" FBVID=$E(PAD,1,6)
  1. S FB7078=$P(Y(0),"^",5) I FB7078]"" D
  1. .I FB7078["FB7078(",$D(^FB7078(+FB7078,0)) S FBFNY=^FB7078(+FB7078,0),FBFDT=$S($P(FBFNY,"^",15):$P(FBFNY,"^",15),1:$P(FBFNY,"^",4)),FBTDT=$S($P(FBFNY,"^",16):$P(FBFNY,"^",16),1:$P(FBFNY,"^",5))
  1. .I FB7078["FB583(",$D(^FB583(+FB7078,0)) S FBFNY=^FB583(+FB7078,0),FBFDT=$S($P(FBFNY,"^",5)]"":$P(FBFNY,"^",5),1:$P(FBFNY,"^",13)),FBTDT=$S($P(FBFNY,"^",6)]"":$P(FBFNY,"^",6),1:$P(FBFNY,"^",14))
  1. S X1=FBTDT,X2=FBFDT D ^%DTC S FBLOS=$S(X<1:1,1:X),FBFDT=$E(FBFDT,4,7)_($E(FBFDT,1,3)+1700)
  1. S FBTDT=$E(FBTDT,4,7)_($E(FBTDT,1,3)+1700),FBLOS=$E("000",$L(FBLOS)+1,3)_FBLOS,FBRESUB=+$P(Y(0),"^",25)
  1. S:+FBLOS>999 FBLOS="***"
  1. ;S:$L(FBLOS)>3 FBLOS="***" ; >999 not supported, *** to cause reject
  1. S FBDISP=$P(Y(0),"^",21) I FBDISP]"" S FBDISP=$S($D(^FBAA(162.6,FBDISP,0)):$P(^(0),"^",2),1:"00")
  1. S FBDISP=$E("00",$L(FBDISP)+1,2)_FBDISP,FBBILL=$P(Y(0),"^",22)+.00001,FBBILL=$P(FBBILL,".",1)_$E($P(FBBILL,".",2),1,2),FBBILL=$E("000000000",$L(FBBILL)+1,9)_FBBILL
  1. S FBCLAIM=$P(Y(0),"^",8)+.00001,FBCLAIM=$P(FBCLAIM,".",1)_$E($P(FBCLAIM,".",2),1,2),FBCLAIM=$E("000000000",$L(FBCLAIM)+1,9)_FBCLAIM
  1. S FBSTAT=$S(FBVEN']"":"",$D(^FBAAV(FBVEN,0)):$P(^(0),"^",5),1:"")
  1. S FBSTABR=$S(FBSTAT']"":" ",$D(^DIC(5,FBSTAT,0)):$P(^(0),"^",2),1:" "),FBSTABR=$E(" ",$L(FBSTABR)+1,2)_FBSTABR,FBAUTH=""
  1. I $L(FBSTABR)>2 S FBSTABR="**" ; ** to cause reject of invalid state
  1. I FB7078]"" S FBAUTH=$S(FB7078["FB583(":" ",$D(^FB7078(+FB7078,0)):$P(^(0),"^",6),1:" ")
  1. S FBAUTH=$$AUTH(FBAUTH)
  1. S DFN=+$P(Y(0),"^",4),FBMED=$P(Y(0),"^",23),FBMED=$S(FBMED="":"N",1:FBMED),Y(0)=$G(^DPT(DFN,0)) D PAT^FBAAUTL2 S FBLNAM=$E(FBFLNAM,1,12),FBSSN=$E(FBSSN,10)_$E(FBSSN,1,9)_" "
  1. ;
  1. S FBLNCNT=0 ; init invoice line counter
  1. D NEWLN
  1. ; compute total lines needed (2-5)
  1. S FBTL=($$LAST^FBCHEP1(K,"DX")+$$LAST^FBCHEP1(K,"PROC"))\13+2
  1. ; add rest of data for line 1
  1. S FBSTR=FBSTR_FBTL_FBLNAM_FBFI_FBMI_FBSEX_FBDOB_FBLOS
  1. S FBSTR=FBSTR_FBDISP_FBBILL_FBCLAIM_FBAUTH_FBPAYT_FBAACP_FBAAON_"Y"
  1. S FBSTR=FBSTR_FBVID_FBMED_$E(PAD,1,29)_FBTDT_FBSTABR_" "
  1. D STORE
  1. ;
  1. S FBYDX=$G(^FBAAI(K,"DX"))
  1. S FBYPOA=$G(^FBAAI(K,"POA"))
  1. D NEWLN
  1. ; admitting Dx
  1. S FBADMTDX=$P($G(^FBAAI(K,5)),"^",9)
  1. ; NVH Pricer requested sending primary Dx if admit Dx not known
  1. I 'FBADMTDX S FBADMTDX=$P(FBYDX,"^")
  1. S FBCDCNT=1 ; count of codes for line
  1. S FBSTR=FBSTR_$$DX(FBADMTDX,FBCSVDT,"")
  1. ;
  1. ; loop thru Dx
  1. F FBI=1:1:25 Q:$P(FBYDX,"^",FBI)="" D
  1. . S FBCDCNT=FBCDCNT+1
  1. . I FBCDCNT=14 D
  1. . . D STORE
  1. . . D NEWLN
  1. . . S FBCDCNT=1
  1. . S FBSTR=FBSTR_$$DX($P(FBYDX,"^",FBI),FBCSVDT,$P(FBYPOA,"^",FBI))
  1. K FBADMTDX,FBYDX,FBYPOA
  1. ;
  1. ; loop thru Proc
  1. S FBYPROC=$G(^FBAAI(K,"PROC"))
  1. F FBI=1:1:25 Q:$P(FBYPROC,"^",FBI)="" D
  1. . S FBCDCNT=FBCDCNT+1
  1. . I FBCDCNT=14 D
  1. . . D STORE
  1. . . D NEWLN
  1. . . S FBCDCNT=1
  1. . S FBSTR=FBSTR_$$PROC($P(FBYPROC,"^",FBI),FBCSVDT)
  1. K FBYPROC
  1. ;
  1. ; pad remainder of the invoice last line with spaces
  1. S FBSTR=$$LJ^XLFSTR(FBSTR,131," ")
  1. D STORE
  1. Q
  1. ;
  1. AUTH(X) ;Function call to provide the Admitting Regulation.
  1. ;X is equal to the internal entry number of the VA Admitting Reg file
  1. ;User is returned with an alpha dependent on the Admitting Reg chosen
  1. N CFR,FBCFR
  1. S CFR=$P($G(^DIC(43.4,+X,0)),"^",3) I '$G(CFR) Q "A"
  1. S FBCFR=$S(CFR="17.50b(a)(1)(i)":"A",CFR="17.50b(a)(1)(iii)":"B",CFR="17.50b(a)(1)(iv)":"C",CFR="17.50b(a)(3)":"H",CFR="17.50b(a)(4)":"D",CFR="17.50b(a)(5)":"E",CFR="17.50b(a)(6)":"F",CFR="17.50b(a)(8)":"G",1:"")
  1. I FBCFR="" S FBCFR=$S(CFR="17.50b(a)(9)":"I",CFR="17.80(a)(i)":"L",CFR="17.80(a)(iii)":"J",1:"A")
  1. Q FBCFR
  1. ;
  1. NEWLN ; New Line
  1. S FBLNCNT=FBLNCNT+1 ; increment invoice line count
  1. S FBSTR=FBSSN_FBFDT_FBAASN_FBRESUB_FBLNCNT ; data at start of each line
  1. Q
  1. ;
  1. STORE D STORE^FBAAV01
  1. Q
  1. ;
  1. DX(FBDX,FBDATE,FBPOA) ; format diagnosis & POA for NVH Pricer
  1. ; Input
  1. ; FBDX = pointer to file 80 (ICD diagnosis)
  1. ; FBDATE = fileman date
  1. ; FBPOA = (optional) poiner to file 161.94 (present on admission)
  1. ; Returns formatted string of 8 characters
  1. N FBRET,FBX,FBX2
  1. S FBRET=" "
  1. I FBDX D
  1. . S FBX=$$ICD9^FBCSV1(FBDX,FBDATE)
  1. . S:FBX["." FBX=$P(FBX,".",1)_$P(FBX,".",2)
  1. . Q:FBX=""
  1. . S FBX=FBX_$E(" ",$L(FBX)+1,7)
  1. . S FBX2=$S($G(FBPOA):$P($G(^FB(161.94,FBPOA,0)),"^"),1:"")
  1. . S:FBX2="" FBX2=" "
  1. . S FBRET=FBX_FBX2
  1. Q FBRET
  1. ;
  1. PROC(FBPROC,FBDATE) ; format procedure for NVH Pricer
  1. ; Input
  1. ; FBPROC = pointer to file 80.1 (ICD operation/procedure)
  1. ; FBDATE = fileman date
  1. ; Returns formatted string of 8 characters
  1. N FBRET,FBX
  1. S FBRET=" "
  1. I FBPROC D
  1. . S FBX=$$ICD0^FBCSV1(FBPROC,FBDATE)
  1. . S:FBX["." FBX=$P(FBX,".",1)_$P(FBX,".",2)
  1. . Q:FBX=""
  1. . S FBX=FBX_$E(" ",$L(FBX)+1,7)
  1. . S FBRET=FBX_"*"
  1. Q FBRET