1 | FBAAV4 ;AISC/GRR-ELECTRONICALLY TRANSMIT PATIENT MRA'S ;12/16/2003
|
---|
2 | ;;3.5;FEE BASIS;**13,34,37,70**;JAN 30, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;D STATION^FBAAUTL,HD^FBAAUTL Q:$D(FB("ERROR"))
|
---|
5 | S FBTXT=0,ZMCNT=1 ;FBTXT , ZMCNT
|
---|
6 | GO S J=0 F S J=$O(^FBAA(161.26,"AC","P",J)) Q:J'>0 S FB0=$G(^FBAA(161.26,J,0)) I $P(FB0,U) S Y(0)=$G(^DPT($P(FB0,U),0)) I Y(0)]"" S FBTYPE=$S($P(FB0,U,4)]"":$P(FB0,U,4),1:"A"),FBFDC=$P(FB0,U,6),FBMST=$P(FB0,U,7) D
|
---|
7 | .; GETBT-prepare header
|
---|
8 | .; NEWMSG^FBAAV01-get new message number, reset line counter, set subject line
|
---|
9 | .; STORE^FBAAV01- increment line counter and store in ^XMB
|
---|
10 | .; FBLN -line counter; FBFEE- "FEE message" counter; FBOKTX=1 if message pending, 0 otherwise
|
---|
11 | .I 'FBTXT S FBTXT=1 D GETBT,NEWMSG^FBAAV01,STORE^FBAAV01
|
---|
12 | .; prepare and store patient MRA portion (can be more than 1)
|
---|
13 | .D GOT
|
---|
14 | D:+$G(FBOKTX) XMIT^FBAAV01
|
---|
15 | Q
|
---|
16 | ;GETBT - prepare the "header" of the message
|
---|
17 | GETBT D GETNXB^FBAAUTL ;get next batch # in FBBN
|
---|
18 | S FBZBN=$E("00000",$L(FBBN)+1,5)_FBBN,FBSN=FBSN_$E(" ",$L(FBSN)+1,6)
|
---|
19 | S FBSTR=FBHD_"C2"_$E(DT,4,7)_$E(DT,2,3)_FBSN_FBZBN_"$"
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | GOT ;patient MRA portion of the message
|
---|
23 | N FBCCFLG,FBPATICN,FB2NDSTR
|
---|
24 | ; patient info;input:Y(0);output:FBDOB,FBFI,FBFLNAM,FBLNAM,FBMI,FBNAME,FBSEX,FBSSN
|
---|
25 | D PAT^FBAAUTL2
|
---|
26 | S DFN=$P(FB0,U)
|
---|
27 | S FBFLNAM=$$HL7NAME(DFN),FBFI="",FBMI="" ;name (FBFI,FBMI - obsolete)
|
---|
28 | ; demographic info, output:VADM
|
---|
29 | D DEM^VADPT Q:$G(VAERR)
|
---|
30 | S FBBD=$P(VADM(3),"^"),FBBD=$E(FBBD,4,7)_$E(FBBD,2,3) ;DOB
|
---|
31 | S FBBD=$S(FBBD="":" ",1:FBBD),FBSEX=$P(VADM(5),"^"),FBSEX=$S(FBSEX="F":2,1:1)
|
---|
32 | S DOD=$P($P(VADM(6),"^"),".") ;DOD
|
---|
33 | K VADM,VAERR
|
---|
34 | ;S Y(0)=$S($D(^DPT(DFN,.11)):^(.11),1:"") Q:Y(0)']""
|
---|
35 | ;S FBADD=$E($P(Y(0),"^",1),1,21),FBADD=FBADD_$E(PAD,$L(FBADD)+1,21),FBCITY=$E($P(Y(0),"^",4),1,13),FBCITY=FBCITY_$E(PAD,$L(FBCITY)+1,13),FBSTAT=" "
|
---|
36 | ;S STCD=$P(Y(0),"^",5) I STCD]"" S FBSTAT=$S($D(^DIC(5,STCD,0)):$P(^(0),"^",2),1:" ")
|
---|
37 | ;
|
---|
38 | ;address info, output: VAPA()
|
---|
39 | S VAPA("P")="" D ADD^VADPT Q:$G(VAERR)
|
---|
40 | S FBADD=$$LRJ($G(VAPA(1)),35)_$$LRJ($G(VAPA(2)),35)_$$LRJ($G(VAPA(3)),35) ;street address
|
---|
41 | S FBCITY=$$LRJ($G(VAPA(4)),30) ;city
|
---|
42 | S STCD=+VAPA(5) I STCD S FBSTAT=$S($D(^DIC(5,STCD,0)):$P(^(0),"^",2),1:" ") ;state
|
---|
43 | S FBZIP=$S('+$G(VAPA(11)):VAPA(6),+VAPA(11):$P(VAPA(11),"^"),1:VAPA(6)) ;zip
|
---|
44 | ;check for Confidential Communication (CC) address
|
---|
45 | S FBCCFLG=0 I 'VAERR S FBCCFLG=$$SENDCC()
|
---|
46 | S FB2NDSTR=$$SECLINE()
|
---|
47 | S FBZIP=$TR(FBZIP,"-","")_$E("000000000",$L(FBZIP)+1,9)
|
---|
48 | S STCC=+VAPA(7),FBCC="000" I STCC,STCD S FBCC=$S($D(^DIC(5,STCD,1,STCC,0)):$P(^(0),"^",3),1:"000") ;county code
|
---|
49 | K VAPA,VAERR
|
---|
50 | ;
|
---|
51 | ; eligibility, output:VAEL()
|
---|
52 | D ELIG^VADPT
|
---|
53 | S POS=$S(+VAEL(2):+VAEL(2),1:"") ;PERIOD OF SERVICE
|
---|
54 | K VAEL,VAERR
|
---|
55 | S POS=$S(POS="":8,$D(^DIC(21,POS,0)):$P(^(0),"^",3),1:8) ;default: 8 (POST-VIETNAM)
|
---|
56 | S DOD=$S(DOD="":"000000",1:$E(DOD,4,7)_$E(DOD,2,3))
|
---|
57 | ;
|
---|
58 | ; service information
|
---|
59 | D SVC^VADPT
|
---|
60 | S POW=$S(+VASV(4):+VASV(4),1:""),POW=$S(POW="":2,POW=1:1,1:2) ;if prisoner of war
|
---|
61 | ;
|
---|
62 | ; remove all variables defined by VADPT
|
---|
63 | D KVAR^VADPT
|
---|
64 | ;
|
---|
65 | ;using pointer FEE BASIS PATIENT MRA file retrieve info from
|
---|
66 | ;FEE BASIS PATIENT file#161, from its authorization multiple ^FBAAA(DA(1),1,DA
|
---|
67 | S FBAUTH=$P(^FBAA(161.26,J,0),"^",3) Q:FBAUTH']"" Q:'$D(^FBAAA(DFN,1,FBAUTH,0)) S Y(0)=^(0)
|
---|
68 | ;authorisation FROM
|
---|
69 | S FBFR=$P(Y(0),"^")
|
---|
70 | ;authorisation TO
|
---|
71 | S FBTO=$P(Y(0),"^",2)
|
---|
72 | ;PURPOSE OF VISIT
|
---|
73 | S POV=$P(Y(0),"^",7),POV=$S(POV="":"",$D(^FBAA(161.82,POV,0)):$P(^(0),"^",3),1:""),POV=$S(POV]"":POV,1:"05")
|
---|
74 | ;TREATMENT TYPE CODE (SHORT TERM,HOME NURSING,I.D. CARD,STATE HOME)
|
---|
75 | S FBTT=$P(Y(0),"^",13),FBTT=$S(FBTT]"":FBTT,1:1)
|
---|
76 | ;
|
---|
77 | S FBRECT=$S(FBTT=4:"7",FBTT=2:"S",$G(POV)>29&($G(POV)<50):"C",1:2)
|
---|
78 | ;formatting FORM and TO dates
|
---|
79 | S FBFR=$E(FBFR,4,7)_$E(FBFR,2,3),FBTO=$E(FBTO,4,7)_$E(FBTO,2,3)
|
---|
80 | ;flag that the authorization From Date is being changed by this
|
---|
81 | ;master record adjustment (see file #161.26, field #5)
|
---|
82 | I FBTYPE="C" S FBTO=$S(FBFDC=1:" ",1:FBTO)
|
---|
83 | ;
|
---|
84 | I FBTT=2,"^70^71^74^"'[(U_POV_U) S POV=71
|
---|
85 | ;if
|
---|
86 | S ZMCNT=ZMCNT+1 I ZMCNT>100 D GETBT,STORE S ZMCNT=ZMCNT+1
|
---|
87 | ; patch FB*3.5*13 changed format of delete MRAs to include the From Date
|
---|
88 | I FBTYPE="D" D Q
|
---|
89 | . S FBRECT=$S(FBTT=4:"7",FBTT=2:"S",$G(POV)=31:"C",1:2)
|
---|
90 | . S FBSTR=FBRECT_FBTYPE_FBSN_FBSSN_FBFR_"$"
|
---|
91 | . D ZAP
|
---|
92 | I FBTYPE="R" D
|
---|
93 | . S FBRECT=$S(FBTT=4:"7",FBTT=2:"S",$G(POV)=31:"C",1:2)
|
---|
94 | . ; If Re-Instate for a State Home record type then switch to Add
|
---|
95 | . ; because Central FEE does not retain deleted State Home auth.
|
---|
96 | . I FBRECT=7 S FBTYPE="A" Q
|
---|
97 | . ; For all other record types send a Re-Instate followed by a Change
|
---|
98 | . S FBSTR=FBRECT_FBTYPE_FBSN_FBSSN_"$"
|
---|
99 | . D ZAP
|
---|
100 | . S FBTYPE="C"
|
---|
101 | ; construct Add and Change record types
|
---|
102 | S FBTT=$S(FBMST="Y":0,1:FBTT)
|
---|
103 | S FBPATICN=$$ICN(DFN) ;get patient's ICN
|
---|
104 | S FBSTR=FBRECT_FBTYPE_FBSN_FBSSN_FBFI_FBMI_FBFLNAM_FBADD_FBCITY_FBSTAT_FBZIP_FBFR_FBTO_FBCC_FBBD_POV_" "_FBTT_FBSEX_POW_DOD_" "_POS_FBPATICN_"~"
|
---|
105 | ;if no CC address then send only 1st line of Add and Change record
|
---|
106 | I FBCCFLG=0 S FBSTR=FBSTR_"$" D ZAP Q
|
---|
107 | ;save 1st line of Add and Change record
|
---|
108 | D STORE
|
---|
109 | ;create 2nd line for CC address
|
---|
110 | S FBSTR=FB2NDSTR
|
---|
111 | D ZAP
|
---|
112 | Q
|
---|
113 | ;place in XMB for transmission and update FBAA(161.26
|
---|
114 | ZAP D STORE
|
---|
115 | S DA=J,(DIC,DIE)="^FBAA(161.26,",T="T",DR="1///^S X=T;4///^S X=DT" D ^DIE
|
---|
116 | Q
|
---|
117 | SKIP S FBRECT=$S(FBTT=2:"S",1:2),FBSTR=FBRECT_FBTYPE_FBSN_FBSSN_"$" G ZAP
|
---|
118 | STORE I ZMCNT>100 D XMIT^FBAAV01,NEWMSG^FBAAV01 S ZMCNT=1
|
---|
119 | D STORE^FBAAV01
|
---|
120 | Q
|
---|
121 | ;---
|
---|
122 | ;Patient's INTEGRATION CONTROL NUMBER
|
---|
123 | ;to be implemented in future
|
---|
124 | ;meanwhile returns 17 spaces
|
---|
125 | ICN(FBDFN) ;
|
---|
126 | Q $$LRJ("",17)
|
---|
127 | ;---
|
---|
128 | ;adds spaces on right/left or truncates to make return string FBLEN characters long
|
---|
129 | ;FBST- original string
|
---|
130 | ;FBLEN - desired length
|
---|
131 | ;FBCHR -character (default = SPACE)
|
---|
132 | ;FBSIDE - on which side to add characters (default = RIGHT)
|
---|
133 | LRJ(FBST,FBLEN,FBCHR,FBSIDE) ;
|
---|
134 | N Y S $P(Y,$S($L($G(FBCHR)):FBCHR,1:" "),$S(FBLEN-$L(FBST)<0:1,1:FBLEN-$L(FBST)+1))=""
|
---|
135 | Q $E($S($G(FBSIDE)="L":Y_FBST,1:FBST_Y),1,FBLEN)
|
---|
136 | ;---
|
---|
137 | ;parse name components
|
---|
138 | HL7NAME(FBDFN) ;
|
---|
139 | N FBAR,FBNM
|
---|
140 | S FBAR("FILE")=2,FBAR("IENS")=FBDFN,FBAR("FIELD")=.01
|
---|
141 | S FBNM=$$HLNAME^XLFNAME(.FBAR,"L30","|")
|
---|
142 | Q $$LRJ(FBNM,30)
|
---|
143 | ;
|
---|
144 | ;create 2nd line for CC address
|
---|
145 | ;VAPA should be determined
|
---|
146 | SECLINE() ;
|
---|
147 | N FBSTR1
|
---|
148 | S FBSTR1=$$LRJ($G(VAPA(13)),35)_$$LRJ($G(VAPA(14)),35)_$$LRJ($G(VAPA(15)),35)_$$LRJ($G(VAPA(16)),30) ;street address
|
---|
149 | S FBSTR1=FBSTR1_$$LRJ($S(+$G(VAPA(17)):$P($G(^DIC(5,+$G(VAPA(17)),0)),"^",2),1:""),2) ;state
|
---|
150 | S FBSTR1=FBSTR1_$$LRJ($TR($P($G(VAPA(18)),"^",1),"-",""),9,"0") ;zip
|
---|
151 | S FBSTR1=FBSTR1_$$LRJ($E(+$G(VAPA(20)),4,5)_$E(+$G(VAPA(20)),6,7)_$E(+$G(VAPA(20)),2,3),6)
|
---|
152 | S FBSTR1=FBSTR1_$$LRJ($E(+$G(VAPA(21)),4,5)_$E(+$G(VAPA(21)),6,7)_$E(+$G(VAPA(21)),2,3),6)
|
---|
153 | S FBSTR1=FBSTR1_$$LRJ($P($G(^DIC(5,+$G(VAPA(17)),1,+$G(VAPA(19)),0)),"^",3),3,"0","L") ;county code
|
---|
154 | S FBSTR1=FBSTR1_"~$"
|
---|
155 | Q FBSTR1
|
---|
156 | ;------
|
---|
157 | ;SENDCC
|
---|
158 | ;returns 1 if CC address needs to be sent, otherwise - 0
|
---|
159 | ;is called after ADD^VADPT, i.e. VAPA should be defined
|
---|
160 | SENDCC() ;
|
---|
161 | ;if it is currrently active
|
---|
162 | I $$ACTIVECC^FBAACO0() Q 1
|
---|
163 | N X D NOW^%DTC ;set X to TODAY
|
---|
164 | I ($P($G(VAPA(22,3)),"^",3)="Y"),+$G(VAPA(20))>X Q 1
|
---|
165 | Q 0
|
---|
166 | ;
|
---|