| [613] | 1 | FBAAV0 ;AISC/GRR-ELECTRONICALLY TRANSMIT FEE DATA ;11 Apr 2006  2:51 PM
 | 
|---|
 | 2 |  ;;3.5;FEE BASIS;**3,4,55,89,98**;JAN 30, 1995;Build 54
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  K ^TMP($J,"FBAABATCH"),^TMP($J,"FBVADAT") D DT^DICRW
 | 
|---|
 | 5 |  I '$D(^FBAA(161.7,"AC","S")),'$D(^FBAA(161.7,"AC","R")),'$D(^FBAA(161.25,"AE")),$S('$D(^FBAA(161.26,"AC","P")):1,$O(^FBAA(161.26,"AC","P",0))'>0:1,1:0) W !,*7,"There are no transactions requiring transmission",*7 Q
 | 
|---|
 | 6 |  W !!,"This option will transmit all Batches and MRA's ready to be transmitted",!,"to Austin"
 | 
|---|
 | 7 | RD W !! S DIR(0)="Y",DIR("A")="Are you sure you want to continue",DIR("B")="No" D ^DIR K DIR G END:'Y
 | 
|---|
 | 8 |  L +^FBAA(161.7,"AC"):0 G:'$T LOCK^FBAAUTL1
 | 
|---|
 | 9 |  W !!,"The following Batches will be transmitted: " F FBSTAT="S","R" F J=0:0 S J=$O(^FBAA(161.7,"AC",FBSTAT,J)) Q:J'>0  S FBATCH=$G(^FBAA(161.7,J,0)) D
 | 
|---|
 | 10 |  .Q:'+FBATCH
 | 
|---|
 | 11 |  .I (FBSTAT="S"&($P(FBATCH,U,15)="Y"))!(+$P(FBATCH,U,9)) S ^TMP($J,"FBAABATCH",J)="" W !,+FBATCH
 | 
|---|
 | 12 | RTRAN ;Entry from Re-transmit MRA routine
 | 
|---|
 | 13 |  D ADDRESS^FBAAV01 G END:VATERR K VAT
 | 
|---|
 | 14 |  D WAIT^DICD,STATION^FBAAUTL,HD^FBAAUTL I $D(FB("ERROR")) G END
 | 
|---|
 | 15 |  S TOTSTR=0,$P(PAD," ",200)=" "
 | 
|---|
 | 16 |  D ^FBAAV1:$D(^FBAA(161.25,"AE"))
 | 
|---|
 | 17 |  D ^FBAAV4:$D(^FBAA(161.26,"AC","P"))
 | 
|---|
 | 18 |  F J=0:0 S J=$O(^TMP($J,"FBAABATCH",J)) Q:J'>0  I $D(^FBAA(161.7,J,0)) S Y(0)=^(0) D SET1,DET:FBAABT="B3",DETP^FBAAV2:FBAABT="B5",DETT^FBAAV3:FBAABT="B2",^FBAAV5:FBAABT="B9"
 | 
|---|
 | 19 | END L -^FBAA(161.7,"AC") D KILL^FBAAV1 Q
 | 
|---|
 | 20 | SET1 ; build the payment batch header string (used by all four formats)
 | 
|---|
 | 21 |  S FBAABN=$P(Y(0),"^",1),FBAABN=$E("00000",$L(FBAABN)+1,5)_FBAABN
 | 
|---|
 | 22 |  S FBAAON=$E($P(Y(0),"^",2),3,6)
 | 
|---|
 | 23 |  S FBAACD=$$AUSDT^FBAAV3(DT)
 | 
|---|
 | 24 |  S FBAACP=$E($P(Y(0),"^",2),1,2)
 | 
|---|
 | 25 |  S FBAABT=$P(Y(0),"^",3)
 | 
|---|
 | 26 |  S FBAAAP=$$AUSAMT^FBAAV3($P(Y(0),"^",9),10)
 | 
|---|
 | 27 |  S FBSTAT=$P(^FBAA(161.7,J,"ST"),"^")
 | 
|---|
 | 28 |  S FBCHB=$P(Y(0),"^",15)
 | 
|---|
 | 29 |  S FBEXMPT=$P(Y(0),"^",18)
 | 
|---|
 | 30 |  S X=$$SUB^FBAAUTL5(+$P(Y(0),U,8)_"-"_$P(Y(0),U,2))
 | 
|---|
 | 31 |  S FBAASN=$$LJ^XLFSTR($S(X]"":X,1:FBAASN),6," ")
 | 
