1 | ACKQAG04 ;DDC/PJU - Utility for ACKQAG03 - Transmission to DDC;5/16/05
|
---|
2 | ;;3.0;QUASAR AUDIOMETRIC MODULE;**3,12**;4/01/03
|
---|
3 | ;;see descriptions in ACKQAG.TXT
|
---|
4 | START(ACKQA,DFN) ;
|
---|
5 | K ACKQE
|
---|
6 | I '$G(DFN) D G END
|
---|
7 | .S ACKQE="**ERROR** Must have a DFN to run routine RMPFRPC2 "
|
---|
8 | I '$D(^ACK(509850.9,0)) D G END
|
---|
9 | .S ACKQE="**ERROR** QUASAR file 509850.9 (Audiometric Exam Data file)"
|
---|
10 | .S ACKQE=ACKQE_" is not available"
|
---|
11 | I '$D(^ACK(509850.9,"DFN",DFN)) D G END
|
---|
12 | .S ACKQE="**ERROR** patient not in audiogram file"
|
---|
13 | S ACKQDATE="A",ACKQ1IEN=""
|
---|
14 | S1 S ACKQDATE=$O(^ACK(509850.9,"DFN",DFN,ACKQDATE),-1)
|
---|
15 | I 'ACKQDATE D G END
|
---|
16 | .S ACKQE="**ERROR** No current audiograms for patient in file"
|
---|
17 | S ACKQ1IEN=0
|
---|
18 | S2 S ACKQ1IEN=$O(^ACK(509850.9,"DFN",DFN,ACKQDATE,ACKQ1IEN))
|
---|
19 | I 'ACKQ1IEN D G S1
|
---|
20 | .S ACKQE="**ERROR** No data exists for visit on "_$$FMTE^XLFDT(ACKQDATE)
|
---|
21 | ;W !,"Entry number found: ",ACKQ1IEN
|
---|
22 | I '$D(^ACK(509850.9,ACKQ1IEN,0)) D G S1
|
---|
23 | .S ACKQE="**ERROR** Node missing in file for this visit"
|
---|
24 | G EN2
|
---|
25 | EN(ACKQA,ACKQ1IEN,DFN) ;called from ACKQAG03 for data transmission
|
---|
26 | EN2 ;entry from S2 to skip EN
|
---|
27 | K ACKQE N SSN,SD,X,NM,DOB,AGE F I=1:1:35 S ACKQA(I)=""
|
---|
28 | S ACKQA(1)=0,ACKQN=0
|
---|
29 | S S0=$G(^ACK(509850.9,ACKQ1IEN,0))
|
---|
30 | I $P(S0,U,2)'=DFN D G END ;already checked in calling routine
|
---|
31 | .S ACKQE="***URGENT AUDIOGRAM FILE ERROR*** wrong DFN"
|
---|
32 | .S ACKQE=ACKQE_" in Cross Reference or record: "_DFN
|
---|
33 | ;Set up ACKQA(1)
|
---|
34 | S SD=$P(S0,U,1) ;DATE SEEN
|
---|
35 | S AGE=$P(S0,U,5)
|
---|
36 | S ACKQA(1)="BGN"_U_ACKQ1IEN
|
---|
37 | D DEM^VADPT I $G(VAERR) D G END
|
---|
38 | .S ACKQE="***UNABLE TO ACCESS PATIENT DEMOGRAPHICS***"
|
---|
39 | D ELIG^VADPT I $G(VAERR) D G END
|
---|
40 | .S ACKQE="***UNABLE TO ACCESS PATIENT ELIGIBILITY***"
|
---|
41 | S NM=VADM(1),NM=$E(NM,1,30),SSN=$P(VADM(2),U,1),DOB=$P(VADM(3),U,1)
|
---|
42 | S $P(ACKQA(1),U,3)=NM
|
---|
43 | S $P(ACKQA(1),U,4)=SSN ;encrypted in ACKQAG03
|
---|
44 | ;;5th pc is for err msg
|
---|
45 | S $P(ACKQA(1),U,6)=DOB
|
---|
46 | I $P(S0,U,3) D ;audiologist
|
---|
47 | .S Y=$P(S0,U,3),X=$$TITLE^ACKQAG01(Y),X=$E($P(X,U,1),1,30)
|
---|
48 | .S $P(ACKQA(1),U,7)=X ;title
|
---|
49 | I '$P(S0,U,3) S $P(ACKQA(1),U,7)="Unknown"
|
---|
50 | S $P(ACKQA(1),U,8)=$P(S0,U,9) ;dt signed
|
---|
51 | S $P(ACKQA(1),U,9)=SD ;FM exam dt
|
---|
52 | S $P(ACKQA(1),U,10)=$S(VAEL(4):"Y",1:"N") ;vet Y/N
|
---|
53 | S $P(ACKQA(1),U,11)=$P(VAEL(6),U,2) ;DFN Type
|
---|
54 | S $P(ACKQA(1),U,12)=AGE
|
---|
55 | S $P(ACKQA(1),U,13)=$P(S0,U,8) ;;transducer type(.08)
|
---|
56 | S $P(ACKQA(1),U,14)=$P(S0,U,14) ;;claim #(.14)
|
---|
57 | S $P(ACKQA(1),U,15)=$P(S0,U,15) ;;retrans dt(.15)
|
---|
58 | D GETDATA(ACKQ1IEN) ;array of test results
|
---|
59 | END ;
|
---|
60 | S:'$D(ACKQA(1)) ACKQA(1)=0
|
---|
61 | I $G(ACKQE)'="" D D WRTERR
|
---|
62 | .F I=2:1:39 S:$D(ACKQA(I)) ACKQA(I)=""
|
---|
63 | K ACKQE,ACKQDATE,S0,VADM,VAEL,I
|
---|
64 | Q
|
---|
65 | ;
|
---|
66 | GETDATA(ACKQRMI) ;
|
---|
67 | ;;input: entry number in the Audiometic Exam Data file (ACKQRMI)
|
---|
68 | ;;output: set up rest of array ACKQA() subscripts 2-35
|
---|
69 | N P,P1,S0 ;P is the piece of the A nodes,
|
---|
70 | ;P1 is pc of the B nodes, S0 is a node holder
|
---|
71 | N X ;X is the Hz
|
---|
72 | N ACKQN S ACKQN=1 ;counter subscript(ACKQA(1) is filled above)
|
---|
73 | ;subs (2-13) 125-12000 R A & B
|
---|
74 | F P=1:1:12 D ;START R A
|
---|
75 | .S ACKQN=ACKQN+1
|
---|
76 | .S X=$S(P=1:125,P=2:250,P=3:500,P=4:750,P=5:1000,P=6:1500,P=7:2000,1:"")
|
---|
77 | .S:X="" X=$S(P=8:3000,P=9:4000,P=10:6000,P=11:8000,P=12:12000,1:"")
|
---|
78 | .S ACKQA(ACKQN)=X_U_"R"_U_"" ;X^ear^ien^Y
|
---|
79 | .S $P(ACKQA(ACKQN),U,4)=$P($G(^ACK(509850.9,ACKQRMI,10)),U,P) ;1st Y val
|
---|
80 | .S $P(ACKQA(ACKQN),U,5)=$P($G(^ACK(509850.9,ACKQRMI,11)),U,P) ;1st tag(send anyway)
|
---|
81 | .S $P(ACKQA(ACKQN),U,6)=$P($G(^ACK(509850.9,ACKQRMI,50)),U,P) ;1st mask level
|
---|
82 | .S $P(ACKQA(ACKQN),U,12)=$P($G(^ACK(509850.9,ACKQRMI,20)),U,P) ;final val
|
---|
83 | .S $P(ACKQA(ACKQN),U,13)=$P($G(^ACK(509850.9,ACKQRMI,21)),U,P) ;final tag(send anyway)
|
---|
84 | .S $P(ACKQA(ACKQN),U,14)=$P($G(^ACK(509850.9,ACKQRMI,51)),U,P) ;final mask lev
|
---|
85 | .;R B
|
---|
86 | .I X>125,X<7000 D
|
---|
87 | ..S P1=P-1 ;125 not B reading so pc's 1 less
|
---|
88 | ..S $P(ACKQA(ACKQN),U,7)=$P($G(^ACK(509850.9,ACKQRMI,70)),U,P1) ;1st B
|
---|
89 | ..;S $P(ACKQA(ACKQN),U,8)=$P($G(^ACK(509850.9,ACKQRMI,71)),U,P1) ;1st bTAG(send anyway)
|
---|
90 | ..S $P(ACKQA(ACKQN),U,9)=$P($G(^ACK(509850.9,ACKQRMI,90)),U,P1) ;1st mask level
|
---|
91 | ..S $P(ACKQA(ACKQN),U,15)=$P($G(^ACK(509850.9,ACKQRMI,75)),U,P1) ;final B
|
---|
92 | ..;S $P(ACKQA(ACKQN),U,16)=$P($G(^ACK(509850.9,ACKQRMI,76)),U,P1) ;f bTAG(send anyway)
|
---|
93 | ..S $P(ACKQA(ACKQN),U,17)=$P($G(^ACK(509850.9,ACKQRMI,91)),U,P1) ;f B mask
|
---|
94 | .;IAR/CAR AR-DECAY AR-HALFLIFE
|
---|
95 | .S S0=$G(^ACK(509850.9,ACKQRMI,120))
|
---|
96 | .I (X=500) D
|
---|
97 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,4) ;R IAR 500
|
---|
98 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,8) ;R CAR 500
|
---|
99 | ..S $P(ACKQA(ACKQN),U,18)=$P(S0,U,12) ;R AR decay 500
|
---|
100 | ..S $P(ACKQA(ACKQN),U,19)=$P(S0,U,14) ;R AR HL 500
|
---|
101 | .I (X=1000) D
|
---|
102 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,5) ;R IAR 1000
|
---|
103 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,9) ;R CAR 1000
|
---|
104 | ..S $P(ACKQA(ACKQN),U,18)=$P(S0,U,13) ;R AR decay 1000
|
---|
105 | ..S $P(ACKQA(ACKQN),U,19)=$P(S0,U,15) ;R AR HL 1000
|
---|
106 | .I (X=2000) D
|
---|
107 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,6) ;R IAR 2000
|
---|
108 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,10) ;R CAR 2000
|
---|
109 | .I (X=4000) D
|
---|
110 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,7) ;R IAR 4000
|
---|
111 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,11) ;R CAR 4000
|
---|
112 | ;;subs (14-25) 125-12000 L A&B
|
---|
113 | F P=1:1:12 D ;start L A
|
---|
114 | .S ACKQN=ACKQN+1 ;counter sub for array
|
---|
115 | .S X=$S(P=1:125,P=2:250,P=3:500,P=4:750,P=5:1000,P=6:1500,1:"")
|
---|
116 | .S:X="" X=$S(P=7:2000,P=8:3000,P=9:4000,P=10:6000,P=11:8000,1:12000)
|
---|
117 | .S ACKQA(ACKQN)=X_U_"L"_U_"" ; X^ear^IEN^Y
|
---|
118 | .S $P(ACKQA(ACKQN),U,4)=$P($G(^ACK(509850.9,ACKQRMI,30)),U,P) ;1st value
|
---|
119 | .S $P(ACKQA(ACKQN),U,5)=$P($G(^ACK(509850.9,ACKQRMI,31)),U,P) ;1st tag(lv for now)
|
---|
120 | .S $P(ACKQA(ACKQN),U,6)=$P($G(^ACK(509850.9,ACKQRMI,60)),U,P) ;1st mlev
|
---|
121 | .S $P(ACKQA(ACKQN),U,12)=$P($G(^ACK(509850.9,ACKQRMI,40)),U,P) ;final val
|
---|
122 | .S $P(ACKQA(ACKQN),U,13)=$P($G(^ACK(509850.9,ACKQRMI,41)),U,P) ;f tag(lv for now)
|
---|
123 | .S $P(ACKQA(ACKQN),U,14)=$P($G(^ACK(509850.9,ACKQRMI,61)),U,P) ;f mlev
|
---|
124 | .;L ear bone conduction
|
---|
125 | .I X>125,X<7000 D
|
---|
126 | ..S P1=P-1 ;125 not a bone reading so pc's 1 less
|
---|
127 | ..S $P(ACKQA(ACKQN),U,7)=$P($G(^ACK(509850.9,ACKQRMI,80)),U,P1) ;1st val
|
---|
128 | ..S $P(ACKQA(ACKQN),U,8)=$P($G(^ACK(509850.9,ACKQRMI,81)),U,P1) ;1st tag(lv for now)
|
---|
129 | ..S $P(ACKQA(ACKQN),U,9)=$P($G(^ACK(509850.9,ACKQRMI,100)),U,P1) ;1st mlev
|
---|
130 | ..S $P(ACKQA(ACKQN),U,15)=$P($G(^ACK(509850.9,ACKQRMI,85)),U,P1) ;final val
|
---|
131 | ..S $P(ACKQA(ACKQN),U,16)=$P($G(^ACK(509850.9,ACKQRMI,86)),U,P1) ;f tag(lv for now)
|
---|
132 | ..S $P(ACKQA(ACKQN),U,17)=$P($G(^ACK(509850.9,ACKQRMI,101)),U,P1) ;f mlev
|
---|
133 | .; IAR/CAR AR-DECAY AR-HL
|
---|
134 | .S S0=$G(^ACK(509850.9,ACKQRMI,121))
|
---|
135 | .I (X=500) D
|
---|
136 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,4) ;L IAR 500
|
---|
137 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,8) ;L CAR 500
|
---|
138 | ..S $P(ACKQA(ACKQN),U,18)=$P(S0,U,12) ;L AR decay 500
|
---|
139 | ..S $P(ACKQA(ACKQN),U,19)=$P(S0,U,14) ;L AR HL 500
|
---|
140 | .I (X=1000) D
|
---|
141 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,5) ;L IAR 1000
|
---|
142 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,9) ;L CAR 1000
|
---|
143 | ..S $P(ACKQA(ACKQN),U,18)=$P(S0,U,13) ;L AR decay 1000
|
---|
144 | ..S $P(ACKQA(ACKQN),U,19)=$P(S0,U,15) ;L AR HL 1000
|
---|
145 | .I (X=2000) D
|
---|
146 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,6) ;L IAR 2000
|
---|
147 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,10) ;L CAR 2000
|
---|
148 | .I (X=4000) D
|
---|
149 | ..S $P(ACKQA(ACKQN),U,10)=$P(S0,U,7) ;L IAR 4000
|
---|
150 | ..S $P(ACKQA(ACKQN),U,11)=$P(S0,U,11) ;L CAR 4000
|
---|
151 | S ACKQN=ACKQN+1 ;sub(26) R Sp
|
---|
152 | S ACKQA(ACKQN)="WDL^R^"_$G(^ACK(509850.9,ACKQRMI,110))
|
---|
153 | S ACKQN=ACKQN+1 ;subscript(27) L Sp
|
---|
154 | S ACKQA(ACKQN)="WDL^L^"_$G(^ACK(509850.9,ACKQRMI,111))
|
---|
155 | S $P(ACKQA(ACKQN),U,1)="WDL",$P(ACKQA(ACKQN),U,2)="L"
|
---|
156 | S ACKQN=ACKQN+1 ;sub(28) R&L PTA,MCL,UCL,tymp type
|
---|
157 | S ACKQA(ACKQN)="PTA^B^"_$G(^ACK(509850.9,ACKQRMI,1))
|
---|
158 | S S0=$G(^ACK(509850.9,ACKQRMI,120)) D ;add 3 pcs to (28)
|
---|
159 | .S $P(ACKQA(ACKQN),U,15)=$P(S0,U,1) ;middle ear pres R
|
---|
160 | .S $P(ACKQA(ACKQN),U,16)=$P(S0,U,2) ;pk immit 226 R
|
---|
161 | .S $P(ACKQA(ACKQN),U,17)=$P(S0,U,16) ;int test consis R
|
---|
162 | S S0=$G(^ACK(509850.9,ACKQRMI,121)) D ;add 3 more pcs to (28)
|
---|
163 | .S $P(ACKQA(ACKQN),U,18)=$P(S0,U,1) ;middle ear pres L
|
---|
164 | .S $P(ACKQA(ACKQN),U,19)=$P(S0,U,2) ;pk immit 226 L
|
---|
165 | .S $P(ACKQA(ACKQN),U,20)=$P(S0,U,16) ;int tst consis L
|
---|
166 | S ACKQN=ACKQN+1 ;sub(29) R&L SRT,PIPB
|
---|
167 | S ACKQA(ACKQN)="SRT^B^"_$G(^ACK(509850.9,ACKQRMI,115)) ;16+2 pcs
|
---|
168 | S ACKQN=ACKQN+1 ;sub(30) R A retest
|
---|
169 | S ACKQA(ACKQN)="RTSTR^R^"_$G(^ACK(509850.9,ACKQRMI,15)) ;11+2 pcs
|
---|
170 | S ACKQN=ACKQN+1 ;sub(31) L A retest
|
---|
171 | S ACKQA(ACKQN)="RTSTL^L^"_$G(^ACK(509850.9,ACKQRMI,35)) ;11+2 pcs
|
---|
172 | S ACKQN=ACKQN+1 ;sub(32) R B retest
|
---|
173 | S ACKQA(ACKQN)="RTSTRB^R^"_$G(^ACK(509850.9,ACKQRMI,72)) ;9+2 pcs
|
---|
174 | S ACKQN=ACKQN+1 ;sub(33) L B retest
|
---|
175 | S ACKQA(ACKQN)="RTSTLB^L^"_$G(^ACK(509850.9,ACKQRMI,82)) ;9+2 pcs
|
---|
176 | S ACKQN=ACKQN+1 ;sub(34) R AI & word node
|
---|
177 | S ACKQA(ACKQN)="RAI^R^"_$G(^ACK(509850.9,ACKQRMI,120)) ;23+2 pcs
|
---|
178 | S ACKQN=ACKQN+1 ;sub(35) L AI & word node
|
---|
179 | S ACKQA(ACKQN)="LAI^L^"_$G(^ACK(509850.9,ACKQRMI,121)) ;23+2 pcs
|
---|
180 | D COMMTS
|
---|
181 | Q
|
---|
182 | WRTERR ;
|
---|
183 | I $L($G(ACKQE)) D
|
---|
184 | .S $P(ACKQA(1),U,5)=ACKQE
|
---|
185 | Q
|
---|
186 | COMMTS ;add comments to transmit
|
---|
187 | ;INPUT ACKQRMI,ACKQN
|
---|
188 | Q:'$D(^ACK(509850.9,ACKQRMI,122)) Q:'$O(^ACK(509850.9,ACKQRMI,122,0))
|
---|
189 | N C,X S C=0
|
---|
190 | C1 S C=$O(^ACK(509850.9,ACKQRMI,122,C)) Q:'C D
|
---|
191 | .S ACKQN=ACKQN+1,X=$G(^ACK(509850.9,ACKQRMI,122,C,0))
|
---|
192 | .S X=$TR(X,"^","")
|
---|
193 | .S ACKQA(ACKQN)="COM^"_C_U_X
|
---|
194 | G C1
|
---|