| 1 | RMPOLZB ;EDS/PAK - HOME OXYGEN LETTERS ;7/24/98
 | 
|---|
| 2 |  ;;3.0;PROSTHETICS;**29,55**;Feb 09, 1996
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; ODJ - patch 55 - 1/29/01 - remove hard code 121 mail code and
 | 
|---|
| 5 |  ;                            replace with extrinsic (AUG-1097-32118)
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; Input:
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;   JOB                  -  0: interactive, 1: job
 | 
|---|
| 10 |  ;   RMPOLCD              -  Letter type code
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ; Output: None
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; Called by:
 | 
|---|
| 15 |  ;   EN03^RMPOLT,EN02^RMPOLY
 | 
|---|
| 16 |  N REC,POS
 | 
|---|
| 17 |  ; if interactive select device
 | 
|---|
| 18 |  I 'JOB D FULL^VALM1 Q:'$$DEV
 | 
|---|
| 19 |  ; if print queued
 | 
|---|
| 20 |  I $D(IO("Q")) D  Q:'$$QUEUE^RMPOLET1(ZTDESC,ZTRTN,.ZTSAVE)  D HOME^%ZIS,EXIT Q
 | 
|---|
| 21 |  . K ZTSAVE
 | 
|---|
| 22 |  . S ZTDESC="RMPO : Patient Letter Print",ZTRTN="START^RMPOLZB"
 | 
|---|
| 23 |  . S (ZTSAVE("RMPOXITE"),ZTSAVE("JOB"),ZTSAVE("RMPOLCD"),ZTSAVE("RMPOSITE"),ZTSAVE("RMPO("),ZTSAVE("^TMP($J,RMPOXITE,"))=""
 | 
|---|
| 24 |  W !,"Printing...."
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | START ; Print H.O. correspondence for selected letter type
 | 
|---|
| 27 |  N DATE U IO
 | 
|---|
| 28 |  S Y=DT X ^DD("DD") S DATE=Y
 | 
|---|
| 29 |  D HDRL  ; initialise header lines
 | 
|---|
| 30 |  S RMPONAM="" F  S RMPONAM=$O(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM)) Q:RMPONAM=""  D
 | 
|---|
| 31 |  . S RMPOLTR=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,1)
 | 
|---|
| 32 |  . S RMPODFN=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,2)
 | 
|---|
| 33 |  . S REC=^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN) D BODY
 | 
|---|
| 34 |  D EXIT Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | ONE ;print a single patient
 | 
|---|
| 37 |  ;I 'JOB D FULL^VALM1 Q:'$$DEV
 | 
|---|
| 38 |  ;D COMMON("PIKSOM") D ^%ZISC D CLEAN^VALM10,INIT^RMPOLT,RE^VALM4 K DIR,RTN
 | 
|---|
| 39 |  D PIKSOM Q:$$QUIT  I Y="" S VALMBCK="R" Q
 | 
|---|
| 40 |  S LFNS=Y I 'JOB D FULL^VALM1 Q:'$$DEV
 | 
|---|
| 41 |  I $D(IO("Q")) D  D ^%ZTLOAD W:$D(ZTSK) !,"REQUEST QUEUED!" H 2 D HOME^%ZIS,EXIT Q
 | 
|---|
| 42 |  . K ZTSAVE
 | 
|---|
| 43 |  . S ZTDESC="RMPO : Patient Letter Print",ZTRTN="QUED^RMPOLZB"
 | 
|---|
| 44 |  . S (ZTSAVE("RMPOXITE"),ZTSAVE("JOB"),ZTSAVE("RMPOLCD"))=""
 | 
|---|
| 45 |  . S ZTSAVE("RMPOSITE")="",ZTSAVE("RMPO(")="",ZTSAVE("^TMP($J,RMPOXITE,")="",ZTSAVE("IO")="",ZTSAVE("LFNS")=""
 | 
|---|
| 46 |  W !!,"Printing...."
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | QUED N DATE S Y=DT X ^DD("DD") S DATE=Y D HDRL
 | 
|---|
| 49 |  U IO F ZI=1:1:$L(LFNS,",")-1 D
 | 
|---|
| 50 |  . S LFN=$P(LFNS,",",ZI) Q:LFN'>0
 | 
|---|
| 51 |  . S RMPONAM="",CNT=0 F  S RMPONAM=$O(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM)) Q:RMPONAM=""  D
 | 
|---|
| 52 |  .. S RMPOLTR=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,1)
 | 
|---|
| 53 |  .. S RMPODFN=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,2)
 | 
|---|
| 54 |  .. S CNT=CNT+1
 | 
|---|
| 55 |  .. S:CNT=LFN ^TMP($J,RMPOXITE,"LTR",RMPONAM)=RMPODFN
 | 
