Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSSDIUTL

PSSDIUTL.m

Go to the documentation of this file.
  1. PSSDIUTL ;HP/MJE - Drug Interaction Utility ;09/22/11 5:00pm
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**169,175,199**;9/30/97;Build 2
  1. ;Reference ^PSDRUG supported by DBIA 221
  1. ;Reference to XTID is supported DBIS 4631
  1. ;Reference to IN^PSSHRQ2 supported by DBIA 5369
  1. CHKFDB ;ping FDB
  1. N BASE
  1. S BASE="PINGTST^"_$T(+0)
  1. K ^TMP($J,BASE),DRGLST
  1. S ^TMP($J,BASE,"IN","PING")=""
  1. D IN^PSSHRQ2(BASE)
  1. D:$G(^TMP($J,BASE,"OUT",0))'=0 Q:$G(^TMP($J,BASE,"OUT",0))'=0
  1. .S DIR(0)="E",DIR("A",1)="The FDB database is not available at this time!"
  1. .S DIR("A",2)="Reason: "_$P($G(^TMP($J,BASE,"OUT",0)),"^",2)
  1. .S DIR("A",4)="Please contact the National Service Desk."
  1. .S DIR("A",5)=""
  1. .S DIR("A")="Press Return to continue...",DIR("?")="Press Return to continue"
  1. .W ! D ^DIR K DIRUT,DUOUT,DIR,X,Y W @IOF
  1. K ^TMP($J,BASE),BASE
  1. N NUM,MON,TEXTSTR S DRGLST=0,NUM=1,TEXTSTR="",PSSDGCK=1 N ID,ORTYP,NDF,DRUG,ON,PSONULN,PSONULN2 S $P(PSONULN,"-",60)="-",$P(PSONULN2,"=",60)="="
  1. K ^TMP($J)
  1. SELECT ;
  1. K:'$G(PSORXED) CLOZPAT
  1. K IT,DIC,X,Y,PSODRUG("TRADE NAME"),PSODRUG("NDC"),PSODRUG("DAW"),PSODRUG("BAD") S:$G(POERR)&($P($G(OR0),"^",9)) Y=$P(^PSDRUG($P(OR0,"^",9),0),"^")
  1. I $G(PSODRUG("IEN"))]"" S Y=PSODRUG("NAME"),PSONEW("OLD VAL")=PSODRUG("IEN")
  1. W !,"Drug "_NUM_": "_$S($G(Y)]"":Y_"// ",1:"") R X:$S($D(DTIME):DTIME,1:300) I '$T S DTOUT=1
  1. I X="",$G(Y)]"" S:Y X=Y S:'X X=$G(PSODRUG("IEN")) S:X X="`"_X
  1. I X="",DRGLST>1 W !!,"Now Processing Enhanced Order Checks! Please wait...",! H 1 G FDBCALL
  1. I X="",DRGLST<2 W !!,"A minimum of 2 Drugs are required!",! G SELECT
  1. I X?1."?" W !!,"Answer with DRUG NUMBER, or GENERIC NAME, or VA PRODUCT NAME, or",!,"NATIONAL DRUG CLASS, or SYNONYM" G SELECT
  1. I $G(PSORXED),X["^" S PSORXED("DFLG")=1 W ! G SELECTX
  1. I X="^"!(X["^^")!($D(DTOUT)) W ! G SELECTX
  1. S DIC=50,DIC(0)="EMQZVT",DIC("T")="",D="B^C^VAPN^VAC"
  1. S DIC("S")="I $S('$D(^PSDRUG(+Y,""I"")):1,'^(""I""):1,DT'>^(""I""):1,1:0),$$GCN^PSSDIUTL(+Y),$$PKGFLG^PSSDIUTL($P($G(^PSDRUG(+Y,2)),""^"",3)),$D(^PSDRUG(""ASP"",+$G(^(2)),+Y))"
  1. D MIX^DIC1 K DIC,PKF2,D
  1. I $D(DTOUT) G SELECTX
  1. I $D(DUOUT) K DUOUT G SELECT
  1. I Y<0 G SELECT
  1. S:$G(PSONEW("OLD VAL"))=+Y&('$G(PSOEDIT)) PSODRG("QFLG")=1
  1. K PSOY S PSOY=Y,PSOY(0)=Y(0)
  1. I $P(PSOY(0),"^")="OTHER DRUG"!($P(PSOY(0),"^")="OUTSIDE DRUG") D TRADE
  1. G:Y<0 SELECT
  1. F DRGLSTI=0:0 S DRGLSTI=$O(DRGLST(DRGLSTI)) Q:'DRGLSTI D
  1. .I DRGLSTI=+Y S DRGLSTF=1
  1. I $D(DRGLSTF) S NUM=DRGLST+1 K DRGLSTF W !!,"You have selected a duplicate drug please enter a different drug.." K DIR,DRGLSTI,Y S DIR(0)="E",DIR("A")="Press Return to Continue..." W ! D ^DIR K DIR G SELECT
  1. S DRGLST=$G(DRGLST)+1,DRGLST(+Y)=Y_"^"_DRGLST,NUM=NUM+1 G SELECT
  1. SELECTX K DIC,X,Y,DTOUT,DUOUT,PSONEW("OLD VAL"),DRGLST
  1. Q
  1. GCN(PSSIENID) ;Return 0 for not matched, 1 for matched with no GCNSEQNO, 1^1 for matched with a GCNSEQNO
  1. N PSSNDFID,PSSGCNPT,PSSGCNID
  1. S PSSNDFID=$P($G(^PSDRUG(PSSIENID,"ND")),"^"),PSSGCNPT=$P($G(^PSDRUG(PSSIENID,"ND")),"^",3)
  1. I 'PSSNDFID!('PSSGCNPT) Q 0
  1. S PSSGCNID=$$PROD0^PSNAPIS(PSSNDFID,PSSGCNPT)
  1. I $P(PSSGCNID,"^",7) Q PSSIENID_";"_PSSNDFID_";"_$P(PSSGCNID,"^",7)
  1. Q PSSIENID_";"_PSSNDFID
  1. PKGFLG(PKF2) ;
  1. I $S(PKF2["O":1,1:0) Q 1
  1. I $S(PKF2["X":1,1:0) Q 1
  1. I $S(PKF2["U":1,1:0) Q 1
  1. I $S(PKF2["I":1,1:0) Q 1
  1. Q 0
  1. TRADE ;
  1. K DIR,DIC,DA,X,Y
  1. S DIR(0)="52,6.5" S:$G(PSOTRN)]"" DIR("B")=$G(PSOTRN) D ^DIR K DIR,DIC
  1. I X="@" S Y=X K DIRUT
  1. I $D(DIRUT) S:$D(DUOUT)!$D(DTOUT)&('$D(PSORX("EDIT"))) PSONEW("DFLG")=1 G TRADEX
  1. S PSODRUG("TRADE NAME")=Y
  1. TRADEX I $G(PSORXED("DFLG")),$D(DIRUT) S PSORXED("DFLG")=1
  1. K DIRUT,DTOUT,DUOUT,X,Y,DA,DR,DIE Q
  1. FDBCALL S LIST="PSOPEPS",^TMP($J,LIST,"IN","DRUGDRUG")=""
  1. F I=0:0 S I=$O(DRGLST(I)) Q:'I D
  1. .S DIEN=$P(DRGLST(I),"^"),DNM=$P(DRGLST(I),"^",2),ON="Z;"_$P(DRGLST(I),"^",3)_";PROSPECTIVE;"_$P(DRGLST(I),"^",3)
  1. .K ID,P1,P2 S ID=+$$GETVUID^XTID(50.68,,+$P($G(^PSDRUG(DIEN,"ND")),"^",3)_",")
  1. .S:ID=0 PSODRUG("IEN")=DIEN
  1. .S P1=$P($G(^PSDRUG(DIEN,"ND")),"^"),P2=$P($G(^("ND")),"^",3),X=$$PROD0^PSNAPIS(P1,P2)
  1. .S SEQN=$P(X,"^",7)
  1. .S ^TMP($J,LIST,"IN","PROSPECTIVE",ON)=SEQN_"^"_ID_"^"_DIEN_"^"_DNM K ID
  1. S ^TMP($J,LIST,"IN","THERAPY")=""
  1. D IN^PSSHRQ2(LIST)
  1. S THSW2=0
  1. I +$G(^TMP($J,LIST,"OUT",0))=1 D PROC
  1. I '$G(^TMP($J,LIST,"OUT",0)) W !,"No drug interactions or therapeutic duplication occurred." W ! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR G EXIT
  1. I +$G(^TMP($J,LIST,"OUT",0))=-1 W !,"Error: "_$P(^TMP($J,"PSOPEPS","OUT",0),"^",2),! G EXIT
  1. G:'$D(^TMP($J,"PSOPEPS","OUT","THERAPY")) RMON
  1. W !,PSONULN2 K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. RMON I $G(MON) D MON I $G(X)="" W ! D RMON
  1. EXIT ;
  1. K DRGLST,DIC,X,Y,ID,ORTYP,DIEN,DNM,PSONULN,PSSDGCK,MON,^TMP($J),LIST,PSODRUG("IEN") Q
  1. PROC ;
  1. I $D(PSODGCK) N PSONULN,PSONULN2,THSW2 S $P(PSONULN,"-",60)="-",$P(PSONULN2,"=",60)="=",THSW2=0
  1. W @IOF K ^UTILITY($J) I $O(^TMP($J,LIST,"OUT","EXCEPTIONS",""))]"" D EXC^PSODDPR5
  1. I '$D(^TMP($J,LIST,"OUT","DRUGDRUG"))&'$D(^TMP($J,LIST,"OUT","THERAPY",1)) W !,"No Order Check Warnings Found",! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. I $D(PSODGCK),'$D(^TMP($J,LIST,"OUT","DRUGDRUG")),$D(^TMP($J,"PSOPEPS","OUT","THERAPY")) G DGCKTHER
  1. D DELDISC^PSSDIUTX I $D(^TMP($J,LIST,"OUT","DRUGDRUG")) W !,"*** DRUG INTERACTION(S) ***",!,PSONULN2,!
  1. N DRG,ON,CT,DRGI,PDRG,SEV,SEVH,STX,INT,CLI,PDRG S (ON,DRG,SV)="",CT=0,SEVH="Critical"
  1. F S SV=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV)) Q:SV="" F S DRG=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG)) Q:DRG="" D
  1. .F S ON=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON)) Q:ON="" F S CT=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT)) Q:'CT D DUP
  1. I $D(^TMP($J,LIST,"OUT","DRUGDRUG")) W !,PSONULN2 K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR ;(end of inter data)
  1. DGCKTHER I $D(^TMP($J,"PSOPEPS","OUT","THERAPY")) W @IOF W PSONULN2,!,"*** THERAPEUTIC DUPLICATION(S) ***",! D THER
  1. I $D(PSODGCK),'$D(^TMP($J,LIST,"OUT","DRUGDRUG")),$D(^TMP($J,"PSOPEPS","OUT","THERAPY")) K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." W ! D ^DIR K DIR W @IOF Q
  1. DGCKMON I $D(PSODGCK),$D(^TMP($J,LIST,"OUT","DRUGDRUG")),$G(MON) D MON I $G(X)="" W ! D DGCKMON
  1. Q
  1. THER ;
  1. S (THR,THR1,THR2,TCTR,TCLSTR)="" S TALWNUM=0 N TLN,TLN2 S $P(TLN,"=",60)="",$P(TLN2,"-",60)="" S THSW=0
  1. F S THR=$O(^TMP($J,LIST,"OUT","THERAPY",THR)) Q:THR="" D
  1. .S THR1="",TCLSTR=""
  1. .F S THR1=$O(^TMP($J,LIST,"OUT","THERAPY",THR,THR1)) Q:THR1="" D
  1. ..S TALWNUM=TALWNUM+$G(^TMP($J,LIST,"OUT","THERAPY",THR,THR1,"ALLOW"))
  1. ..S TCLSTR=TCLSTR_$G(^TMP($J,LIST,"OUT","THERAPY",THR,THR1,"CLASS"))
  1. ..S:+$O(^TMP($J,LIST,"OUT","THERAPY",THR,THR1))'=0 TCLSTR=TCLSTR_", "
  1. .I TALWNUM=0 I ($Y+8)>IOSL,$E(IOST)="C" D
  1. ..K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. .W:THSW !,TLN2 S THSW=1
  1. .I TALWNUM=0 D
  1. ..F S TCTR=$O(^TMP($J,LIST,"OUT","THERAPY",THR,"DRUGS",TCTR)) Q:TCTR="" D
  1. ...W !,?12,"Drug Name: ",$$THOSTAT^PSSCKOS($P($G(^TMP($J,LIST,"OUT","THERAPY",THR,"DRUGS",TCTR)),U,3),THR,TCTR)
  1. ..W !,!,"Duplication Allowance: 0",!,?11,"Drug Class: "
  1. ..I $L(TCLSTR)>50 D
  1. ...K BSIG N BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM
  1. ...S BBSIG=TCLSTR,(BVAR,BVAR1)="",III=1
  1. ...S ZNT=0 F NNN=1:1:$L(BBSIG) I $E(BBSIG,NNN)=" "!($L(BBSIG)=NNN) S ZNT=ZNT+1 D I $L(BVAR)>50 S BSIG(III)=BLIM_" ",III=III+1,BVAR=BVAR1
  1. ....S BVAR1=$P(BBSIG," ",(ZNT)),BLIM=BVAR,BVAR=$S(BVAR="":BVAR1,1:BVAR_" "_BVAR1)
  1. ...I $G(BVAR)'="" S BSIG(III)=BVAR
  1. ...I $G(BSIG(1))=""!($G(BSIG(1))=" ") S BSIG(1)=$G(BSIG(2)) K BSIG(2)
  1. ..I $L(TCLSTR)>50 D
  1. ...S I=""
  1. ...F S I=$O(BSIG(I)) Q:'I D
  1. ....W:I=1 BSIG(I),! W:I>1 ?23,BSIG(I)
  1. ..E D
  1. ...W TCLSTR
  1. .I TALWNUM>0 D
  1. ..S THR2="",TCLSTR=""
  1. ..F S THR2=$O(^TMP($J,LIST,"OUT","THERAPY",THR,THR2)) Q:+THR2=0 D
  1. ...F S TCTR=$O(^TMP($J,LIST,"OUT","THERAPY",THR,"DRUGS",TCTR)) Q:TCTR="" D
  1. ....W !,?12,"Drug Name: ",$$THOSTAT^PSSCKOS($P($G(^TMP($J,LIST,"OUT","THERAPY",THR,"DRUGS",TCTR)),U,3),THR,TCTR)
  1. ...W !,!,"Duplication Allowance: ",$G(^TMP($J,LIST,"OUT","THERAPY",THR,THR2,"ALLOW"))
  1. ...K TCLSTR S TCLSTR=^TMP($J,LIST,"OUT","THERAPY",THR,THR2,"CLASS")
  1. ...W !,?11,"Drug Class: "
  1. ...I $L(TCLSTR)>50 D
  1. ....K BSIG N BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM
  1. ....S BBSIG=TCLSTR,(BVAR,BVAR1)="",III=1
  1. ....S ZNT=0 F NNN=1:1:$L(BBSIG) I $E(BBSIG,NNN)=" "!($L(BBSIG)=NNN) S ZNT=ZNT+1 D I $L(BVAR)>50 S BSIG(III)=BLIM_" ",III=III+1,BVAR=BVAR1
  1. .....S BVAR1=$P(BBSIG," ",(ZNT)),BLIM=BVAR,BVAR=$S(BVAR="":BVAR1,1:BVAR_" "_BVAR1)
  1. ....I $G(BVAR)'="" S BSIG(III)=BVAR
  1. ....I $G(BSIG(1))=""!($G(BSIG(1))=" ") S BSIG(1)=$G(BSIG(2)) K BSIG(2)
  1. ...I $L(TCLSTR)>50 D
  1. ....S I=""
  1. ....F S I=$O(BSIG(I)) Q:'I D
  1. .....I ($Y+6)>IOSL,$E(IOST)="C" D
  1. ......K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. .....W:I=1 BSIG(I),! W:I>1 ?23,BSIG(I),!
  1. ...E D
  1. ....W TCLSTR,!
  1. ...I ($Y+6)>IOSL,$E(IOST)="C" D
  1. ....K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR
  1. Q
  1. DUP ;
  1. N PDRGN,DRGN S PDRGN="",DRGN=""
  1. I ($Y+8)>IOSL,$E(IOST)="C" D
  1. .K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. I $O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT,"PMON",0)) S MON=1
  1. S PDRG=$P(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT),"^",4)
  1. S CLI=$G(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT,"CLIN"))
  1. S SEV=$G(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT,"SEV"))
  1. S:SEVH'=SEV PSONULN="",$P(PSONULN,"=",60)="="
  1. I ($Y+6)>IOSL,$E(IOST)="C" D
  1. .K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR
  1. W:THSW2 PSONULN,! S THSW2=1
  1. SET PDRGN=$$POSTAT^PSSCKOS(DRG,PDRG,SV,ON,CT),DRGN=$$OSTAT^PSSCKOS(DRG,ON)
  1. W "***"_SEV_"*** Drug Interaction with ",!,DRGN_" and" W:SEV="Critical" !,PDRGN,!! W:SEV="Significant" !,PDRGN,!!
  1. S:SEVH'=SEV PSONULN="",$P(PSONULN,"-",60)="-"
  1. S SEVH=SEV
  1. I $L(CLI)>70 D
  1. .K BSIG N BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM
  1. .S BBSIG=CLI,(BVAR,BVAR1)="",III=1
  1. .S ZNT=0 F NNN=1:1:$L(BBSIG) I $E(BBSIG,NNN)=" "!($L(BBSIG)=NNN) S ZNT=ZNT+1 D I $L(BVAR)>70 S BSIG(III)=BLIM_" ",III=III+1,BVAR=BVAR1
  1. ..S BVAR1=$P(BBSIG," ",(ZNT)),BLIM=BVAR,BVAR=$S(BVAR="":BVAR1,1:BVAR_" "_BVAR1)
  1. .I $G(BVAR)'="" S BSIG(III)=BVAR
  1. .I $G(BSIG(1))=""!($G(BSIG(1))=" ") S BSIG(1)=$G(BSIG(2)) K BSIG(2)
  1. I $L(CLI)>70 D
  1. .S I=""
  1. .F S I=$O(BSIG(I)) Q:'I D
  1. ..W BSIG(I),!
  1. E D
  1. .W CLI,!
  1. K BSIG,BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM
  1. Q
  1. MON ;
  1. I '$G(DUOUT) W ! K DIR S DIR("A")="Display Professional Interaction Monograph",DIR("B")="NO",DIR(0)="Y",DIR("?")="Enter Y if you would like to see the Monograph." D ^DIR W !
  1. I X="^"!(X["^^")!($D(DTOUT)) Q
  1. K SEL,DIR,DTOUT,DUOUT,DIRUT Q:Y=0
  1. S MONT=1,SEL=1 K Y D BLD Q:$G(SEL)=0
  1. K IOP,%ZIS,POP S %ZIS="QM" W ! D ^%ZIS
  1. I POP K SEL,DIR,DTOUT,DUOUT,DIRUT,MONT W !,"NOTHING PRINTED" G MON
  1. I $D(IO("Q")) D Q
  1. .S ZTRTN="OUT^PSOIDPRE",ZTDESC="Monograph Report of Drug Interactions",ZTSAVE("MONT")=""
  1. .S ZTSAVE("PSONULN")="",ZTSAVE("LIST")="",ZTSAVE("^TMP($J,LIST,""OUT"",""DRUGDRUG"",")="",ZTSAVE("^TMP($J,""PSOMONP"",")=""
  1. .D ^%ZTLOAD,^%ZISC W !,"Monograph Queued to Print!",! S:$D(ZTQUEUED) ZTREQ="Q"
  1. D OUT,^%ZISC
  1. W ! G:Y'=0 MON
  1. Q
  1. OUT ;print monograph
  1. N DRG,ON,CT,DRGI,PDRG,SEV,STX,INT,CLI,PDRG,RNG,QX
  1. D:MONT=1 PROF D:MONT=2 CON D:MONT=3 PROF
  1. Q
  1. BLD ;
  1. K SEL,X,Y,DRG,ON,CT,RNG,^TMP($J,"PSOMON"),^TMP($J,"PSOMONP") S (DRG,ON,SV)="",CT=0
  1. F S SV=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV)) Q:SV="" F S DRG=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG)) Q:DRG="" F S ON=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON)) Q:ON="" D
  1. .F S CT=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT)) Q:'CT I $O(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT,"PMON",0)) D
  1. ..S RNG=$G(RNG)+1
  1. ..S ^TMP($J,"PSOMON",RNG,DRG)=DRG_"^"_ON_"^"_CT_"^"_$P(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT),"^",4)_"^"_$G(^TMP($J,LIST,"OUT","DRUGDRUG",SV,DRG,ON,CT,"SEV"))
  1. I '$D(^TMP($J,"PSOMON",2)) S Y=1 G ONEMONO
  1. K DIR S IND=0,DRG=""
  1. ;F S IND=$O(^TMP($J,"PSOMON",IND)) Q:'IND F S DRG=$O(^TMP($J,"PSOMON",IND,DRG)) Q:DRG="" S DIR("A",IND)=IND_". "_DRG_" and "_$P(^TMP($J,"PSOMON",IND,DRG),"^",4) S DIR("A",IND+1)=""
  1. F S IND=$O(^TMP($J,"PSOMON",IND)) Q:'IND F S DRG=$O(^TMP($J,"PSOMON",IND,DRG)) Q:DRG="" D
  1. .I ($Y+6)>IOSL,$E(IOST)="C" D
  1. ..W ! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR W @IOF
  1. .W !,IND_". "_DRG_" and "_$P(^TMP($J,"PSOMON",IND,DRG),"^",4)
  1. W ! S DIR("A")="Select Monograph for printing by number",DIR(0)="LO^1:"_RNG D ^DIR K DIR
  1. I $D(DUOUT)!($D(DTOUT))!(X="^")!(X="") S SEL=0 Q
  1. ONEMONO F G=1:1:$L(Y) Q:$P(Y,",",G)="" S DRG=$O(^TMP($J,"PSOMON",$P(Y,",",G),"")),^TMP($J,"PSOMONP",$P(Y,",",G),0)=^TMP($J,"PSOMON",$P(Y,",",G),DRG)
  1. K ^TMP($J,"PSOMON")
  1. Q
  1. ;
  1. NEWPG ;new page form feed
  1. N DIR
  1. S DIR(0)="E",DIR("A")="Press Return to Continue or ""^"" to Exit"
  1. D ^DIR Q:($D(DUOUT)!($D(DTOUT)))
  1. W @IOF,$S($G(MONT)=2:"Consumer",1:"Professional")_" Monograph",!!,"Drug Interaction with ",!,DRG_" and "_PDRG,!!
  1. Q
  1. ;
  1. FORMAT ; WATCH OUT WITH CHANGES HERE!!!
  1. K BSIG,XX N BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM
  1. I $L(TEXTSTR)'>70 D
  1. . W ?5,TEXTSTR,!
  1. I $L(TEXTSTR)>70 D
  1. .S BBSIG=TEXTSTR,(BVAR,BVAR1)="",III=1
  1. .S ZNT=0 F NNN=1:1:$L(BBSIG) I $E(BBSIG,NNN)=" "!($L(BBSIG)=NNN) S ZNT=ZNT+1 D I $L(BVAR)>70 S BSIG(III)=BLIM_" ",III=III+1,BVAR=BVAR1
  1. ..S BVAR1=$P(BBSIG," ",(ZNT)),BLIM=BVAR,BVAR=$S(BVAR="":BVAR1,1:BVAR_" "_BVAR1)
  1. .I $G(BVAR)'="" S BSIG(III)=BVAR
  1. .I $G(BSIG(1))=""!($G(BSIG(1))=" ") S BSIG(1)=$G(BSIG(2)) K BSIG(2)
  1. F XX=0:0 S XX=$O(BSIG(XX)) Q:'XX D Q:($D(DUOUT)!($D(DTOUT)))
  1. . I $Y+6>IOSL,$E(IOST)="C" D NEWPG Q:($D(DUOUT)!($D(DTOUT)))
  1. . W ?5,BSIG(XX),!
  1. K BSIG,BBSIG,BVAR,BVAR1,III,ZNT,NNN,BLIM S TEXTSTR=""
  1. Q
  1. PROF ;
  1. F I=0:0 S I=$O(^TMP($J,"PSOMONP",I)) Q:'I S DRG=$P(^TMP($J,"PSOMONP",I,0),"^"),ON=$P(^(0),"^",2),CT=$P(^(0),"^",3),PDRG=$P(^(0),"^",4),SEV=$E($P(^(0),"^",5),1,1) D Q:$D(DUOUT)!($D(DTOUT))
  1. .U IO W @IOF,!,PSONULN,!,"Professional Monograph",!!,"Drug Interaction with ",!,DRG_" and "_PDRG,!!
  1. .F QX=0:0 S QX=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SEV,DRG,ON,CT,"PMON",QX)) Q:'QX D Q:($D(DUOUT)!($D(DTOUT)))
  1. ..I $Y+6>IOSL,$E(IOST)="C" D NEWPG Q:($D(DUOUT)!($D(DTOUT)))
  1. ..S TEXTSTR=^TMP($J,LIST,"OUT","DRUGDRUG",SEV,DRG,ON,CT,"PMON",QX,0) D FORMAT
  1. ..I ($Y+6)>IOSL,$E(IOST)="C" W !
  1. Q:($D(DUOUT)!($D(DTOUT)))
  1. K DTOUT,DUOUT
  1. D:MONT=3
  1. .U IO W @IOF,!,PSONULN,!,"Consumer Monograph",!!,"Drug Interaction with ",!,DRG_" and "_PDRG,!
  1. .F QX=0:0 S QX=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SEV,DRG,ON,CT,"CMON",QX)) Q:'QX D Q:($D(DUOUT)!($D(DTOUT)))
  1. ..I $Y+6>IOSL,$E(IOST)="C" D NEWPG Q:($D(DUOUT)!($D(DTOUT)))
  1. ..W !?5,^TMP($J,LIST,"OUT","DRUGDRUG",SEV,DRG,ON,CT,"CMON",QX,0)
  1. W !,PSONULN,!
  1. K DTOUT,DUOUT I $E(IOST)="C" K DIR S DIR(0)="E" D ^DIR K DIR,DTOUT,DUOUT
  1. Q
  1. CON F I=0:0 S I=$O(^TMP($J,"PSOMONP",I)) Q:'I S DRG=$P(^TMP($J,"PSOMONP",I,0),"^"),ON=$P(^(0),"^",2),CT=$P(^(0),"^",3),PDRG=$P(^(0),"^",4),SEV=$P(^(0),"^",5) D Q:$D(DUOUT)!($D(DTOUT))
  1. .U IO W @IOF,!,"Consumer Monograph",!,PSONULN,!!,"Drug Interaction with ",!,DRG_" and "_PDRG,!!
  1. .F QX=0:0 S QX=$O(^TMP($J,LIST,"OUT","DRUGDRUG",SEV,DRG,ON,CT,"CMON",QX)) Q:'QX D Q:($D(DUOUT)!($D(DTOUT)))
  1. ..I $Y+6>IOSL,$E(IOST)="C" D NEWPG Q:($D(DUOUT)!($D(DTOUT)))
  1. ..W !?5,^TMP($J,LIST,"OUT","DRUGDRUG",DRG,ON,CT,"CMON",QX,0)
  1. I '$G(DUOUT) W !,PSONULN,!
  1. K DTOUT,DUOUT I $E(IOST)="C" K DIR S DIR(0)="E",DIR("A")="Press Return to Continue..." D ^DIR K DIR,DTOUT,DUOUT
  1. Q