VEPERXPR ;DAOU/JLG&MRM - Rx Print ; 4/14/05 9:13am
 ;;1.0;t1;VO Pharmacy; Mar 25, 2005;Build 1
 ;                               -----
INIT ; Set up variables.
 S VEPEIO=""
 N RXNUM,IENS,FIELDS,VEPERX,PROV,PAT,PROVIEN,VEPEPROV,PROVNAM
 N PATIEN,VEPEPAT,PATNAMN
CHK ;Check for Rx interactions.
 S PPL1=1 S:'$G(PPL) PPL=$G(PSORX("PSOL",PPL1))
 G:$G(PPL)']"" D1
CHK2 K SPPL G:$D(DTOUT) D1 S SPPL="" F PI=1:1 Q:$P(PPL,",",PI)=""  D
 .S DA=$P(PPL,",",PI)
 .I $P(^PSRX(DA,"STA"),"^")=4 S SPPL=SPPL_DA_"," Q
 I $G(SPPL)]"" D
 .W !!,$C(7),"Drug Interaction Rx(s) "
 .F I=1:1 Q:$P(SPPL,",",I)=""  W $P(^PSRX($P(SPPL,",",I),0),"^")_", "
 .S PPL=SPPL,DG=1 D Q1 K DG,SPPL
D1 K RXLTOP
 I $G(PPL1),$O(PSORX("PSOL",$G(PPL1))) S PPL1=$O(PSORX("PSOL",PPL1)),PPL=PSORX("PSOL",PPL1) G GETINFO
 I $G(PPL1),$O(PSORX("PSOL",$G(PPL1))) D  Q  G GETINFO
 .S PPL1=$O(PSORX("PSOL",PPL1)),PPL=PSORX("PSOL",PPL1)
Q1 S PPL1=1 G:$G(PPL)']"" D1 S PSNP=0,PSL=1
 D  I $G(PSOFROM)="NEW",$P(PSOPAR,"^",8) S PSNP=1
 .Q:'$P(PSOPAR,"^",8)!($G(PSONOPRT))
 .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
 ;
 ;Apparently the subscripts of RXFL contain the Rx numbers
GETINFO S RXNUM=0
 F  S RXNUM=$O(RXFL(RXNUM)) Q:RXNUM=""  D
 . D RX,PROV,INST,PAT,PRINT
 . K RXFL(RXNUM)
 . S:'$D(RXNUM)&$D(RXIEN) RXNUM=+RXIEN
 D EXIT
 Q
RX S RXIEN=RXNUM
 S FIELDS="1;2;4;6;7;9;10.1;26"
 ;Fields are patient,provider,drug,QTY,#refills,Sig1
 D GETS^DIQ(52,RXIEN,FIELDS,"R","VEPERX")
 S Y=$$GET1^DIQ(52,RXIEN,39.1,"","RXARY")
 S RXIEN=RXIEN_","
 S PAT=VEPERX(52,RXIEN,"PATIENT"),PROV=VEPERX(52,RXIEN,"PROVIDER")
 S DRUG=VEPERX(52,RXIEN,"DRUG"),QTY=VEPERX(52,RXIEN,"QTY")
 S RFL=VEPERX(52,RXIEN,"# OF REFILLS")
 S SIGN=$S(VEPERX(52,RXIEN,"OERR SIG")="YES":1,1:0)
 Q
PROV ;Get provider information
 D FIND^DIC(200,"","","",PROV,"","B","","","VEPEPROV")
 S PROVIEN=VEPEPROV("DILIST",2,1)
 ;ADDRESS, CITY, STATE, ZIP, PHONE, TITLE, DEA #, ELECTRONIC SIG
 K VEPEPROV
 S FIELDS=".01;.132;8;53.2;16*;70"
 D GETS^DIQ(200,PROVIEN,FIELDS,"R","VEPEPROV")
 S PROVNAM=$P(PROV,",",2)_" "_$P(PROV,",",1),PROVIEN=PROVIEN_","
 S DEA=VEPEPROV(200,PROVIEN,"DEA#"),PHONE=VEPEPROV(200,PROVIEN,"OFFICE PHONE")
 S TITLE=VEPEPROV(200,PROVIEN,"TITLE"),N=""
 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")
 Q
INST ;Get institute information
 D FIND^DIC(4,"","","",INST,"","B","","","VEPEINST")
 S INSTIEN=VEPEINST("DILIST",2,1)
 K VEPEINST
 S FIELDS="1.01;1.02;1.03;1.04;4.04"
 D GETS^DIQ(4,INSTIEN,FIELDS,"R","VEPEINST")
 S INSTIEN=INSTIEN_","
 S PROVCITY=VEPEINST(4,INSTIEN,"CITY"),PROVCITY=PROVCITY_", "_VEPEINST(4,INSTIEN,"STATE (MAILING)")
 S PROVCITY=PROVCITY_" "_VEPEINST(4,INSTIEN,"ZIP")
 S:$D(VEPEINST(4,INSTIEN,"STREET ADDR. 1")) PROVADD=VEPEINST(4,INSTIEN,"STREET ADDR. 1")
 S:$D(VEPEINST(4,INSTIEN,"STREET ADDR. 2")) PROVADD=PROVADD_" "_VEPEINST(4,INSTIEN,"STREET ADDR. 2")
 Q
