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

PSJOCDSD.m

Go to the documentation of this file.
PSJOCDSD ; BIR/MV,RN - PROCESS DOSING ORDER CHECKS ;6 Jun 07  3:37 PM
 ;;5.0;INPATIENT MEDICATIONS;**181,252,281,256,347,358**;16 DEC 97;Build 10
 ;
DISPLAY ;Display dose checks
 NEW PSJPON,PSJDSPFG,PSJCNT0,DR,PSJONLST,PSJBRK
 D FULL^VALM1
 I $D(^TMP($J,"PSJPRE1","OUT")),'$D(PSJEXCPT("PROSPECTIVE")) W @IOF
 Q:'$$DSPSERR^PSJOC("Dosing Checks could not be performed.")
 D EXCEPTN2
 F PSJCNT0=0:0 S PSJCNT0=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0)) Q:'PSJCNT0  Q:$G(PSGORQF)  D
 . S PSJPON="" F  S PSJPON=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON)) Q:PSJPON=""  Q:$G(PSGORQF)  D
 .. Q:PSJPON=0
 .. D ERROR
 .. D EXCEPTN
 .. D WARNING
 I $D(^TMP($J,"PSJPRE1","OUT")),('$D(PSJEXCPT("PROSPECTIVE"))!$G(PSJBRK)),'$G(PSJDSPFG) D PAUSE^PSJLMUT1
 ;I $D(^TMP($J,"PSJPRE1","OUT")),'$G(PSJDSPFG) D PAUSE^PSJLMUT1
 K PSJDSPFG,PSJEXCPT("PROSPECTIVE")
 Q
DOSEOFF(PSJMSG) ;
 ;Display message if dosing had turned off (once per patient session)
 Q:$D(PSJEXCPT("DOSE",0))
 S PSJEXCPT("DOSE",0)=""
 W !!,$G(PSJMSG),!
 D PAUSE^PSJLMUT1
 Q
WARNING ;Display warning messages
 NEW PSJSGLE,PSJRNGE,PSJMSG,PSJDD,PSJTYPE,PSJORI
 ;I ($Y+6)>IOSL D PAUSE^PSJLMUT1 W @IOF
 S PSJMSG="",PSJORI=""
 S (PSJSGLE,PSJRNGE)=0
 S PSJTYPE="" F  S PSJTYPE=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE)) Q:PSJTYPE=""  D
 .IF PSJTYPE=".1_INTRO" SET PSJORI=^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE) D  Q
 ..S PSJBRK=0
 ..I ($Y+6)>IOSL D PAUSE^PSJLMUT1 W @IOF
 ..W !
 ..D WRITE^PSJMISC(PSJORI,1)
 .I PSJTYPE="4_TRAIL" S PSJMSG=^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE) D  Q
 ..I ($Y+6)>IOSL D PAUSE^PSJLMUT1 W @IOF
 ..I ($Y+6)'>IOSL W !
 ..D WRITE^PSJMISC(PSJMSG,3)
 ..S PSJBRK=1
 . I ($Y+4)>IOSL D PAUSE^PSJLMUT1 W @IOF
 . ;Don't display a blank line after Per Orifice text
 . I $G(PSJORI)=""  W !
 . K PSJORI
 . F PSJDD=0:0 S PSJDD=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE,PSJDD)) Q:'PSJDD  D
 .. Q:$G(PSGORQF)
 .. S PSJMSG=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE,PSJDD))
 .. I PSJTYPE="3_GENERAL" D GENERAL
 .. I PSJTYPE'="3_GENERAL" D
 ... S PSJMSG=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE,PSJDD))
 ... D WRITE^PSJMISC(PSJMSG,3)
 .. I PSJTYPE["1_SINGLE_RANGE" S (PSJSGLE,PSJRNGE)=1_U_PSJDD Q
 .. S:PSJTYPE["1_SINGLE" PSJSGLE=1_U_PSJDD
 .. S:PSJTYPE["2_RANGE" PSJRNGE=1_U_PSJDD
 Q:$G(PSGORQF)
 D INTERV
 Q
INTERV ;Process intervention for dosing check
 NEW PSJDD
 S PSJDD=$S(+PSJSGLE:$P(PSJSGLE,U,2),1:$P(PSJRNGE,U,2))
 I 'PSJDD,'$D(PSJOCFG) Q
 K PSJDSPFG
 I +PSJSGLE!+PSJRNGE W ! S PSJDSPFG=1
 I +PSJSGLE,+PSJRNGE D RINTERV^PSJGMRA("MAX SINGLE DOSE & Max Daily Dose") Q
 I +PSJRNGE D RINTERV^PSJGMRA("Max Daily Dose") Q
 I +PSJSGLE D RINTERV^PSJGMRA("MAX SINGLE DOSE") Q
 Q
ERROR ; Process errors
 NEW PSJCNT,PSJNV
 ;Check for system error one more time.
 F PSJCNT=0:0 S PSJCNT=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"ERROR",PSJCNT)) Q:'PSJCNT  D
 . I ($Y+6)>IOSL D PAUSE^PSJLMUT1 W @IOF
 . I ($Y+6)'>IOSL W !!
 . S PSJNV=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"ERROR",PSJCNT,"MSG"))
 . I PSJNV]"" D WRITE^PSJMISC(PSJNV,3)
 . S PSJNV=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"ERROR",PSJCNT,"TEXT"))
 . I PSJNV]"" D WRITE^PSJMISC(PSJNV,5)
 . S PSJNV=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"ERROR",PSJCNT,"TRAIL"))
 . I PSJNV]"" W ! D WRITE^PSJMISC(PSJNV,3)
 Q
