| 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 | 
|---|