1 | ACKQASU5 ;HCIOFO/AG - New/Edit Visit Utilities ; 04/01/99
|
---|
2 | ;;3.0;QUASAR;;Feb 11, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
|
---|
4 | ;
|
---|
5 | SETDIAG(ACKVIEN,ACKICD,ACKDPRIM) ; add ICD9 code to A&SP Clinic Visit
|
---|
6 | ; inputs: ACKVIEN - A&SP visit ien
|
---|
7 | ; ACKICD - ICD9 Diagnosis ien from ICD9 file
|
---|
8 | ; ACKDPRIM - Primary Diag. flag
|
---|
9 | ; outputs: 1^ - everything ok
|
---|
10 | ; 0^xxxxxxx - update failed (reason=xxxxxx)
|
---|
11 | ; NB. This function checks the Stop Code for the visit against the
|
---|
12 | ; valid stop codes for the Diagnosis. It therefore assumes that the
|
---|
13 | ; visit stop code has already been filed.
|
---|
14 | N ACKDIAG,ACKICDN,ACKE,ACKARR,ACKSTAT,ACKVSC,ACKDSC
|
---|
15 | ;
|
---|
16 | S ACKDIAG=""
|
---|
17 | ; find the ICD code on the QUASAR file
|
---|
18 | S ACKICDN=$$FIND1^DIC(509850.1,",","Q",ACKICD,"","","")
|
---|
19 | ;
|
---|
20 | ; if not found then set error message and exit
|
---|
21 | I 'ACKICDN D G SETDIAGX
|
---|
22 | . S ACKDIAG="0^Diagnosis not valid for Audiology and Speech Pathology"
|
---|
23 | ;
|
---|
24 | ; if found, get status (active/inactive)
|
---|
25 | S ACKSTAT=$$GET1^DIQ(509850.1,ACKICDN_",",.06,"I")
|
---|
26 | ;
|
---|
27 | ; if inactive then set error message and exit
|
---|
28 | I ACKSTAT'=1 D G SETDIAGX
|
---|
29 | . S ACKDIAG="0^Diagnosis not Active"
|
---|
30 | ;
|
---|
31 | ; get the stop code for the visit and the stop code for the Diagnosis
|
---|
32 | S ACKVSC=$$GET1^DIQ(509850.6,ACKVIEN_",",4,"I")
|
---|
33 | S ACKDSC=$$GET1^DIQ(509850.1,ACKICDN_",",.04,"I")
|
---|
34 | ;
|
---|
35 | ; if diagnosis is for different stop code then set error and exit
|
---|
36 | I ACKDSC="S",(ACKVSC="A")!(ACKVSC="AT") D G SETDIAGX
|
---|
37 | . S ACKDIAG="0^Diagnosis is not valid for an Audiology Visit"
|
---|
38 | I ACKDSC="A",(ACKVSC="S")!(ACKVSC="ST") D G SETDIAGX
|
---|
39 | . S ACKDIAG="0^Diagnosis is not valid for a Speech Pathology Visit"
|
---|
40 | ;
|
---|
41 | ; see if the code already exists on the visit
|
---|
42 | S ACKE=$$FIND1^DIC(509850.63,","_ACKVIEN_",","Q",ACKICDN,"","","")
|
---|
43 | ;
|
---|
44 | ; if it does already exist on the visit then set error message and exit
|
---|
45 | ; (null value also is an error as this means an error occurred in the lookup)
|
---|
46 | I ACKE'=0 D G SETDIAGX
|
---|
47 | . S ACKDIAG="0^Duplicate Diagnosis"
|
---|
48 | ;
|
---|
49 | ; all ok, then add the diagnosis to the visit
|
---|
50 | S ACKARR(509850.63,"+1,"_ACKVIEN_",",.01)=ACKICDN
|
---|
51 | I ACKDPRIM S ACKARR(509850.63,"+1,"_ACKVIEN_",",.12)=1
|
---|
52 | D UPDATE^DIE("","ACKARR","","")
|
---|
53 | S ACKDIAG="1^" ; set return flag to OK
|
---|
54 | ;
|
---|
55 | SETDIAGX ; exit point
|
---|
56 | Q ACKDIAG
|
---|
57 | ;
|
---|
58 | SETPROC(ACKVIEN,ACKCPT,ACKQTY,ACKPPRV) ; add CPT code to A&SP Clinic Visit
|
---|
59 | ; inputs: ACKVIEN - A&SP visit ien
|
---|
60 | ; ACKCPT - CPT Procedure ien from ICPT file
|
---|
61 | ; ACKQTY - number of time procedure was performed (opt)
|
---|
62 | ; ACKPPRV - Procedure Provider
|
---|
63 | ; outputs: n^ - everything ok (n=cpt ien on visit)
|
---|
64 | ; 0^xxxxxxx - update failed (reason=xxxxxx)
|
---|
65 | ; NB. This function checks the Stop Code for the visit against the
|
---|
66 | ; valid stop codes for the procedure. It therefore assumes that the
|
---|
67 | ; visit stop code has already been filed.
|
---|
68 | N ACKPROC,ACKCPTN,ACKE,ACKARR,ACKSTAT,ACKVSC,ACKPSC,ACKIEN
|
---|
69 | ;
|
---|
70 | ; initialise return variable and procedure quantity
|
---|
71 | S ACKPROC="",ACKQTY=$S(+$G(ACKQTY)=0:1,1:ACKQTY)
|
---|
72 | ;
|
---|
73 | ; find the ICD code on the QUASAR file
|
---|
74 | S ACKCPTN=$$FIND1^DIC(509850.4,",","Q",ACKCPT,"","","")
|
---|
75 | ;
|
---|
76 | ; if not found then set error message and exit
|
---|
77 | I 'ACKCPTN D G SETPROCX
|
---|
78 | . S ACKPROC="0^Procedure not valid for Audiology and Speech Pathology"
|
---|
79 | ;
|
---|
80 | ; if found, get status (active/inactive)
|
---|
81 | S ACKSTAT=$$GET1^DIQ(509850.4,ACKCPTN_",",.04,"I")
|
---|
82 | ;
|
---|
83 | ; if inactive then set error message and exit
|
---|
84 | I ACKSTAT'=1 D G SETPROCX
|
---|
85 | . S ACKPROC="0^Procedure not Active"
|
---|
86 | ;
|
---|
87 | ; get the stop code for the visit and the stop code for the Procedure
|
---|
88 | S ACKVSC=$$GET1^DIQ(509850.6,ACKVIEN_",",4,"I")
|
---|
89 | S ACKPSC=$$GET1^DIQ(509850.4,ACKCPTN_",",.02,"I")
|
---|
90 | ;
|
---|
91 | ; if procedure is for different stop code then set error and exit
|
---|
92 | I ACKPSC="S",(ACKVSC="A")!(ACKVSC="AT") D G SETPROCX
|
---|
93 | . S ACKPROC="0^Procedure is not valid for an Audiology Visit"
|
---|
94 | I ACKPSC="A",(ACKVSC="S")!(ACKVSC="ST") D G SETPROCX
|
---|
95 | . S ACKPROC="0^Procedure is not valid for a Speech Pathology Visit"
|
---|
96 | ;
|
---|
97 | ; all ok, then add the procedure to the visit
|
---|
98 | S ACKARR(509850.61,"+1,"_ACKVIEN_",",.01)=ACKCPTN
|
---|
99 | S ACKARR(509850.61,"+1,"_ACKVIEN_",",.03)=ACKQTY
|
---|
100 | S ACKARR(509850.61,"+1,"_ACKVIEN_",",.05)=ACKPPRV
|
---|
101 | K ACKIEN
|
---|
102 | D UPDATE^DIE("","ACKARR","ACKIEN","")
|
---|
103 | S ACKPROC=+$G(ACKIEN(1))_"^" ; set return flag to OK
|
---|
104 | ;
|
---|
105 | SETPROCX ; exit point
|
---|
106 | Q ACKPROC
|
---|
107 | ;
|
---|
108 | SETMDFR(ACKVIEN,ACKPIEN,ACKMOD) ; add modifier to A&SP Clinic Visit
|
---|
109 | ; inputs: ACKVIEN - A&SP visit ien
|
---|
110 | ; ACKPIEN - Procedure ien from visit file
|
---|
111 | ; ACKMOD - modifier (ien from file 81.3)
|
---|
112 | ; outputs: 1^ - everything ok
|
---|
113 | ; 0^xxxxxxx - update failed (reason=xxxxxx)
|
---|
114 | N ACKMDFR,ACKMODN,ACKARR,ACKSTAT
|
---|
115 | ;
|
---|
116 | ; initialise return variable
|
---|
117 | S ACKMDFR=""
|
---|
118 | ;
|
---|
119 | ; find the modifier code on the QUASAR file
|
---|
120 | S ACKMODN=$$FIND1^DIC(509850.5,",","Q",ACKMOD,"","","")
|
---|
121 | ;
|
---|
122 | ; if not found then set error message and exit
|
---|
123 | I 'ACKMODN D G SETMODX
|
---|
124 | . S ACKMOD="0^Modifier not valid for Audiology and Speech Pathology"
|
---|
125 | ;
|
---|
126 | ; if found, get status (active/inactive)
|
---|
127 | S ACKSTAT=$$GET1^DIQ(509850.5,ACKMODN_",",1,"I")
|
---|
128 | ;
|
---|
129 | ; if inactive then set error message and exit
|
---|
130 | I ACKSTAT'=1 D G SETMODX
|
---|
131 | . S ACKMOD="0^Modifier not Active"
|
---|
132 | ;
|
---|
133 | ; all ok, then add the modifier to the visit and procedure
|
---|
134 | S ACKARR(509850.64,"+1,"_ACKPIEN_","_ACKVIEN_",",.01)=ACKMODN
|
---|
135 | D UPDATE^DIE("","ACKARR","","")
|
---|
136 | S ACKMOD="1^" ; set return flag to OK
|
---|
137 | ;
|
---|
138 | SETMODX ; exit point
|
---|
139 | Q ACKMOD
|
---|
140 | ;
|
---|
141 | ;
|
---|
142 | PRIMARY(ACKVIEN,ACKDD) ; Does the visit contain a Primary Diagnosis
|
---|
143 | ; Input - Visit IEN
|
---|
144 | ; Output - 1=Visit has a Primary Diagnosis
|
---|
145 | ; 0=Visit Does not have a Primary Diagnosis
|
---|
146 | ; or User editing diagnosis that is the Primary
|
---|
147 | ;
|
---|
148 | I ACKDD'="",$$GET1^DIQ(509850.63,ACKDD_","_ACKVIEN_",",".12","I")=1 K ACKDD Q 0
|
---|
149 | N ACKFLAG,ACKK3
|
---|
150 | D LIST^DIC(509850.63,","_ACKVIEN_",",".12","I","*","","","","","","ACKDIAG")
|
---|
151 | S ACKK3=0,ACKFLAG=0
|
---|
152 | F S ACKK3=$O(ACKDIAG("DILIST","ID",ACKK3)) Q:ACKK3=""!(ACKFLAG) D
|
---|
153 | . I ACKDIAG("DILIST","ID",ACKK3,".12")=1 S ACKFLAG=1
|
---|
154 | K ACKDD
|
---|
155 | Q ACKFLAG
|
---|
156 | ;
|
---|
157 | POSTDIAG(ACKVIEN) ; After Diagnosis codes have been entered check that
|
---|
158 | ; one is a Primary diagnosis.
|
---|
159 | ;
|
---|
160 | ; Input - Visit IEN
|
---|
161 | ; Output - 1=A primary has been entered
|
---|
162 | ; 0=A Primary needs to be entered
|
---|
163 | ;
|
---|
164 | I $$PRIMARY(ACKVIEN,"") Q 1
|
---|
165 | W !!,"One of the Diagnosis codes entered must be defined as the Primary Diagnosis."
|
---|
166 | Q 0
|
---|
167 | ;
|
---|
168 | TIMECHEK(ACKVIEN,ACKPARAM) ; Prevet user from editing a Visit Time
|
---|
169 | ;
|
---|
170 | ; Input ACKVIEN - Visit IEN
|
---|
171 | ; ACKPARMAM - 1=Called from Template
|
---|
172 | ; Null=Called from input Tranform of Visit Time
|
---|
173 | ; Output 0=Visit has No Visit Time
|
---|
174 | ; 1=Visit has Visit Time
|
---|
175 | ;
|
---|
176 | N ACKQTME
|
---|
177 | S ACKQTME=$$GET1^DIQ(509850.6,ACKVIEN,55,"E")
|
---|
178 | I ACKQTME="" Q 0
|
---|
179 | I ACKPARAM=1 D
|
---|
180 | . W !,"APPOINTMENT TIME : "_ACKQTME_" (Uneditable)"
|
---|
181 | K ACKPARAM
|
---|
182 | Q 1
|
---|
183 | ;
|
---|
184 | TIMERR ;
|
---|
185 | W !," NOTE - Once entered this field cannot be edited."
|
---|
186 | W !," If you wish to edit the Visit Time use the Delete Visit option then",!
|
---|
187 | W " re-enter the visit with the correct Visit Time.",!
|
---|
188 | ;
|
---|