PAT ;Get patient information
 D FIND^DIC(2,"","","",PAT,"","B","","","VEPEPAT")
 S PATIEN=VEPEPAT("DILIST",2,1)
 ;AGE,ADDRESS
 S FIELDS=".033;.111;.112;.113;.114;.115;.116"
 D GETS^DIQ(2,PATIEN,FIELDS,"R","VEPEPAT")
 S PATNAM=$P(PAT,",",2)_" "_$P(PAT,",",1),PATIEN=PATIEN_","
 S AGE=VEPEPAT(2,PATIEN,"AGE")
 S PATADD1=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 1]")
 S PATADD2=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 2]")
 S PATADD3=VEPEPAT(2,PATIEN,"STREET ADDRESS [LINE 3]")
 S PATADD=$S($D(PATADD1):PATADD1,1:"")_$S($D(PATADD2):PATADD2,1:"")
 S PATADD=PATADD_$S($D(PATADD3):PATADD3,1:"")
 S PATCITY=VEPEPAT(2,PATIEN,"CITY")_", "_VEPEPAT(2,PATIEN,"STATE")
 S PATCITY=PATCITY_VEPEPAT(2,PATIEN,"ZIP CODE")
 Q
PRINT ;Print prescription
 D:PSOPRDEV="F" FAX D:PSOPRDEV="P" PRINTER D:PSOPRDEV="E" EDI
 Q:PSOPRDEV="E"
 Q:POP
 S %DT="T",X="N" D ^%DT S $P(^PSRX(52,92001),U,1)=+Y
 S $P(^PSRX(52,92001),U,2)=PSOPRDEV
 G:'Y EXIT
 U IO
PRINT2 W !,PROVNAM W:$D(TITLE) ", "_TITLE
 W:$D(PROVADD) !,PROVADD
 W !,PROVCITY
 W:$D(PHONE) !,PHONE_"          "
 W:'$D(PHONE) ! W "DEA #:"_DEA
 W !,"__________________________________________________"
 W !,$$FMTE^XLFDT(DT,1)
 W !,PATNAM_"          AGE: "_AGE
 W !,PATADD,PATCITY
 W !!,"    Rx  ",!
 W !,"       "_DRUG
 W !,"       QTY: "_QTY
 I $D(RXARY) S N="" F  S N=$O(RXARY(N)) Q:N=""  W !,RXARY(N)
 W !!!
 W !,"Signature:  ____________________________________"
 W:$D(SIGN) !,"E/S  "_PROVNAM W:'$D(SIGN) !,PROVNAM
 W !,"This prescription will be filled generically"
 W !,"unless prescriber writes 'd a w' in the box below"
 W !,"Refills: "_RFL
 W !,"NR _____ Label _____      __________"
 W !,"                         |          |"
 W !,"                         |          |"
 W !,"                         |          |"
 W !,"                          __________",!
 W !,$P(+PATIEN,",")_"-"_$P(+PROVIEN,",")_"-"_$P(+RXIEN,",")
 W $C(10)
 D ACLOG
 U IO(0)
 Q
FAX S %ZIS="QM",%ZIS("A")="Select fax machine: " D ^%ZIS
 I POP W !,*7,"Prescription was not printed, going to next Prescription",!?10,*7,"Don't forget this prescription" Q
 K %ZIS,IOP G:POP EXIT  S PSOION=ION,PSOPIOST=$G(IOST(0))
 N PSOIOS S PSOIOS=IOS,PSOQUE=$D(IO("Q"))
 S DIC="^VEPER(19904.3,"
 S DIC(0)="AEQMZ"
 S DIC("A")="Enter recipient: "
 D ^DIC
 I Y=-1 W !,*7,"Prescription was not faxed, going on to next Prescription",!?10,*7,"Don't forget this prescription" Q
 S VEPEREC=$P(Y(0),U),VEPENUM=$P(Y(0),U,5)
 S VEPEPHARM=$P(Y,"^"),VEPEPHARM="1"_$E("000000",1,6-$L(VEPEPHARM))_VEPEPHARM
 W !!,"Prescription(s) will be faxed to ",VEPEREC," at number: ",VEPENUM H 2
 D DEV
 Q
