| [613] | 1 | FBAAV5 ;AISC/GRR-CREATE TRANSACTIONS FOR CH/CNH PAYMENTS ;11 Apr 2006  2:54 PM | 
|---|
|  | 2 | ;;3.5;FEE BASIS;**3,55,89,98**;JAN 30, 1995;Build 54 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | D CKB9V^FBAAV01 I $G(FBERR) K FBERR Q | 
|---|
|  | 5 | G:FBSTAT="S"&(FBCHB="Y")&($P(Y(0),"^",18)'="Y") ^FBAAV6 | 
|---|
|  | 6 | DETCH S FBTXT=0 | 
|---|
|  | 7 | F K=0:0 S K=$O(^FBAAI("AC",J,K)) Q:K'>0  S Y(0)=$G(^FBAAI(K,0)),Y(2)=$G(^(2)) I Y(0)]"",+$P(Y(0),U,9) D | 
|---|
|  | 8 | .N FBPICN,FBY | 
|---|
|  | 9 | .S FBPICN=K | 
|---|
|  | 10 | .S FBY=$S($P(Y(2),U,2):$P(Y(2),U,2),1:$P(Y(0),U,2))_U_+$P(Y(2),U,3) | 
|---|
|  | 11 | .I 'FBTXT S FBTXT=1 D NEWMSG^FBAAV01,STORE^FBAAV01,UPD^FBAAV0 | 
|---|
|  | 12 | .D GOT | 
|---|
|  | 13 | D:FBTXT XMIT^FBAAV01 Q | 
|---|
|  | 14 | GOT ; process an inpatient invoice | 
|---|
|  | 15 | N DFN,FBADJ,FBADJA,FBADJR,FBADMIT,FBAUTHF,FBCDAYS,FBDISDT,FBDISTY,FBNPI | 
|---|
|  | 16 | N FBDRG,FBIENS,FBPA,FBPNAMX,FBVMID,FBX | 
|---|
|  | 17 | S FBIENS=K_"," | 
|---|
|  | 18 | I '$L($G(FBAASN)) D STATION^FBAAUTL | 
|---|
|  | 19 | S FBPSA=$$PSA(+$P(Y(0),U,20),+$G(FBAASN)) I $L(+FBPSA)'=3 S FBPSA=999 | 
|---|
|  | 20 | S FBPAYT=$P(Y(0),"^",13),FBPAYT=$S(FBPAYT]"":FBPAYT,1:"V") | 
|---|
|  | 21 | S L=$P(Y(0),"^",3) | 
|---|
|  | 22 | S FBVID=$S($D(^FBAAV(L,0)):$P(^(0),"^",2),1:"") | 
|---|
|  | 23 | S FBNPI=$$EN^FBNPILK(L) | 
|---|
|  | 24 | S FBVID=FBVID_$E(PAD,$L(FBVID)+1,11) | 
|---|
|  | 25 | S:FBPAYT="R" FBVID=$E(PAD,1,11) | 
|---|
|  | 26 | S FBVMID=$S($D(^FBAAV(L,0)):$P(^(0),"^",17),1:"") | 
|---|
|  | 27 | S FBVMID=$E(PAD,$L(FBVMID)+1,6)_FBVMID | 
|---|
|  | 28 | S POV=$P(Y(0),"^",18) | 
|---|
|  | 29 | S POV=$S(POV']"":"",POV="A":6,POV="B":7,POV="C":8,POV="D":9,POV="E":10,1:POV),POV=$S(POV']"":40,$D(^FBAA(161.82,POV,0)):$P(^(0),"^",3),1:40),FBPOV=POV | 
|---|
|  | 30 | S FBPATT=$P(Y(0),"^",19),FBPATT=$S(FBPATT]"":FBPATT,1:10) | 
|---|
|  | 31 | S FBFTD=$$AUSDT^FBAAV3($P(Y(0),"^",6)) ; from treatment date | 
|---|
|  | 32 | S FBTTD=$$AUSDT^FBAAV3($P(Y(0),"^",7)) ; to treatment date | 
|---|
|  | 33 | S FBSUSP=$P(Y(0),"^",11),FBSUSP=$S(FBSUSP="":" ",$D(^FBAA(161.27,FBSUSP,0)):$P(^(0),"^",1),1:" ") | 
|---|
|  | 34 | S FBINVN=$P(Y(0),"^",1) | 
|---|
|  | 35 | S FBINVN=$E("000000000",$L(FBINVN)+1,9)_FBINVN | 
|---|
|  | 36 | S FBDIN=$$AUSDT^FBAAV3($P(Y(0),"^",2)) ; invoice date rec'd | 
|---|
|  | 37 | S FBAP=$$AUSAMT^FBAAV3($P(Y(0),"^",9),8) | 
|---|
|  | 38 | S FBAC=$$AUSAMT^FBAAV3($P(Y(0),"^",8),8) | 
|---|
|  | 39 | S FBPA=$$AUSAMT^FBAAV3($P(Y(0),"^",26),8) | 
|---|
|  | 40 | S FBDRG=$P(Y(0),"^",24),FBDRG=$E(PAD,$L(FBDRG)+1,4)_FBDRG | 
|---|
|  | 41 | S FBAUTHF=$S($P(Y(0),U,5)["FB583":"U",1:"A") ; auth/unauth flag | 
|---|
|  | 42 | K FBDX,FBPRC F I=1:1:5 S (FBDX(I),FBPRC(I))="       " | 
|---|
|  | 43 | I $D(^FBAAI(K,"DX")) S Y("DX")=^("DX") F M=1:1:5 Q:$P(Y("DX"),"^",M)=""  S FBDX(M)=$$SPACES^FBCSV1($$ICD9^FBCSV1(+$P(Y("DX"),"^",M),$P($G(Y(0)),"^",6)),7) I $L(FBDX(M))<7 S FBDX(M)=$E(PAD,$L(FBDX(M))+1,7)_FBDX(M) | 
|---|
|  | 44 | I $D(^FBAAI(K,"PROC")) S Y("PROC")=^("PROC") F M=1:1:5 Q:$P(Y("PROC"),"^",M)=""  S FBPRC(M)=$$SPACES^FBCSV1($$ICD0^FBCSV1($P(Y("PROC"),"^",M),$P($G(Y(0)),"^",6)),7) I $L(FBPRC(M))<7 S FBPRC(M)=$E("       ",$L(FBPRC(M))+1,7)_FBPRC(M) | 
|---|
|  | 45 | S DFN=$P(Y(0),"^",4) | 
|---|
|  | 46 | ; Note: Prior to the following line Y(0) = the 0 node of file 162.5 | 
|---|
|  | 47 | ;       After the line Y(0) will equal the 0 node of file #2 | 
|---|
|  | 48 | S VAPA("P")="",Y(0)=$S($D(^DPT(DFN,0)):^(0),1:"") | 
|---|
|  | 49 | D PAT^FBAAUTL2 | 
|---|
|  | 50 | ; obtain date of birth, must follow call to PAT^FBAAUTL2 to overwrite | 
|---|
|  | 51 | ; the value returned from it | 
|---|
|  | 52 | S FBDOB=$$AUSDT^FBAAV3($P(Y(0),"^",3)) | 
|---|
|  | 53 | D ADD^VADPT | 
|---|
|  | 54 | S FBPNAMX=$$HL7NAME^FBAAV4(DFN) ; patient name | 
|---|
|  | 55 | S FBST=$S($P(VAPA(5),"^",1)="":"  ",$D(^DIC(5,$P(VAPA(5),"^",1),0)):$P(^(0),"^",2),1:"  ") | 
|---|
|  | 56 | S:$L(FBST)'=2 FBST=$E(PAD,$L(FBST)+1,2)_FBST | 
|---|
|  | 57 | S FBCTY=$S($P(VAPA(7),"^",1)="":"   ",FBST="  ":"   ",$D(^DIC(5,$P(VAPA(5),"^",1),1,$P(VAPA(7),"^",1),0)):$P(^(0),"^",3),1:"   ") | 
|---|
|  | 58 | I $L(FBCTY)'=3 S FBCTY=$E("000",$L(FBCTY)+1,3)_FBCTY | 
|---|
|  | 59 | 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) | 
|---|
|  | 60 | S FBADMIT=$$AUSDT^FBAAV3($P($$B9ADMIT(FBIENS),".")) ; admission date | 
|---|
|  | 61 | ; get and format discharge date and type | 
|---|
|  | 62 | S FBX=$$B9DISCHG(FBIENS) | 
|---|
|  | 63 | S FBDISDT=$$AUSDT^FBAAV3($P($P(FBX,U),".")) ; discharge date | 
|---|
|  | 64 | S FBDISTY=$$RJ^XLFSTR($P(FBX,U,2),3,0) ; discharge type | 
|---|
|  | 65 | K FBX | 
|---|
|  | 66 | ; get volume indicator (covered days) | 
|---|
|  | 67 | S FBCDAYS=$$RJ^XLFSTR($$GET1^DIQ(162.5,FBIENS,54),5,"0") | 
|---|
|  | 68 | ; obtain and format the adjustment codes and amounts | 
|---|
|  | 69 | ; get and format adjustment reason codes and amounts (if any) | 
|---|
|  | 70 | D LOADADJ^FBCHFA(FBIENS,.FBADJ) | 
|---|
|  | 71 | S FBX=$$ADJL^FBUTL2(.FBADJ) | 
|---|
|  | 72 | S FBADJR=$$RJ^XLFSTR($P(FBX,U,1),5," ") | 
|---|
|  | 73 | S FBADJA=$$AUSAMT^FBAAV3($P(FBX,U,3),9,1) | 
|---|
|  | 74 | K FBADJ,FBX | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | S FBSTR=9_FBAASN_FBSSN_FBPAYT_FBPNAMX_FBVID_"  "_"  "_FBAP_FBAAON_FBSUSP_FBPOV_FBPATT_FBFTD_FBTTD_FBDIN_FBINVN_FBVMID_FBST_FBCTY_FBZIP_FBPSA_$P(FBY,U,2)_$E(PAD,1,14) | 
|---|
|  | 77 | F I=1:1:5 S FBSTR=FBSTR_FBDX(I) | 
|---|
|  | 78 | S FBSTR=FBSTR_$$PADZ^FBAAV01(FBPICN,23)_$$AUSDT^FBAAV3(+FBY)_"~" | 
|---|
|  | 79 | D STORE^FBAAV01 | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | ; build 2nd line | 
|---|
|  | 82 | S FBSTR="" | 
|---|
|  | 83 | F I=1:1:5 S FBSTR=FBSTR_FBPRC(I) | 
|---|
|  | 84 | S FBSTR=FBSTR_"  "_FBAC_"  "_FBPA_FBDRG_" "_FBADMIT_FBDISDT_FBDOB_FBDISTY_FBCDAYS_FBAUTHF_FBADJR_"  "_FBADJA_FBNPI_"~$" | 
|---|
|  | 85 | D STORE^FBAAV01 | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | Q | 
|---|
|  | 88 | ; | 
|---|
|  | 89 | PSA(X,Y) ;call to set default Primary Service Area (PSA) | 
|---|
|  | 90 | ;to send to Austin. | 
|---|
|  | 91 | ;X = pointer to the institution file | 
|---|
|  | 92 | ;Y = default if unable to determine station number in file 4 | 
|---|
|  | 93 | ;call returns the 3 digit station number only | 
|---|
|  | 94 | ;if Y undef return '0' | 
|---|
|  | 95 | I '$G(Y) S Y=0 | 
|---|
|  | 96 | Q $S('X:+Y,$E($P($G(^DIC(4,+X,99)),U),1,3)'?3N:+Y,1:$E($P($G(^(99)),U),1,3)) | 
|---|
|  | 97 | ; | 
|---|
|  | 98 | B9ADMIT(FBIENS) ; Determine Admission Date for a B9 payment | 
|---|
|  | 99 | ; input | 
|---|
|  | 100 | ;   FBIENS | 
|---|
|  | 101 | ; returns admission date in internal FileMan format or null value | 
|---|
|  | 102 | N FB7078,FBRET | 
|---|
|  | 103 | S FBRET="" | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | S FB7078=$$GET1^DIQ(162.5,FBIENS,4,"I") ; associated 7078/583 | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ; if invoice points to a 7078 authorization then get date from the 7078 | 
|---|
|  | 108 | I $P(FB7078,";",2)="FB7078(" D | 
|---|
|  | 109 | . N FBY | 
|---|
|  | 110 | . S FBY=$G(^FB7078(+FB7078,0)) | 
|---|
|  | 111 | . ; if fee program is civil hospital then return 7078 date of admission | 
|---|
|  | 112 | . I $P(FBY,U,11)=6 S FBRET=$P(FBY,U,15) | 
|---|
|  | 113 | . ; if fee program is CNH then return 7078 authorized from date | 
|---|
|  | 114 | . I $P(FBY,U,11)=7 S FBRET=$P(FBY,U,4) | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | ; if invoice points to an unauthorized claim then use the treatment from | 
|---|
|  | 117 | ;   date on the unauthorized claim | 
|---|
|  | 118 | I $P(FB7078,";",2)="FB583(" D | 
|---|
|  | 119 | . N FBY | 
|---|
|  | 120 | . S FBY=$G(^FB583(+FB7078,0)) | 
|---|
|  | 121 | . S FBRET=$P(FBY,U,5) | 
|---|
|  | 122 | ; | 
|---|
|  | 123 | ; return the result | 
|---|
|  | 124 | Q FBRET | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | B9DISCHG(FBIENS) ; Determine Discharge Date and Type for a B9 payment | 
|---|
|  | 127 | ; input | 
|---|
|  | 128 | ;   FBIENS - Invoice IEN (file 162.5) with trailing comma | 
|---|
|  | 129 | ; returns discharge date in internal FileMan format or null value and | 
|---|
|  | 130 | ; discharge type or null value | 
|---|
|  | 131 | N FB7078,FBDISDT,FBDISTY | 
|---|
|  | 132 | S (FBDISDT,FBDISTY)="" | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | S FB7078=$$GET1^DIQ(162.5,FBIENS,4,"I") ; associated 7078/583 | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | ; if invoice points to an unauthorized claim then use the treatment to | 
|---|
|  | 137 | ;   date on the unauthorized claim | 
|---|
|  | 138 | I $P(FB7078,";",2)="FB583(" D | 
|---|
|  | 139 | . N FBY | 
|---|
|  | 140 | . S FBY=$G(^FB583(+FB7078,0)) | 
|---|
|  | 141 | . S FBDISDT=$P(FBY,U,6) | 
|---|
|  | 142 | . S FBDISTY=$$GET1^DIQ(162.5,FBIENS,"6.5:1") ; discharge type | 
|---|
|  | 143 | ; | 
|---|
|  | 144 | ; if invoice points to a 7078 authorization then get date from the 7078 | 
|---|
|  | 145 | I $P(FB7078,";",2)="FB7078(" D | 
|---|
|  | 146 | . N FBY | 
|---|
|  | 147 | . S FBY=$G(^FB7078(+FB7078,0)) | 
|---|
|  | 148 | . ; | 
|---|
|  | 149 | . ; if fee program is civil hospital then return 7078 date of discharge | 
|---|
|  | 150 | . I $P(FBY,U,11)=6 D | 
|---|
|  | 151 | . . S FBDISDT=$P(FBY,U,16) ; discharge date | 
|---|
|  | 152 | . . S FBDISTY=$$GET1^DIQ(162.5,FBIENS,"6.5:1") ; discharge type | 
|---|
|  | 153 | . ; | 
|---|
|  | 154 | . ; if fee program is CNH then get date & type from CNH activity file | 
|---|
|  | 155 | . I $P(FBY,U,11)=7 D | 
|---|
|  | 156 | . . N DFN,FBADMIT,FBADMITR,FBACTA,FBAUTHP,FBDA,FBDTR | 
|---|
|  | 157 | . . S DFN=$P(FBY,U,3) ; patient IEN | 
|---|
|  | 158 | . . S FBADMIT=$P($P(FBY,U,4),".") ; CNH admission date | 
|---|
|  | 159 | . . S FBAUTHP=+$O(^FBAAA("AG",FB7078,DFN,0)) ; authorization 'pointer' | 
|---|
|  | 160 | . . ; | 
|---|
|  | 161 | . . ; find the admission entry in CNH ACTIVITY file | 
|---|
|  | 162 | . . S FBACTA=0 ; init the admission activity ien | 
|---|
|  | 163 | . . S FBADMITR=9999999-FBADMIT ; reverse admission date | 
|---|
|  | 164 | . . S FBDTR=9999999-$$FMADD^XLFDT(FBADMIT,1) ; start loop | 
|---|
|  | 165 | . . F  S FBDTR=$O(^FBAACNH("AF",DFN,FBDTR)) Q:'FBDTR!($P(FBDTR,".")>FBADMITR)  D  Q:FBACTA | 
|---|
|  | 166 | . . . S FBDA=0 F  S FBDA=$O(^FBAACNH("AF",DFN,FBDTR,FBDA)) Q:'FBDA  D | 
|---|
|  | 167 | . . . . S FBY=$G(^FBAACNH(FBDA,0)) | 
|---|
|  | 168 | . . . . I $P(FBY,U,3)="A",$P(FBY,U,10)=FBAUTHP S FBACTA=FBDA ; found it | 
|---|
|  | 169 | . . Q:'FBACTA  ; could not find the admission activity | 
|---|
|  | 170 | . . ; | 
|---|
|  | 171 | . . ; get date from associated discharge (if any) in CNH ACTIVITY file | 
|---|
|  | 172 | . . S FBDA=" " | 
|---|
|  | 173 | . . F  S FBDA=$O(^FBAACNH("AC",FBACTA,FBDA),-1) Q:FBDA'>0  D  Q:FBDISDT | 
|---|
|  | 174 | . . . S FBY=$G(^FBAACNH(FBDA,0)) | 
|---|
|  | 175 | . . . I $P(FBY,U,3)="D" D | 
|---|
|  | 176 | . . . . S FBDISDT=$P($P(FBY,U),".") | 
|---|
|  | 177 | . . . . S FBDISTY=$P(FBY,U,8) | 
|---|
|  | 178 | . . . . I FBDISTY'="" S FBDISTY=FBDISTY+100 | 
|---|
|  | 179 | ; | 
|---|
|  | 180 | ; return the result | 
|---|
|  | 181 | Q FBDISDT_"^"_FBDISTY | 
|---|
|  | 182 | ; | 
|---|
|  | 183 | ;FBAAV5 | 
|---|