|---|
 | 32 |  I FBSTAT="R"!(FBSTAT="S"&(FBCHB'["Y"))!(FBSTAT="S"&($G(FBEXMPT)="Y")) S FBSTR=FBHD_$S(FBAABT="B2":"BT",1:FBAABT)_FBAACD_FBAASN_FBAABN_"  "_FBAAAP_FBAACP_" $"
 | 
|---|
 | 33 |  Q
 | 
|---|
 | 34 | DET ;entry point to process B3 (outpatient/ancillary) batch
 | 
|---|
 | 35 |  ; input (partial list)
 | 
|---|
 | 36 |  ;   J      - Batch IEN in file 161.7
 | 
|---|
 | 37 |  ;   FBAAON - last 4 of obligation number
 | 
|---|
 | 38 |  ;   FBAASN - station number (formatted)
 | 
|---|
 | 39 |  S FBTXT=0
 | 
|---|
 | 40 |  D CKB3V^FBAAV01 I $G(FBERR) K FBERR Q
 | 
|---|
 | 41 |  F K=0:0 S K=$O(^FBAAC("AC",J,K)) Q:K'>0  F L=0:0 S L=$O(^FBAAC("AC",J,K,L)) Q:L'>0  F M=0:0 S M=$O(^FBAAC("AC",J,K,L,M)) Q:M'>0  F N=0:0 S N=$O(^FBAAC("AC",J,K,L,M,N)) Q:N'>0  S Y(0)=$G(^FBAAC(K,1,L,1,M,1,N,0)) I Y(0)]"",+$P(Y(0),U,3) D
 | 
|---|
 | 42 |  .N FBDTSR1,FBPICN
 | 
|---|
 | 43 |  .S FBDTSR1=+$G(^FBAAC(K,1,L,1,M,0))
 | 
|---|
 | 44 |  .S FBPICN=K_U_L_U_M_U_N
 | 
|---|
 | 45 |  .S FBY=$G(^FBAAC(K,1,L,1,M,1,N,2))
 | 
|---|
 | 46 |  .I 'FBTXT S FBTXT=1 D NEWMSG^FBAAV01,STORE^FBAAV01,UPD
 | 
|---|
 | 47 |  .D GOT
 | 
|---|
 | 48 |  ;
 | 
|---|
 | 49 |  D:FBTXT XMIT^FBAAV01
 | 
|---|
 | 50 |  Q
 | 
|---|
 | 51 |  ;
 | 
|---|
 | 52 | GOT ; process a B3 line item
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 |  N DFN,FBADJ,FBADJA1,FBADJA2,FBADJR1,FBADJR2,FBADMIT,FBAUTHF,FBIENS
 | 
|---|
 | 55 |  N FBMOD1,FBMOD2,FBMOD3,FBMOD4,FBPNAMX,FBUNITS,FBX,FBNPI
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  S FBIENS=N_","_M_","_L_","_K_","
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 |  ; get CPT modifiers
 | 
|---|
 | 60 |  D
 | 
|---|
 | 61 |  . N FBMODA,FBMODL
 | 
|---|
 | 62 |  . D MODDATA^FBAAUTL4(K,L,M,N)
 | 
|---|
 | 63 |  . S FBMODL=$$MODL^FBAAUTL4("FBMODA","E")
 | 
|---|
 | 64 |  . S FBMOD1=$$RJ^XLFSTR($P(FBMODL,",",1),5," ")
 | 
|---|
 | 65 |  . S FBMOD2=$$RJ^XLFSTR($P(FBMODL,",",2),5," ")
 | 
|---|
 | 66 |  . S FBMOD3=$$RJ^XLFSTR($P(FBMODL,",",3),5," ")
 | 
|---|
 | 67 |  . S FBMOD4=$$RJ^XLFSTR($P(FBMODL,",",4),5," ")
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  S FBPAYT=$P(Y(0),"^",20),FBPAYT=$S(FBPAYT]"":FBPAYT,1:"V")
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  S FBVID=$P($G(^FBAAV(L,0)),U,2)
 | 
|---|
 | 72 |  S FBVID=FBVID_$E(PAD,$L(FBVID)+1,11)
 | 
|---|
 | 73 |  S:FBPAYT="R" FBVID=$E(PAD,1,11)
 | 
|---|
 | 74 |  S FBNPI=$$EN^FBNPILK(L)  ;SET THE NPI TO BE PASSED TO FBAAV01,FBAAV2,FBAAV5
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 |  D POV^FBAAUTL2
 | 