|---|
| 56 |  S RMPONAM="" F  S RMPONAM=$O(^TMP($J,RMPOXITE,"LTR",RMPONAM)) Q:RMPONAM=""  D SINGLE
 | 
|---|
| 57 |  K LFNS,LFN,ZI,RTN,DIR,RMLET
 | 
|---|
| 58 |  D ^%ZISC D CLEAN^VALM10,INIT^RMPOLT,RE^VALM4
 | 
|---|
| 59 |  S VALMBCK="R" D EXIT Q
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 | SINGLE S RMPOLTR=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,1)
 | 
|---|
| 62 |  S RMPODFN=$P(^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM),U,2)
 | 
|---|
| 63 |  S REC=^TMP($J,RMPOXITE,"RMPODEMO",RMPODFN)
 | 
|---|
| 64 |  D BODY Q
 | 
|---|
| 65 | BODY ; Set up array for filing and print letter
 | 
|---|
| 66 |  N I,LN,LNCT,SP,HDR,X,Y,NAME,SURNM,FRSTNM
 | 
|---|
| 67 |  S $P(SP," ",80)=" ",LNCT=0
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ; Print text or blank lines in header
 | 
|---|
| 70 |  S HDR=^TMP($J,RMPOXITE,"HEADER",RMPOLTR)
 | 
|---|
| 71 |  I 'HDR F I=1:1:9 D LINE("")
 | 
|---|
| 72 |  I HDR D PHDR
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  D LINE(DATE),LINE("")
 | 
|---|
| 75 |  S NAME=$P(REC,U),SURNM=$P(NAME,",",2),FRSTNM=$P(NAME,",")
 | 
|---|
| 76 |  S LN=$E(FRSTNM_" "_SURNM_SP,1,40)_"In Reply Refer To: "_RMPO("NAME")_"/"_$$ROU^RMPRUTIL(RMPOXITE)
 | 
|---|
| 77 |  D LINE(LN)
 | 
|---|
| 78 |  S LN=$P(REC,U,10),LN=$E(LN_SP,1,40)_"SSN: "_$P(REC,U,2)
 | 
|---|
| 79 |  D LINE(LN)
 | 
|---|
| 80 |  S LN=$P(REC,U,11) I LN]"" S LN=$E(LN_SP,1,40) D LINE(LN)
 | 
|---|
| 81 |  I $P(REC,U,12)]"" D LINE($P(REC,U,12))
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ; City, State, Zip
 | 
|---|
| 84 |  D LINE($P(REC,U,13)_", "_$P(REC,U,14)_"  "_$P(REC,U,15))
 | 
|---|
| 85 |  ;I $P(REC,U,11)="",$P(REC,U,12)="" D LINE($E(SP,1,40)_$P(RMPODFN,U))
 | 
|---|
| 86 |  S RMPORX=$P(REC,U,6) S:RMPORX="" RMPORX="Not on file"
 | 
|---|
| 87 |  D LINE($E(SP,1,40)_FRSTNM_" "_SURNM)
 | 
|---|
| 88 |  D LINE($E(SP,1,40)_"Current Home Oxygen Rx#: "_RMPORX)
 | 
|---|
| 89 |  S LN=$E(SP,1,40)_"Rx Expiration Date: "
 | 
|---|
| 90 |  S RMPORXDT=$P(REC,U,4)
 | 
|---|
| 91 |  I RMPORXDT="" S RMPORXDT="n/a"
 | 
|---|
| 92 |  E  S Y=RMPORXDT X ^DD("DD") S RMPORXDT=Y
 | 
|---|
| 93 |  D LINE(LN_RMPORXDT),LINE("")
 | 
|---|
| 94 |  D LINE("Dear "_$S($P(REC,U,9)="F":"Ms. ",1:"Mr. ")_SURNM_":")
 | 
|---|
| 95 |  D LINE(""),LINE("")
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ; print letter template
 | 
|---|
| 98 |  S I=0 F  S I=$O(^RMPR(665.2,RMPOLTR,1,I)) Q:'I  D LINE(^(I,0))
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; Update Correspondence Tracking
 | 
|---|
| 101 |  ; DO NOT remove patient from list is correspondence update unsuccessful.
 | 
|---|
| 102 |  S X=$$FILE^RMPOLZU(RMPODFN,"^TMP("_$J_","_RMPOXITE_",""LINE"")",RMPOLTR)
 | 
|---|
| 103 |  I +X D  Q  ; quit if error
 | 
|---|
| 104 |  . W !!!,"<<< Error"_+X_":"_$P(X,";",2)_" Patient #"_RMPODFN_" ! >>>",*7
 | 
