1 | WVLETPR ;HCIOFO/FT,JR-WV PRINT LETTERS. ;1/10/00 16:45
|
---|
2 | ;;1.0;WOMEN'S HEALTH;**7,9**;Sep 30, 1998
|
---|
3 | ;; Original routine created by IHS/ANMC/MWR
|
---|
4 | ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
|
---|
5 | ;; CALLED BY OPTION: "WV PRINT INDIVIDUAL LETTERS" TO PRINT A
|
---|
6 | ;; LETTER FOR A SINGLE INDIVIDUAL (AS OPPOSED TO ALL THOSE QUEUED).
|
---|
7 | ;
|
---|
8 | D SETVARS^WVUTL5 S (WVPOP1,WVPOP)=0
|
---|
9 | N WVDA,WVTITLE
|
---|
10 | F S WVPOP=0 D Q:WVPOP1
|
---|
11 | .D SELECT Q:WVPOP
|
---|
12 | .D DEVICE Q:WVPOP
|
---|
13 | .S WVCRT=$S($E(IOST)="C":1,1:0)
|
---|
14 | .D PRINT
|
---|
15 | D ^%ZISC
|
---|
16 | ;
|
---|
17 | EXIT ;EP
|
---|
18 | D KILLALL^WVUTL8
|
---|
19 | Q
|
---|
20 | ;
|
---|
21 | SELECT ;EP
|
---|
22 | ;---> SELECT PATIENT, THEN SELECT NOTIFICATION.
|
---|
23 | N DIC,X,Y
|
---|
24 | D TITLE^WVUTL5("PRINT INDIVIDUAL PATIENT LETTERS")
|
---|
25 | D PATLKUP^WVUTL8(.Y)
|
---|
26 | I Y<0 S (WVPOP,WVPOP1)=1 Q
|
---|
27 | S WVDFN=+Y,X=$$NAME^WVUTL1(WVDFN)
|
---|
28 | D DIC^WVFMAN(790.4,"EM",.Y,"","","",X,.WVPOP)
|
---|
29 | I $D(DUOUT)!($D(DTOUT)) S WVPOP=1 Q
|
---|
30 | I Y<0 D NONE S WVPOP=1 Q
|
---|
31 | S WVDA=+Y
|
---|
32 | ;
|
---|
33 | ;---> IF FACILITIES OF LETTER AND USER DON'T MATCH, QUIT.
|
---|
34 | N WVFACIL S WVFACIL=$P(^WV(790.4,WVDA,0),U,7)
|
---|
35 | I ((WVFACIL'=DUZ(2))&(WVFACIL)) D TEXT1,DIRZ^WVUTL3 S WVPOP=1 Q
|
---|
36 | ;
|
---|
37 | S WVPURP=$P(^WV(790.4,WVDA,0),U,4)
|
---|
38 | S WVTYPE=$P(^WV(790.4,WVDA,0),U,3)
|
---|
39 | ;
|
---|
40 | ;---> CHECK IF PURPOSE HAS BEEN ENTERED.
|
---|
41 | I 'WVPURP D Q
|
---|
42 | .W !!?5,"No Purpose has been entered for this Notification."
|
---|
43 | .D DIRZ^WVUTL3 S WVPOP=1 Q
|
---|
44 | ;
|
---|
45 | ;---> CHECK IF THIS PURPOSE OF NOTIFICATION HAS A LETTER.
|
---|
46 | I '$D(^WV(790.404,WVPURP,1,0)) D Q
|
---|
47 | .W !!!?5,"No letter has been entered for this Purpose of Notification."
|
---|
48 | .W !?5,"Programmer information: Notification=^WV(790.4,"_WVDA_",0)."
|
---|
49 | .W !?5," Purpose IEN=",WVPURP
|
---|
50 | .W !?5," Patient IEN=",WVDFN
|
---|
51 | .D DIRZ^WVUTL3 S WVPOP=1 Q
|
---|
52 | ;
|
---|
53 | ;---> CHECK IF TYPE OF NOTIFICATION FOR THIS NOTIFICATION IS PRINTABLE.
|
---|
54 | I 'WVTYPE D CANTPRT Q
|
---|
55 | I '$P(^WV(790.403,WVTYPE,0),U,2) D CANTPRT Q
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | CANTPRT ;EP
|
---|
59 | ;---> CAN'T PRINT THIS NOTIFICATION.
|
---|
60 | W !!?5,"This Type of Notification"
|
---|
61 | W:WVTYPE ", ",$P(^WV(790.403,WVTYPE,0),U),"," W " is not printable."
|
---|
62 | D DIRZ^WVUTL3 S WVPOP=1
|
---|
63 | Q
|
---|
64 | ;
|
---|
65 | DEVICE ;EP
|
---|
66 | ;---> GET DEVICE AND POSSIBLY QUEUE TO TASKMAN.
|
---|
67 | K %ZIS,IOP
|
---|
68 | S ZTRTN="PRINT^WVLETPR",ZTSAVE("WVDA")=""
|
---|
69 | D ZIS^WVUTL2(.WVPOP,1)
|
---|
70 | Q
|
---|
71 | ;
|
---|
72 | PRINT ;EP
|
---|
73 | ;---> REQUIRED VARIABLE: WVDA=IEN IN ^WV(790.4, ION=DEVICE
|
---|
74 | ;---> NEXT LINE: IOP WILL INHIBIT ^DIWF FROM PROMPTING FOR DEVICE.
|
---|
75 | D SETVARS^WVUTL5
|
---|
76 | N WVDFN,WVPURP,IOP
|
---|
77 | S IOP=ION
|
---|
78 | ;---> IF FACILITIES OF LETTER AND USER DON'T MATCH, QUIT (IF NULL, OK).
|
---|
79 | N WVFACIL S WVFACIL=$P(^WV(790.4,WVDA,0),U,7)
|
---|
80 | I ((WVFACIL'=DUZ(2))&(WVFACIL)) D TEXT1 H 5 S WVPOP=1 Q
|
---|
81 | ;
|
---|
82 | S WVDFN=$P(^WV(790.4,WVDA,0),U)
|
---|
83 | S WVPURP=$P(^WV(790.4,WVDA,0),U,4)
|
---|
84 | ;---> WVN=DATE OF "PRINT DATE", USE TO KILL "APRT" XREF BELOW.
|
---|
85 | S:'$D(WVKDT) WVKDT=$P(^WV(790.4,WVDA,0),U,11)
|
---|
86 | ;---> IF NO PURPOSE (DELETED), KILL "APRT" XREF AND QUIT.
|
---|
87 | I 'WVPURP D Q
|
---|
88 | .W !!?5,"No Purpose of Notification has been chosen; therefore, this"
|
---|
89 | .W !?5,"notification cannot be printed."
|
---|
90 | .D KILLXREF(WVDA,WVKDT)
|
---|
91 | ;---> IF QUEUED AND WVCRT IS NOT SET, THEN SET IT.
|
---|
92 | S:'$D(WVCRT) WVCRT=$S($E(IOST)="C":1,1:0)
|
---|
93 | S DIWF="^WV(790.404,WVPURP,1,"
|
---|
94 | S DIWF(1)=790
|
---|
95 | S BY="INTERNAL(#.01)="_WVDFN
|
---|
96 | ;---> IF LOCKED, PROMPT DEVICE, QUIT AND LEAVE IN THE QUEUE.
|
---|
97 | L +^WV(790.4,WVDA):0 I '$T U IO D D PROMPT Q
|
---|
98 | .W !!?5,"The selected Notification is being edited by another user."
|
---|
99 | .W !?5,"Programmer information: Notification=^WV(790.4,"_WVDA_",0)."
|
---|
100 | .W:'WVCRT @IOF
|
---|
101 | ;
|
---|
102 | ;---> IF PATIENT IS DECEASED, DON'T PRINT LETTER; PRINT EXPLANATION,
|
---|
103 | ;---> CHANGE THE STATUS OF THE NOTIFICATION TO "CLOSED", AND GIVE
|
---|
104 | ;---> THE OUTCOME OF "PATIENT DECEASED".
|
---|
105 | I $$DECEASED^WVUTL1(WVDFN) D DECEASED Q
|
---|
106 | ;---> Compute future appointments
|
---|
107 | D KAPPT^WVUTL9(WVDFN) ;kill off old computed appts.
|
---|
108 | D GAPPT^WVUTL9(WVDFN) ;get future appts
|
---|
109 | D SAPPT^WVUTL9(WVDFN) ;set appts in File 790
|
---|
110 | D KILLUG^WVUTL9 ;kill off Utility global off future appts
|
---|
111 | D KADD^WVUTL9(WVDFN) ;kill off old computed address
|
---|
112 | D GADD^WVUTL9(WVDFN) ;get current complete address
|
---|
113 | D SADD^WVUTL9(WVDFN) ;set complete address in File 790
|
---|
114 | D KVAR^WVUTL9 ;clean-up VADPT variables used
|
---|
115 | ;---> PRINT IT TO IOP, PRESERVE WVPOP.
|
---|
116 | D EN2^DIWF
|
---|
117 | D PROMPT
|
---|
118 | ;---> DON'T STUFF "DATE PRINTED" IF IT ALREADY HAS A "DATE PRINTED".
|
---|
119 | I $P(^WV(790.4,WVDA,0),U,10)]"" D KILLXREF(WVDA,WVKDT) L -^WV(790.4,WVDA) Q
|
---|
120 | ;
|
---|
121 | ;---> DON'T STUFF "DATE PRINTED" IF IT'S JUST TO THE SCREEN.
|
---|
122 | I WVCRT D Q
|
---|
123 | .W !!?3,"NOTE: Because this letter was only displayed on a screen and"
|
---|
124 | .W !?9,"not printed on a printer, it will NOT yet be logged by the"
|
---|
125 | .W !?9,"program as having been ""PRINTED"".",!
|
---|
126 | .L -^WV(790.4,WVDA) D DIRZ^WVUTL3
|
---|
127 | ;
|
---|
128 | ;---> NEXT LINES KILL "APRT" XREF AND SET "DATE PRINTED"=TODAY.
|
---|
129 | ;---> ("APRT" XREF INDICATE A NOTIFICATION IS QUEUED TO BE PRINTED.)
|
---|
130 | D KILLXREF(WVDA,WVKDT)
|
---|
131 | D DIE^WVFMAN(790.4,".1////"_DT,WVDA)
|
---|
132 | L -^WV(790.4,WVDA) Q
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | KILLXREF(WVDA,WVKDT) ;EP
|
---|
136 | ;---> KILL "APRT" XREF (REMOVE LETTER FROM QUEUE).
|
---|
137 | Q:'$G(WVDA) Q:'$G(WVKDT)
|
---|
138 | K ^WV(790.4,"APRT",WVKDT,WVDA)
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | DECEASED ;EP
|
---|
142 | ;---> IF THE PATIENT IS DECEASED.
|
---|
143 | ;---> DON'T STUFF "DATE PRINTED" IF IT'S JUST TO THE SCREEN.
|
---|
144 | W !!?3,"NOTE: Because this patient, ",$$NAME^WVUTL1(WVDFN)," #"
|
---|
145 | W $$SSN^WVUTL1(WVDFN),", is now"
|
---|
146 | W !?9,"registered as deceased, the letter will NOT be printed."
|
---|
147 | W !?9,"Instead, this notification will be given a status of CLOSED"
|
---|
148 | W !?9,"and an outcome of ""Patient Deceased""."
|
---|
149 | D:WVCRT&('$D(IO("S"))) DIRZ^WVUTL3
|
---|
150 | W:'WVCRT @IOF
|
---|
151 | S DR=".14////c;.05///Patient Deceased"
|
---|
152 | D DIE^WVFMAN(790.4,DR,WVDA)
|
---|
153 | ;---> KILL "APRT" XREF (FLAGS NOTIFICATION AS QUEUED TO BE PRINTED).
|
---|
154 | D KILLXREF(WVDA,WVKDT)
|
---|
155 | L -^WV(790.4,WVDA)
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | PROMPT ;EP
|
---|
159 | ;---> PROMPT IF NECESSARY, PROMPT DEVICE.
|
---|
160 | D:WVCRT DIRZ^WVUTL3
|
---|
161 | Q
|
---|
162 | ;
|
---|
163 | NONE ;EP
|
---|
164 | S WVTITLE="* No letters selected for printing. *"
|
---|
165 | D CENTERT^WVUTL5(.WVTITLE)
|
---|
166 | W !!!!,WVTITLE,!!
|
---|
167 | D DIRZ^WVUTL3
|
---|
168 | Q
|
---|
169 | ;
|
---|
170 | TEXT1 ;EP
|
---|
171 | ;;
|
---|
172 | ;;* NOTE: The Facility with which this letter is associated does not
|
---|
173 | ;; match the Facility under which you are currently logged on.
|
---|
174 | ;; To print this Notification, you must either edit the Facility
|
---|
175 | ;; for this Notification, or log off and log back in under the
|
---|
176 | ;; same Facility with which the Notification is associated.
|
---|
177 | S WVTAB=5,WVLINL="TEXT1" D PRINTX
|
---|
178 | Q
|
---|
179 | ;
|
---|
180 | PRINTX ;EP
|
---|
181 | N I,T,X S T=$$REPEAT^XLFSTR(" ",WVTAB)
|
---|
182 | F I=1:1 S X=$T(@WVLINL+I) Q:X'[";;" W !,T,$P(X,";;",2)
|
---|
183 | Q
|
---|