|---|
 | 77 |  S POV=$S(POV']"":"",POV="A":6,POV="B":7,POV="C":8,POV="D":9,POV="E":10,1:POV)
 | 
|---|
 | 78 |  S POV=$S(POV']"":99,$D(^FBAA(161.82,POV,0)):$P(^(0),"^",3),1:99)
 | 
|---|
 | 79 |  S FBPOV=POV
 | 
|---|
 | 80 |  S FBTT=$S(FBTT]"":FBTT,1:1)
 | 
|---|
 | 81 |  S FBCPT=$$CPT^FBAAUTL4($P(Y(0),"^")),FBCPT=$S($L(FBCPT)=5:FBCPT,1:"     ")
 | 
|---|
 | 82 |  S FBPSA=$$PSA^FBAAV5(+$P(Y(0),U,12),+FBAASN) I $L(+FBPSA)'=3 S FBPSA=999
 | 
|---|
 | 83 |  S FBPATT=$P(Y(0),"^",17),FBPATT=$S(FBPATT]"":FBPATT,1:10)
 | 
|---|
 | 84 |  S FBTD=$$AUSDT^FBAAV3(FBDTSR1) ; formatted treatment date
 | 
|---|
 | 85 |  S FBSUSP=$P(Y(0),"^",5),FBSUSP=$S(FBSUSP]"":FBSUSP,1:" ")
 | 
|---|
 | 86 |  S FBSUSP=$S(FBSUSP=" ":" ",$D(^FBAA(161.27,+FBSUSP,0)):$P(^(0),"^"),1:" ")
 | 
|---|
 | 87 |  S FBAP=$$AUSAMT^FBAAV3($P(Y(0),"^",3),8) ; amount paid
 | 
|---|
 | 88 |  S FBPOS=+$P(Y(0),"^",25),FBPOS=$S(FBPOS:$P(^IBE(353.1,FBPOS,0),"^"),1:"  ")
 | 
|---|
 | 89 |  S FBHCFA=+$P(Y(0),"^",26),FBHCFA=$S(FBHCFA:$P(^IBE(353.2,FBHCFA,0),"^"),1:""),FBHCFA=$E(PAD,$L(FBHCFA)+1,2)_FBHCFA
 | 
|---|
 | 90 |  S FBVTOS=+$P(Y(0),"^",24),FBVTOS=$S(FBVTOS:$P(^FBAA(163.85,FBVTOS,0),"^",2),1:"  ")
 | 
|---|
 | 91 |  S FBPD=+$P(Y(0),"^",23),FBPD=$S(FBPD:$$ICD9^FBCSV1(FBPD,$G(FBDTSR1)),1:""),FBPD=$E(PAD,$L(FBPD)+1,7)_FBPD
 | 
|---|
 | 92 |  S FBINVN=$P(Y(0),"^",16)
 | 
|---|
 | 93 |  S FBINVN=$E("000000000",$L(FBINVN)+1,9)_FBINVN
 | 