|---|
| 105 |  D UPDLTR^RMPOLZA(RMPODFN,"@")  ; Clear "letter to be sent" field in RMPR(665
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  K ^TMP($J,RMPOXITE,"RMPOLST",RMPOLCD,RMPONAM)
 | 
|---|
| 108 |  K ^TMP($J,RMPOXITE,"LINE")
 | 
|---|
| 109 |  K ^TMP($J,RMPOXITE,RMPODFN)
 | 
|---|
| 110 |  I RMPOLCD="A" S $P(^RMPR(665,RMPODFN,"RMPOA"),U,9)=DT,$P(^("RMPOA"),U,10)="P"
 | 
|---|
| 111 |  I RMPOLCD="B" S $P(^RMPR(665,RMPODFN,"RMPOA"),U,11)=DT,$P(^("RMPOA"),U,12)="P"
 | 
|---|
| 112 |  I RMPOLCD="C" S $P(^RMPR(665,RMPODFN,"RMPOA"),U,13)=DT,$P(^("RMPOA"),U,14)="P"
 | 
|---|
| 113 |  W @IOF
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 | LINE(X) S LNCT=LNCT+1,^TMP($J,RMPOXITE,"LINE",LNCT,0)="         "_X
 | 
|---|
| 117 |  W !,?9,X
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 | HDRL ; Define header lines
 | 
|---|
| 121 |  S HEAD(1)="Department of Veterans Affairs",POS(1)=40-($L(HEAD(1))\2)
 | 
|---|
| 122 |  S HEAD(2)=RMPO("NAME"),POS(2)=40-($L(HEAD(2))\2)  ;name of VAMC
 | 
|---|
| 123 |  S HEAD(3)=RMPO("ADD"),POS(3)=40-($L(HEAD(3))\2)  ;street address of VAMC
 | 
|---|
| 124 |  S HEAD(4)=RMPO("CITY"),POS(4)=40-($L(HEAD(4))\2)  ;city,state and zip of VAMC
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | PHDR ; Print header
 | 
|---|
| 128 |  F I=1:1:5 D LINE("")
 | 
|---|
| 129 |  D LINE($E(SP,1,POS(1))_HEAD(1)),LINE($E(SP,1,POS(2))_HEAD(2))
 | 
|---|
| 130 |  D LINE($E(SP,1,POS(3))_HEAD(3)),LINE($E(SP,1,POS(4))_HEAD(4))
 | 
|---|
| 131 |  F I=1:1:4 D LINE("")
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | DEV() ; Get device. Cannot be home device
 | 
|---|
| 135 |  N DEV,POP
 | 
|---|
| 136 |  ;F  S DEV=0,%ZIS="Q" D ^%ZIS Q:$G(POP)=1  S DEV=1 Q:IO(0)'=IO  W "Cannot Select Home Device"
 | 
|---|
| 137 | DAGAIN S DEV=0,%ZIS="MQ" K IOP D ^%ZIS Q:$G(POP)=1 DEV
 | 
|---|
| 138 |  I IO(0)=IO!(IOST["SLAVE") D ^%ZISC,HOME^%ZIS W "Cannot Select Home or Slave Device" G DAGAIN
 | 
|---|
| 139 |  S DEV=1 Q DEV
 | 
|---|
| 140 | EXIT ;Clean up and quit
 | 
|---|
| 141 |  ; if interactive close printer
 | 
|---|
| 142 |  D:'JOB ^%ZISC
 | 
|---|
| 143 |  ;Kill off variables
 | 
|---|
| 144 |  K %ZIS,Y,ZTSAVE,ZTDESC,ZTRTN,HEAD
 | 
|---|
| 145 |  Q
 | 
|---|
| 146 | QUIT() S QUIT=$D(DTOUT)!$D(DUOUT)!$D(DIROUT) Q QUIT
 | 
|---|
| 147 |  Q
 | 
|---|
| 148 | COMMON(PIKRTN) ;
 | 
|---|
| 149 |  D FULL^VALM1
 | 
|---|
| 150 |  S RTN="SINGLE^RMPOLZB"
 | 
|---|
| 151 |  D @PIKRTN Q:$$QUIT  I Y="" S VALMBCK="R" Q
 | 
|---|
| 152 |  S LFNS=Y
 | 
|---|
| 153 |  I 'JOB Q:'$$DEV
 | 
|---|
| 154 |  Q
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 | PIKSOM ; ALLOW SELECTION FROM DISPLAYED ENTRIES
 | 
|---|
| 157 |  K DIR S DIR(0)="LO^"_VALMBG_":"_VALMLST D ^DIR
 | 
|---|
| 158 |  Q
 | 
|---|