PRINTER Q:VEPEIO'=""
 S %ZIS="QM",%ZIS("A")="Select Prescription printer: " D ^%ZIS
 I POP W !,*7,"Prescription was not printed, going to next Prescription",!?10,*7,"Don't forget this prescription" Q
 ; *** Commented out next line for test, remove comment later ***
 ;I IO'["|PRN|" U IO W !!,"Prescriptions will not print to your screen",!! C IO G PRINTER
 S VEPEIO=IO
 K %ZIS,IOP G:POP EXIT S PSOION=ION,PSOPIOST=$G(IOST(0))
 N PSOIOS S PSOIOS=IOS,PSOQUE=$D(IO("Q"))
 ; If desired insert printer alignment here, probably call ^PSOLBLT
 Q
DEV N FIL,DIR,IOP,X,Y,%ZIS W !
 D HOME^%ZIS
 S FIL=$$GET1^DIQ(59,"1,",92001.3)
 S:PSOPRDEV="F" FIL=FIL_"\FAX\"_DT_VEPEPHARM_$P(RXIEN,",")_".DAT"
 S:PSOPRDEV="E" FIL=FIL_"\HL7\"_DT_VEPEPHARM_$P(RXIEN,",")_".DAT"
 S %ZIS="",%ZIS("HFSNAME")=FIL,%ZIS("HFSMODE")="W",IOP="HFS",(XPDSIZ,XPDSIZA)=0,XPDSEQ=1
 D ^%ZIS
 Q
QUE S ZTRTN="PRNT2^VEPERXPR",ZTDESC="Print/Fax Prescription"
 S ZTSAVE("PROVNAM")=PROVNAM,ZTSAVE("PATNAM")=PATNAM
 S ZTSAVE("PROVIEN")=PROVIEN,ZTSAVE("PSOPRDEV")=PSOPRDEV
 S ZTSAVE("PATIEN")=PATIEN,ZTSAVE("RXIEN")=RXIEN
 S ZTSAVE("TITLE")=TITLE
 S ZTSAVE("PROVCITY")=PROVCITY,ZTSAVE("PHONE")=PHONE,ZTSAVE("DEA")=DEA
 S ZTSAVE("PATADD")=PATADD,ZTSAVE("AGE")=AGE,ZTSAVE("PATCITY")=PATCITY
 S ZTSAVE("DRUG")=DRUG,ZTSAVE("QTY")=QTY,ZTSAVE("SIGN")=SIGN
 S ZTSAVE("RFL")=RFL,ZTSAVE("PROVADD")=PROVADD
 S N="" F  S N=$O(RXARY(N)) Q:N=""  S ZTSAVE("RXARY("_N_")")=RXARY(N)
 D ^%ZTLOAD
 W !!,$S($D(ZTSK):"Prescription has been queued, task # "_ZTSK,1:"Unable to queue prescription"),!!!
 K ZTSK,IO("Q") D HOME^%ZIS
 Q
EDI N MSG,COUNT
 D EN^VEPEHL7($P(RXIEN,","),.COUNT,.MSG)
 S DIC="^VEPER(19904.3,"
 S DIC(0)="AEQMZ"
 S DIC("A")="Enter recipient: "
 D ^DIC
 I Y=-1 W !,*7,"Prescription was not transmitted, going on to next Prescription",!?10,*7,"Don't forget this prescription" Q
 S VEPEREC=$P(Y(0),U),VEPENUM=$P(Y(0),U,5)
 S VEPEPHARM=$P(Y,"^"),VEPEPHARM="1"_$E("000000",1,6-$L(VEPEPHARM))_VEPEPHARM
 W !!,"Prescription(s) will be transmitted to ",VEPEREC H 2
 D DEV
 U IO F I=1:1:COUNT W MSG(I),!
 D ^%ZISC
 D ACLOG
 U IO(0)
 Q
ACLOG    ;Activity log
 N DTTM,HCOM,HCNT,HJJ,HRXIEN,HRXEIN
 S HRXIEN=$P(RXIEN,",")
 S HRXEIN=$P(^PSRX($P(RXIEN,","),0),U)
 D NOW^%DTC S DTTM=%
 S:PSOPRDEV="F" HMSG=" faxed to "_VEPEREC
 S:PSOPRDEV="E" HMSG=" transmitted to "_VEPEREC
 S:PSOPRDEV="P" HMSG=" printed."
 S HCOM="Prescription "_HRXEIN_HMSG
 S HCNT=0
 F HJJ=0:0 S HJJ=$O(^PSRX(HRXIEN,"A",HJJ)) Q:'HJJ  S HCNT=HJJ
 S HCNT=HCNT+1
 S ^PSRX(HRXIEN,"A",0)="^52.3DA^"_HCNT_"^"_HCNT
 S ^PSRX(HRXIEN,"A",HCNT,0)=DTTM_"^G^"_$G(DUZ)_"^0^"_HCOM
 Q
EXIT ;Exit 
 K RXNUM,RXIEN,FIELDS,VEPERX,PROV,PAT,PROVIEN,VEPEPROV,PROVNAM
 K PATIEN,VEPEPAT,PATNAMN,VEPEIO
 D ^%ZISC
 Q