|---|
 | 94 |  S FBAUTHF=$S($P(Y(0),U,13)["FB583":"U",1:"A") ; auth/unauth flag
 | 
|---|
 | 95 |  S FBDIN=$$AUSDT^FBAAV3($P(Y(0),"^",15)) ; invoice date rec'd
 | 
|---|
 | 96 |  S FBADMIT=$$AUSDT^FBAAV3($$B3ADMIT(FBIENS)) ; formatted admission date
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 |  S VAPA("P")=""
 | 
|---|
 | 99 |  S DFN=K
 | 
|---|
 | 100 |  ; Note - before this point Y(0) was the 0 node of subfile #162.03
 | 
|---|
 | 101 |  ;      - after this point Y(0) will be the 0 node of file #2
 | 
|---|
 | 102 |  S Y(0)=$G(^DPT(+K,0)) Q:Y(0)']""
 | 
|---|
 | 103 |  D PAT^FBAAUTL2
 | 
|---|
 | 104 |  ; obtain date of birth, must follow call to PAT^FBAAUTL2 to overwrite 
 | 
|---|
 | 105 |  ; the value returned from it
 | 
|---|
 | 106 |  S FBDOB=$$AUSDT^FBAAV3($P(Y(0),"^",3)) ; date of birth
 | 
|---|
 | 107 |  D ADD^VADPT
 | 
|---|
 | 108 |  S FBPNAMX=$$HL7NAME^FBAAV4(DFN) ; patient name
 | 
|---|
 | 109 |  S FBUNITS=$P(FBY,U,14)
 | 
|---|
 | 110 |  S:FBUNITS<1 FBUNITS=1
 | 
|---|
 | 111 |  S FBUNITS=$$RJ^XLFSTR(FBUNITS,5,0) ; volume indicator (units paid)
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 |  ; get and format adjustment reason codes and amounts (if any)
 | 
|---|
 | 114 |  D LOADADJ^FBAAFA(FBIENS,.FBADJ)
 | 
|---|
 | 115 |  S FBX=$$ADJL^FBUTL2(.FBADJ)
 | 
|---|
 | 116 |  S FBADJR1=$$RJ^XLFSTR($P(FBX,U,1),5," ")
 | 
|---|
 | 117 |  S FBADJA1=$$AUSAMT^FBAAV3($P(FBX,U,3),9,1)
 | 
|---|
 | 118 |  S FBADJR2=$$RJ^XLFSTR($P(FBX,U,4),5," ")
 | 
|---|
 | 119 |  S FBADJA2=$$AUSAMT^FBAAV3($P(FBX,U,6),9,1)
 | 
|---|
 | 120 |  K FBADJ,FBX
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  S FBST=$S($P(VAPA(5),"^")="":"  ",$D(^DIC(5,$P(VAPA(5),"^"),0)):$P(^(0),"^",2),1:"  ")
 | 
|---|
 | 123 |  S:$L(FBST)'=2 FBST=$E(PAD,$L(FBST)+1,2)_FBST
 | 
|---|
 | 124 |  S FBCTY=$S($P(VAPA(7),"^",1)="":"   ",FBST="  ":"   ",$D(^DIC(5,$P(VAPA(5),"^"),1,$P(VAPA(7),"^"),0)):$P(^(0),"^",3),1:"   ")
 | 
|---|
 | 125 |  I $L(FBCTY)'=3 S FBCTY=$E("000",$L(FBCTY)+1,3)_FBCTY
 | 
|---|
 | 126 |  S FBZIP=$S('+$G(VAPA(11)):VAPA(6),+VAPA(11):$P(VAPA(11),U),1:VAPA(6)),FBZIP=$TR(FBZIP,"-","")_$E("000000000",$L(FBZIP)+1,9)
 | 
|---|
 | 127 |  D STRING^FBAAV01
 | 
|---|
 | 128 |  Q
 | 
|---|
 | 129 |  ;
 | 
|---|
 | 130 | UPD ; update the batch file
 | 
|---|
 | 131 |  N Y
 | 
|---|
 | 132 |  S DA=J,(DIC,DIE)="^FBAA(161.7,"
 | 
|---|
 | 133 |  S DR="11////^S X=""T"";12////^S X=DT"
 | 
|---|
 | 134 |  D ^DIE
 | 
|---|
 | 135 |  Q
 | 
|---|
 | 136 |  ;
 | 
|---|
 | 137 | STORE D STORE^FBAAV01 Q
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 | B3ADMIT(FBIENS) ; Determine Admission Date for a B3 payment line item
 | 
|---|
 | 140 |  ; input
 | 
|---|
 | 141 |  ;   FBIENS - IENS (FileMan format) for subfile 162.03 entry
 | 
|---|
 | 142 |  ; returns admission date in internal FileMan format or null value
 | 
|---|
 | 143 |  ;
 | 
|---|
 | 144 |  N FB7078,FBRET
 | 
|---|
 | 145 |  S FBRET=""
 | 
|---|
 | 146 |  S FB7078=$$GET1^DIQ(162.03,FBIENS,27,"I") ; associated 7078/583
 | 
|---|
 | 147 |  ; (the unauthorized ancillary claims will have the treatment date
 | 
|---|
 | 148 |  ;  instead of the inpatient admission date so nothing is sent to
 | 
|---|
 | 149 |  ;  Austin for them)
 | 
|---|
 | 150 |  ;
 | 
|---|
 | 151 |  ; if line items points to a 7078 authorization then return a date
 | 
|---|
 | 152 |  I $P(FB7078,";",2)="FB7078(" D
 | 
|---|
 | 153 |  . N FBY
 | 
|---|
 | 154 |  . S FBY=$G(^FB7078(+FB7078,0))
 | 
|---|
 | 155 |  . ; if fee program is civil hospital then return 7078 date of admission
 | 
|---|
 | 156 |  . I $P(FBY,U,11)=6 S FBRET=$P(FBY,U,15)
 | 
|---|
 | 157 |  . ; if fee program is CNH then return 7078 authorized from date
 | 
|---|
 | 158 |  . I $P(FBY,U,11)=7 S FBRET=$P(FBY,U,4)
 | 
|---|
 | 159 |  ;
 | 
|---|
 | 160 |  Q FBRET
 | 
|---|