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

PSJMON.m

Go to the documentation of this file.
  1. PSJMON ;BIR/MV - Display/Print Monograph ;6 Jun 07 / 3:37 PM
  1. ;;5.0; INPATIENT MEDICATIONS ;**181**;16 DEC 97;Build 190
  1. ;
  1. MON(PSJMON) ;Process monographs
  1. NEW PSJPRTFL,PSJIOF,PSJSERVR
  1. S PSJPRTFL=0,PSJIOF=1
  1. Q:'$$ASK()
  1. D LSTMON(.PSJMON)
  1. D:PSJPRTFL DSPMON
  1. K PSJMON,^TMP($J,"PSJPMON")
  1. Q
  1. ;
  1. ASK(X) ;Ask if user want to see the monograph
  1. NEW PSJX,DIR,DTOUT,DUOUT,DIRUT,Y
  1. S PSJX=$S($G(X):"(s)",1:"")
  1. K DIR S DIR(0)="Y",DIR("A")="Display Professional Interaction Monograph(s)"_PSJX,DIR("B")="NO" D ^DIR
  1. I 'Y K PSJMON W !
  1. Q Y
  1. DSPMON ;
  1. NEW ZTDESC,ZTRTN,ZTSAVE
  1. K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS
  1. I POP K SEL,DIR,DTOUT,DUOUT,DIRUT,MONT W !,"NOTHING PRINTED" Q
  1. I $D(IO("Q")) D Q
  1. .S ZTRTN="OUT^PSJMON",ZTDESC="Monograph Report of Drug Interactions"
  1. .S ZTSAVE("LIST")="",ZTSAVE("^TMP($J,""PSJPMON"",")=""
  1. .D ^%ZTLOAD,^%ZISC W !,"Monograph Queued to Print!",! S:$D(ZTQUEUED) ZTREQ="Q"
  1. D OUT,^%ZISC
  1. Q
  1. OUT ;Print the Professional Monograph
  1. NEW PSJMONV,PSJPN,PSJQUIT,PSJNUM
  1. U IO
  1. S PSJQUIT=0
  1. F PSJNUM=0:0 S PSJNUM=$O(^TMP($J,"PSJPMON",PSJNUM)) Q:'PSJNUM D
  1. .S PSJSERVR="" F S PSJSERVR=$O(^TMP($J,"PSJPMON",PSJNUM,PSJSERVR)) Q:PSJSERVR="" F PSJPN=0:0 S PSJPN=$O(^TMP($J,"PSJPMON",PSJNUM,PSJSERVR,PSJPN)) Q:'PSJPN Q:PSJQUIT=2 D
  1. .. S PSJMONV=^TMP($J,"PSJPMON",PSJNUM,PSJSERVR,PSJPN)
  1. .. I PSJMONV="Professional Monograph " S PSJQUIT=0 D
  1. ... I $G(PSJIOF) K PSJIOF W !! W @IOF Q
  1. ... ;Ignore 1 "^" and display the next mon.
  1. ... I '$G(PSJIOF) W !! S:$E(IOST)="C" PSJQUIT=$$PAUSE1^PSJMISC() S:PSJQUIT=1 PSJQUIT=0 W @IOF
  1. .. I PSJQUIT Q
  1. .. W !,PSJMONV
  1. .. I $Y+4>IOSL,$E(IOST)="C" W ! S PSJQUIT=$$PAUSE1^PSJMISC() W @IOF S:PSJQUIT=1 PSJIOF=1
  1. W !
  1. Q
  1. LSTMON(PSJMON) ;Display a list of monographs to the user & store mon for printing to screen/printer
  1. ;PSJMON(ProfileVaGEN+ProspectiveDrugname,monographTitle)=P1...P11 (PSJMON array groups the same drug pair and title into one selectable choice)
  1. ;PSJMONS(seq no,monographTitle)=P1...P11 (a drug pair may have 1 or more titles. This array is to store title 2 and subsequence)
  1. ;PSJMONLI(n)=P1...P11 (PSJMONLI array keeps the drug pair/monograph in a numeric list)
  1. ;P1 : Sequential #
  1. ;P2 : Drug name (profile)
  1. ;P3 : Profile Drug IEN file 50
  1. ;P4 : Drug name of order being worked on
  1. ;p5 : Drug IEN file 50 from order being worked on
  1. ;P6 : Pharmacy order # (Package;ON;PROFILE/PROSPECTIVE;SEQ # (I;29V;PROFILE;1)
  1. ;P7 : Severity (C: critical, S: significant)
  1. ;P8 : Use by PSJMONLI array (extra PMON for the same pair)
  1. ;P9 : If set to 1, the display will be "CRITICAL/SIGNIFICANT" for severity in the selection drug pair display
  1. ;P10: If set to 1, the package display will be "IO" in the selection drug pair display
  1. ;P11: VA GENERIC name (profile)
  1. NEW DIR,DIRUT,DTOUT,DUOUT,PSJCNT,PSJPON1,PSJMONV,PSJMONTI,PSJDNM,PSJN,PSJPN,PSJS,PSJSEV1,PSJX,PSJX1,PSJY,X,Y
  1. NEW PSJMONLI,PSJMONS
  1. K ^TMP($J,"PSJPMON")
  1. D NUMLST
  1. S PSJY=$O(PSJMONLI(""),-1)
  1. I PSJY>1 S PSJY=$$SELLST(.PSJMONLI)
  1. Q:'+PSJY
  1. S PSJPRTFL=1
  1. S PSJCNT=0
  1. F PSJX1=1:1:$L(PSJY) S PSJX=$P(PSJY,",",PSJX1) Q:PSJX="" D
  1. . S PSJMONV=PSJMONLI(PSJX)
  1. . D SETMON(PSJX1,PSJMONV)
  1. . I +$P(PSJMONV,U,8) S PSJMONTI="" F S PSJMONTI=$O(PSJMONS(PSJX,PSJMONTI)) Q:PSJMONTI="" D
  1. .. S PSJMONV=PSJMONS(PSJX,PSJMONTI) D SETMON(PSJX1,PSJMONV)
  1. Q
  1. SELLST(PSJMONLI) ;Only present selection pair if there are more than 1 pair in the list
  1. NEW DIR,DIRUT,DTOUT,DUOUT,PSJPON1,PSJMONV,PSJS,PSJSEV1,PSJX,X,Y
  1. W !
  1. F PSJX=0:0 S PSJX=$O(PSJMONLI(PSJX)) Q:'PSJX D
  1. . S PSJMONV=PSJMONLI(PSJX)
  1. . F X=1:1:11 S PSJS(X)=$P(PSJMONV,U,X)
  1. . S PSJSEV1=$S(PSJS(9):"CRITICAL/SIGNIFICANT",PSJS(7)="C":"CRITICAL",PSJS(7)="S":"SIGNIFICANT",1:"")
  1. . S PSJPON1=$S(PSJS(10):"IO",$P(PSJS(6),";")="I":"I",1:"O")
  1. . W !,PSJX,". ",$$VAGEN^PSJMISC(PSJS(5))," and ",$P(PSJS(11),"+")," ("_PSJSEV1_" - "_PSJPON1_")"
  1. W !
  1. K DIR S DIR(0)="LO^1:"_$O(PSJMONLI(""),-1),DIR("A")="Select Monograph(s) for printing by number" D ^DIR
  1. Q Y
  1. SETMON(PSJNUM,PSJMONV) ;Setup monograph for screen/prt
  1. ;PSJNUM - selected # from monograph's list
  1. NEW PSJPN,PSJS,X
  1. I $G(PSJMONV)="" Q
  1. Q:'$G(PSJNUM)
  1. F X=1:1:11 S PSJS(X)=$P(PSJMONV,U,X)
  1. S X=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJS(7),PSJS(2),PSJS(6),PSJS(1),"PMON",5,0))
  1. S X=$P(X,"SEVERITY LEVEL: ",2)
  1. S PSJSERVR=PSJS(11)_$E(X,1,1)
  1. D STOREMON("Professional Monograph",PSJSERVR)
  1. S PSJMONV="Drug Interaction with "_$P(PSJS(11),"+")_" and "_$$VAGEN^PSJMISC(PSJS(5))
  1. D STOREMON(PSJMONV,PSJSERVR),STOREMON("",PSJSERVR)
  1. F PSJPN=0:0 S PSJPN=$O(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJS(7),PSJS(2),PSJS(6),PSJS(1),"PMON",PSJPN)) Q:'PSJPN D
  1. . S PSJMONV=$G(^TMP($J,"PSJPRE","OUT","DRUGDRUG",PSJS(7),PSJS(2),PSJS(6),PSJS(1),"PMON",PSJPN,0))
  1. . S PSJCNT=PSJCNT+1
  1. . D STOREMON(PSJMONV,PSJSERVR)
  1. Q
  1. NUMLST ;Set the monograph into a number selectable list
  1. NEW PSJDNM,PSJMONTI,PSJMFLG,PSJN,PSJON1,PSJON2,PSJONFG
  1. S PSJN=0
  1. S PSJDNM="" F S PSJDNM=$O(PSJMON(PSJDNM)) Q:PSJDNM="" S PSJMONTI="",PSJMFLG=0 F S PSJMONTI=$O(PSJMON(PSJDNM,PSJMONTI)) Q:PSJMONTI="" D
  1. . I 'PSJMFLG S PSJN=PSJN+1 S PSJMONLI(PSJN)=PSJMON(PSJDNM,PSJMONTI)
  1. . I PSJMFLG D
  1. .. S PSJMONLI(PSJN)=PSJMONLI(PSJN)_"^^"_PSJN
  1. .. S $P(PSJMONLI(PSJN),U,8)=1
  1. .. S PSJMONS(PSJN,PSJMONTI)=PSJMON(PSJDNM,PSJMONTI)
  1. .. S PSJON1=$P($P(PSJMONLI(PSJN),U,6),";")
  1. .. S PSJON2=$P($P(PSJMONS(PSJN,PSJMONTI),U,6),";")
  1. .. S PSJONFG=0
  1. .. I PSJON1="I",PSJON1'="I" S PSJONFG=1
  1. .. I PSJON1'="I",PSJON1="I" S PSJONFG=1
  1. .. S:PSJONFG $P(PSJMONLI(PSJN),U,10)=1
  1. .. I $P(PSJMONLI(PSJN),U,7)'=$P(PSJMONS(PSJN,PSJMONTI),U,7) S $P(PSJMONLI(PSJN),U,9)=1
  1. . S PSJMFLG=1
  1. K PSJON1,PSJON2,PSJONFG
  1. Q
  1. STOREMON(PSJX,PSJSERVR) ;Store the formatted Monograph
  1. NEW PSJX1,X,Y,Y1
  1. Q:'$G(PSJNUM)
  1. I $G(PSJSERVR)="" S PSJSERVR=1
  1. S PSJCNT=$G(PSJCNT)+1
  1. S X="REFERENCES:"
  1. I $E(PSJX,1,$L(X))=X S ^TMP($J,"PSJPMON",PSJNUM,PSJSERVR,PSJCNT)=X,PSJCNT=PSJCNT+1 S PSJX=$P(PSJX,X,2)
  1. S PSJX1=""
  1. F Y=1:1:$L(PSJX," ") S Y1=$P(PSJX," ",Y) D
  1. . I ($L(PSJX1)+$L(Y1)+1)>73 S:$E(PSJX1,1,1)=" " PSJX1=$E(PSJX1,2,$L(PSJX1)) S ^TMP($J,"PSJPMON",PSJNUM,PSJSERVR,PSJCNT)=PSJX1,PSJX1="",PSJCNT=PSJCNT+1
  1. . S PSJX1=PSJX1_Y1_" "
  1. I PSJX1]"" S ^TMP($J,"PSJPMON",PSJNUM,PSJSERVR,PSJCNT)=PSJX1
  1. K PSJX1
  1. Q