[613] | 1 | VEPERXPR ;DAOU/JLG&MRM - Rx Print ; 4/14/05 9:13am
|
---|
| 2 | ;;1.0;t1;VO Pharmacy; Mar 25, 2005;Build 1
|
---|
| 3 | ; -----
|
---|
| 4 | INIT ; Set up variables.
|
---|
| 5 | S VEPEIO=""
|
---|
| 6 | N RXNUM,IENS,FIELDS,VEPERX,PROV,PAT,PROVIEN,VEPEPROV,PROVNAM
|
---|
| 7 | N PATIEN,VEPEPAT,PATNAMN
|
---|
| 8 | CHK ;Check for Rx interactions.
|
---|
| 9 | S PPL1=1 S:'$G(PPL) PPL=$G(PSORX("PSOL",PPL1))
|
---|
| 10 | G:$G(PPL)']"" D1
|
---|
| 11 | CHK2 K SPPL G:$D(DTOUT) D1 S SPPL="" F PI=1:1 Q:$P(PPL,",",PI)="" D
|
---|
| 12 | .S DA=$P(PPL,",",PI)
|
---|
| 13 | .I $P(^PSRX(DA,"STA"),"^")=4 S SPPL=SPPL_DA_"," Q
|
---|
| 14 | I $G(SPPL)]"" D
|
---|
| 15 | .W !!,$C(7),"Drug Interaction Rx(s) "
|
---|
| 16 | .F I=1:1 Q:$P(SPPL,",",I)="" W $P(^PSRX($P(SPPL,",",I),0),"^")_", "
|
---|
| 17 | .S PPL=SPPL,DG=1 D Q1 K DG,SPPL
|
---|
| 18 | D1 K RXLTOP
|
---|
| 19 | I $G(PPL1),$O(PSORX("PSOL",$G(PPL1))) S PPL1=$O(PSORX("PSOL",PPL1)),PPL=PSORX("PSOL",PPL1) G GETINFO
|
---|
| 20 | I $G(PPL1),$O(PSORX("PSOL",$G(PPL1))) D Q G GETINFO
|
---|
| 21 | .S PPL1=$O(PSORX("PSOL",PPL1)),PPL=PSORX("PSOL",PPL1)
|
---|
| 22 | Q1 S PPL1=1 G:$G(PPL)']"" D1 S PSNP=0,PSL=1
|
---|
| 23 | D I $G(PSOFROM)="NEW",$P(PSOPAR,"^",8) S PSNP=1
|
---|
| 24 | .Q:'$P(PSOPAR,"^",8)!($G(PSONOPRT))
|
---|
| 25 | .F SLPPL=0:0 S SLPPL=$O(RXRS(SLPPL)) Q:'SLPPL!($G(PSNP)) I '$O(^PSRX(SLPPL,1,0)),'$D(RXPR(SLPPL)) S PSNP=1
|
---|
| 26 | ;
|
---|
| 27 | ;Apparently the subscripts of RXFL contain the Rx numbers
|
---|
| 28 | GETINFO S RXNUM=0
|
---|
| 29 | F S RXNUM=$O(RXFL(RXNUM)) Q:RXNUM="" D
|
---|
| 30 | . D RX,PROV,INST,PAT,PRINT
|
---|
| 31 | . K RXFL(RXNUM)
|
---|
| 32 | . S:'$D(RXNUM)&$D(RXIEN) RXNUM=+RXIEN
|
---|
| 33 | D EXIT
|
---|
| 34 | Q
|
---|
| 35 | RX S RXIEN=RXNUM
|
---|
| 36 | S FIELDS="1;2;4;6;7;9;10.1;26"
|
---|
| 37 | ;Fields are patient,provider,drug,QTY,#refills,Sig1
|
---|
| 38 | D GETS^DIQ(52,RXIEN,FIELDS,"R","VEPERX")
|
---|
| 39 | S Y=$$GET1^DIQ(52,RXIEN,39.1,"","RXARY")
|
---|
| 40 | S RXIEN=RXIEN_","
|
---|
| 41 | S PAT=VEPERX(52,RXIEN,"PATIENT"),PROV=VEPERX(52,RXIEN,"PROVIDER")
|
---|
| 42 | S DRUG=VEPERX(52,RXIEN,"DRUG"),QTY=VEPERX(52,RXIEN,"QTY")
|
---|
| 43 | S RFL=VEPERX(52,RXIEN,"# OF REFILLS")
|
---|
| 44 | S SIGN=$S(VEPERX(52,RXIEN,"OERR SIG")="YES":1,1:0)
|
---|
| 45 | Q
|
---|
| 46 | PROV ;Get provider information
|
---|
| 47 | D FIND^DIC(200,"","","",PROV,"","B","","","VEPEPROV")
|
---|
| 48 | S PROVIEN=VEPEPROV("DILIST",2,1)
|
---|
| 49 | ;ADDRESS, CITY, STATE, ZIP, PHONE, TITLE, DEA #, ELECTRONIC SIG
|
---|
| 50 | K VEPEPROV
|
---|
| 51 | S FIELDS=".01;.132;8;53.2;16*;70"
|
---|
| 52 | D GETS^DIQ(200,PROVIEN,FIELDS,"R","VEPEPROV")
|
---|
| 53 | S PROVNAM=$P(PROV,",",2)_" "_$P(PROV,",",1),PROVIEN=PROVIEN_","
|
---|
| 54 | S DEA=VEPEPROV(200,PROVIEN,"DEA#"),PHONE=VEPEPROV(200,PROVIEN,"OFFICE PHONE")
|
---|
| 55 | S TITLE=VEPEPROV(200,PROVIEN,"TITLE"),N=""
|
---|
| 56 | F S N=$O(VEPEPROV(200.02,N)) Q:N="" S:'$D(INST) INST=VEPEPROV(200.02,N,"DIVISION") S:VEPEPROV(200.02,N,"DEFAULT")="Yes" INST=VEPEPROV(200.02,N,"DIVISION")
|
---|
| 57 | Q
|
---|
| 58 | INST ;Get institute information
|
---|
| 59 | D FIND^DIC(4,"","","",INST,"","B","","","VEPEINST")
|
---|
| 60 | S INSTIEN=VEPEINST("DILIST",2,1)
|
---|
| 61 | K VEPEINST
|
---|
| 62 | S FIELDS="1.01;1.02;1.03;1.04;4.04"
|
---|
| 63 | D GETS^DIQ(4,INSTIEN,FIELDS,"R","VEPEINST")
|
---|
| 64 | S INSTIEN=INSTIEN_","
|
---|
| 65 | S PROVCITY=VEPEINST(4,INSTIEN,"CITY"),PROVCITY=PROVCITY_", "_VEPEINST(4,INSTIEN,"STATE (MAILING)")
|
---|
| 66 | S PROVCITY=PROVCITY_" "_VEPEINST(4,INSTIEN,"ZIP")
|
---|
| 67 | S:$D(VEPEINST(4,INSTIEN,"STREET ADDR. 1")) PROVADD=VEPEINST(4,INSTIEN,"STREET ADDR. 1")
|
---|
| 68 | S:$D(VEPEINST(4,INSTIEN,"STREET ADDR. 2")) PROVADD=PROVADD_" "_VEPEINST(4,INSTIEN,"STREET ADDR. 2")
|
---|
| 69 | Q
|
---|
| 70 | PAT ;Get patient information
|
---|
| 71 | D FIND^DIC(2,"","","",PAT,"","B","","","VEPEPAT")
|
---|
| 72 | S PATIEN=VEPEPAT("DILIST",2,1)
|
---|
| 73 | ;AGE,ADDRESS
|
---|
| 74 | S FIELDS=".033;.111;.112;.113;.114;.115;.116"
|
---|
| 75 | D GETS^DIQ(2,PATIEN,FIELDS,"R","VEPEPAT")
|
---|
| 76 | S PATNAM=$P(PAT,",",2)_" "_$P(PAT,",",1),PATIEN=PATIEN_","
|
---|
| 77 | S AGE=VEPEPAT(2,PATIEN,"AGE")
|
---|
| 78 | S PATADD1=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 1]")
|
---|
| 79 | S PATADD2=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 2]")
|
---|
| 80 | S PATADD3=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 3]")
|
---|
| 81 | S PATADD=$S($D(PATADD1):PATADD1,1:"")_$S($D(PATADD2):PATADD2,1:"")
|
---|
| 82 | S PATADD=PATADD_$S($D(PATADD3):PATADD3,1:"")
|
---|
| 83 | S PATCITY=VEPEPAT(2,PATIEN,"CITY")_", "_VEPEPAT(2,PATIEN,"STATE")
|
---|
| 84 | S PATCITY=PATCITY_VEPEPAT(2,PATIEN,"ZIP CODE")
|
---|
| 85 | Q
|
---|
| 86 | PRINT ;Print prescription
|
---|
| 87 | D:PSOPRDEV="F" FAX D:PSOPRDEV="P" PRINTER D:PSOPRDEV="E" EDI
|
---|
| 88 | Q:PSOPRDEV="E"
|
---|
| 89 | Q:POP
|
---|
| 90 | S %DT="T",X="N" D ^%DT S $P(^PSRX(52,92001),U,1)=+Y
|
---|
| 91 | S $P(^PSRX(52,92001),U,2)=PSOPRDEV
|
---|
| 92 | G:'Y EXIT
|
---|
| 93 | U IO
|
---|
| 94 | PRINT2 W !,PROVNAM W:$D(TITLE) ", "_TITLE
|
---|
| 95 | W:$D(PROVADD) !,PROVADD
|
---|
| 96 | W !,PROVCITY
|
---|
| 97 | W:$D(PHONE) !,PHONE_" "
|
---|
| 98 | W:'$D(PHONE) ! W "DEA #:"_DEA
|
---|
| 99 | W !,"__________________________________________________"
|
---|
| 100 | W !,$$FMTE^XLFDT(DT,1)
|
---|
| 101 | W !,PATNAM_" AGE: "_AGE
|
---|
| 102 | W !,PATADD,PATCITY
|
---|
| 103 | W !!," Rx ",!
|
---|
| 104 | W !," "_DRUG
|
---|
| 105 | W !," QTY: "_QTY
|
---|
| 106 | I $D(RXARY) S N="" F S N=$O(RXARY(N)) Q:N="" W !,RXARY(N)
|
---|
| 107 | W !!!
|
---|
| 108 | W !,"Signature: ____________________________________"
|
---|
| 109 | W:$D(SIGN) !,"E/S "_PROVNAM W:'$D(SIGN) !,PROVNAM
|
---|
| 110 | W !,"This prescription will be filled generically"
|
---|
| 111 | W !,"unless prescriber writes 'd a w' in the box below"
|
---|
| 112 | W !,"Refills: "_RFL
|
---|
| 113 | W !,"NR _____ Label _____ __________"
|
---|
| 114 | W !," | |"
|
---|
| 115 | W !," | |"
|
---|
| 116 | W !," | |"
|
---|
| 117 | W !," __________",!
|
---|
| 118 | W !,$P(+PATIEN,",")_"-"_$P(+PROVIEN,",")_"-"_$P(+RXIEN,",")
|
---|
| 119 | W $C(10)
|
---|
| 120 | D ACLOG
|
---|
| 121 | U IO(0)
|
---|
| 122 | Q
|
---|
| 123 | FAX S %ZIS="QM",%ZIS("A")="Select fax machine: " D ^%ZIS
|
---|
| 124 | I POP W !,*7,"Prescription was not printed, going to next Prescription",!?10,*7,"Don't forget this prescription" Q
|
---|
| 125 | K %ZIS,IOP G:POP EXIT S PSOION=ION,PSOPIOST=$G(IOST(0))
|
---|
| 126 | N PSOIOS S PSOIOS=IOS,PSOQUE=$D(IO("Q"))
|
---|
| 127 | S DIC="^VEPER(19904.3,"
|
---|
| 128 | S DIC(0)="AEQMZ"
|
---|
| 129 | S DIC("A")="Enter recipient: "
|
---|
| 130 | D ^DIC
|
---|
| 131 | I Y=-1 W !,*7,"Prescription was not faxed, going on to next Prescription",!?10,*7,"Don't forget this prescription" Q
|
---|
| 132 | S VEPEREC=$P(Y(0),U),VEPENUM=$P(Y(0),U,5)
|
---|
| 133 | S VEPEPHARM=$P(Y,"^"),VEPEPHARM="1"_$E("000000",1,6-$L(VEPEPHARM))_VEPEPHARM
|
---|
| 134 | W !!,"Prescription(s) will be faxed to ",VEPEREC," at number: ",VEPENUM H 2
|
---|
| 135 | D DEV
|
---|
| 136 | Q
|
---|
| 137 | PRINTER Q:VEPEIO'=""
|
---|
| 138 | S %ZIS="QM",%ZIS("A")="Select Prescription printer: " D ^%ZIS
|
---|
| 139 | I POP W !,*7,"Prescription was not printed, going to next Prescription",!?10,*7,"Don't forget this prescription" Q
|
---|
| 140 | ; *** Commented out next line for test, remove comment later ***
|
---|
| 141 | ;I IO'["|PRN|" U IO W !!,"Prescriptions will not print to your screen",!! C IO G PRINTER
|
---|
| 142 | S VEPEIO=IO
|
---|
| 143 | K %ZIS,IOP G:POP EXIT S PSOION=ION,PSOPIOST=$G(IOST(0))
|
---|
| 144 | N PSOIOS S PSOIOS=IOS,PSOQUE=$D(IO("Q"))
|
---|
| 145 | ; If desired insert printer alignment here, probably call ^PSOLBLT
|
---|
| 146 | Q
|
---|
| 147 | DEV N FIL,DIR,IOP,X,Y,%ZIS W !
|
---|
| 148 | D HOME^%ZIS
|
---|
| 149 | S FIL=$$GET1^DIQ(59,"1,",92001.3)
|
---|
| 150 | S:PSOPRDEV="F" FIL=FIL_"\FAX\"_DT_VEPEPHARM_$P(RXIEN,",")_".DAT"
|
---|
| 151 | S:PSOPRDEV="E" FIL=FIL_"\HL7\"_DT_VEPEPHARM_$P(RXIEN,",")_".DAT"
|
---|
| 152 | S %ZIS="",%ZIS("HFSNAME")=FIL,%ZIS("HFSMODE")="W",IOP="HFS",(XPDSIZ,XPDSIZA)=0,XPDSEQ=1
|
---|
| 153 | D ^%ZIS
|
---|
| 154 | Q
|
---|
| 155 | QUE S ZTRTN="PRNT2^VEPERXPR",ZTDESC="Print/Fax Prescription"
|
---|
| 156 | S ZTSAVE("PROVNAM")=PROVNAM,ZTSAVE("PATNAM")=PATNAM
|
---|
| 157 | S ZTSAVE("PROVIEN")=PROVIEN,ZTSAVE("PSOPRDEV")=PSOPRDEV
|
---|
| 158 | S ZTSAVE("PATIEN")=PATIEN,ZTSAVE("RXIEN")=RXIEN
|
---|
| 159 | S ZTSAVE("TITLE")=TITLE
|
---|
| 160 | S ZTSAVE("PROVCITY")=PROVCITY,ZTSAVE("PHONE")=PHONE,ZTSAVE("DEA")=DEA
|
---|
| 161 | S ZTSAVE("PATADD")=PATADD,ZTSAVE("AGE")=AGE,ZTSAVE("PATCITY")=PATCITY
|
---|
| 162 | S ZTSAVE("DRUG")=DRUG,ZTSAVE("QTY")=QTY,ZTSAVE("SIGN")=SIGN
|
---|
| 163 | S ZTSAVE("RFL")=RFL,ZTSAVE("PROVADD")=PROVADD
|
---|
| 164 | S N="" F S N=$O(RXARY(N)) Q:N="" S ZTSAVE("RXARY("_N_")")=RXARY(N)
|
---|
| 165 | D ^%ZTLOAD
|
---|
| 166 | W !!,$S($D(ZTSK):"Prescription has been queued, task # "_ZTSK,1:"Unable to queue prescription"),!!!
|
---|
| 167 | K ZTSK,IO("Q") D HOME^%ZIS
|
---|
| 168 | Q
|
---|
| 169 | EDI N MSG,COUNT
|
---|
| 170 | D EN^VEPEHL7($P(RXIEN,","),.COUNT,.MSG)
|
---|
| 171 | S DIC="^VEPER(19904.3,"
|
---|
| 172 | S DIC(0)="AEQMZ"
|
---|
| 173 | S DIC("A")="Enter recipient: "
|
---|
| 174 | D ^DIC
|
---|
| 175 | I Y=-1 W !,*7,"Prescription was not transmitted, going on to next Prescription",!?10,*7,"Don't forget this prescription" Q
|
---|
| 176 | S VEPEREC=$P(Y(0),U),VEPENUM=$P(Y(0),U,5)
|
---|
| 177 | S VEPEPHARM=$P(Y,"^"),VEPEPHARM="1"_$E("000000",1,6-$L(VEPEPHARM))_VEPEPHARM
|
---|
| 178 | W !!,"Prescription(s) will be transmitted to ",VEPEREC H 2
|
---|
| 179 | D DEV
|
---|
| 180 | U IO F I=1:1:COUNT W MSG(I),!
|
---|
| 181 | D ^%ZISC
|
---|
| 182 | D ACLOG
|
---|
| 183 | U IO(0)
|
---|
| 184 | Q
|
---|
| 185 | ACLOG ;Activity log
|
---|
| 186 | N DTTM,HCOM,HCNT,HJJ,HRXIEN,HRXEIN
|
---|
| 187 | S HRXIEN=$P(RXIEN,",")
|
---|
| 188 | S HRXEIN=$P(^PSRX($P(RXIEN,","),0),U)
|
---|
| 189 | D NOW^%DTC S DTTM=%
|
---|
| 190 | S:PSOPRDEV="F" HMSG=" faxed to "_VEPEREC
|
---|
| 191 | S:PSOPRDEV="E" HMSG=" transmitted to "_VEPEREC
|
---|
| 192 | S:PSOPRDEV="P" HMSG=" printed."
|
---|
| 193 | S HCOM="Prescription "_HRXEIN_HMSG
|
---|
| 194 | S HCNT=0
|
---|
| 195 | F HJJ=0:0 S HJJ=$O(^PSRX(HRXIEN,"A",HJJ)) Q:'HJJ S HCNT=HJJ
|
---|
| 196 | S HCNT=HCNT+1
|
---|
| 197 | S ^PSRX(HRXIEN,"A",0)="^52.3DA^"_HCNT_"^"_HCNT
|
---|
| 198 | S ^PSRX(HRXIEN,"A",HCNT,0)=DTTM_"^G^"_$G(DUZ)_"^0^"_HCOM
|
---|
| 199 | Q
|
---|
| 200 | EXIT ;Exit
|
---|
| 201 | K RXNUM,RXIEN,FIELDS,VEPERX,PROV,PAT,PROVIEN,VEPEPROV,PROVNAM
|
---|
| 202 | K PATIEN,VEPEPAT,PATNAMN,VEPEIO
|
---|
| 203 | D ^%ZISC
|
---|
| 204 | Q
|
---|