EXCEPTN ; Process exceptions
 NEW PSJCNT,PSJNV,PSJSPACE,PSJQFLG1,PSJDSDRG,PSJXDRG,PSJQUIT
 ;Check for system error one more time.
 ;PSJOCFG - flag when order is Renew, Copy or New OE
 S PSJSPACE=0
 I $O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"EXCEPTIONS",0)) D
 .I ($Y+4)>IOSL D PAUSE^PSJLMUT1 W @IOF
 F PSJCNT=0:0 S PSJCNT=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"EXCEPTIONS",PSJCNT)) Q:'PSJCNT  D
 . S PSJQFLG1=0,PSJDSDRG=""
 . S PSJDSDRG=$P($G(^TMP($J,"PSJPRE","IN","DOSE",PSJPON)),U,3)
 . S PSJQUIT=0,PSJXDRG="" F  S PSJXDRG=$O(PSJEXCPT("PROSPECTIVE",PSJXDRG)) Q:PSJXDRG=""  I +PSJXDRG=+PSJDSDRG S PSJQUIT=1 Q
 . Q:PSJQUIT
 . S PSJNV=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"EXCEPTIONS",PSJCNT))
 . I PSJNV]"" D
 .. I $E(PSJNV,1,13)="             " S PSJSPACE=13,PSJNV=$P(PSJNV,"             ",2)
 .. I (PSJNV'["Reason(s)"),+'$G(PSJSPACE) W !
 .. I PSJNV["  Reason(s)" S PSJNV=$P(PSJNV,"  ",2),PSJSPACE=2
 .. D WRITE^PSJMISC(PSJNV,PSJSPACE+3)
 . S PSJNV=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"EXCEPTIONS",PSJCNT,"TRAIL"))
 . I PSJNV]"" W ! D WRITE^PSJMISC(PSJNV,PSJSPACE+3)
 Q
EXCEPTN2 ; Process exceptions on prospective drug
 NEW PSJPON,PSJN,PSJNV
 S PSJPON="" F  S PSJPON=$O(^TMP($J,"PSJPRE1","OUT","EXCEPTIONS",PSJPON)) Q:PSJPON=""  D
 . F PSJN=0:0 S PSJN=$O(^TMP($J,"PSJPRE1","OUT","EXCEPTIONS",PSJPON,PSJN)) Q:'PSJN  D
 .. S PSJNV=$G(^TMP($J,"PSJPRE1","OUT","EXCEPTIONS",PSJPON,PSJN))
 .. I $P(PSJPON,";",3)="PROFILE" Q
 .. I '$$ERRCHK^PSJOC("PROSPECTIVE",$P(PSJNV,U,3)_$P(PSJNV,U,10)) Q
 .. Q:'$D(PSJOCFG)
 .. W !
 .. D DSPDRGER^PSJOC(1)
 Q
GENERAL ;
 NEW PSJGCNT
 F PSJGCNT=0:0 S PSJGCNT=$O(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE,PSJDD,PSJGCNT)) Q:'PSJGCNT  D
 . S PSJMSG=$G(^TMP($J,"PSJPRE1","OUT",PSJCNT0,PSJPON,"MESSAGE",PSJTYPE,PSJDD,PSJGCNT))
 .I ($Y+3)>IOSL D PAUSE^PSJLMUT1 W @IOF
 . D WRITE^PSJMISC(PSJMSG,3)
 Q