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

PSSDSEXD.m

Go to the documentation of this file.
  1. PSSDSEXD ;BIR/CMF-Exceptions for Dose call Continuation ;02/24/09
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**178,206,224**;9/30/97;Build 3
  1. ;
  1. ;Called from PSSDSEXC, this routine takes the results from the call to First DataBank and creates displayable TMP
  1. ;globals for the calling applications. Typically, PSSDBASA indicates a CPRS call, and PSSDBASB indicates a pharmacy call
  1. ;
  1. ;PSSDBCAR ARRAY pieces, set mostly in PSSDSAPD are described in PSSDSEXC:
  1. ;
  1. ;PSSDBCAX holds the errors to show
  1. ;
  1. CONTINUE ;;
  1. S:$G(PSSDBDS("CONTEXT"))="" PSSDBDS("CONTEXT")=$S(+PSSDSWHE=1:"CPRS-UD",1:"OP-UD")
  1. D TWEAK4^PSSDSEXE
  1. D TWEAK0
  1. D:($P($G(PSSDBDS("CONTEXT")),"-",1,2)="IP-IV")!($P($G(PSSDBDS("CONTEXT")),"-",1,2)="IP-UD") TWEAK1
  1. D:($P($G(PSSDBDS("CONTEXT")),"-",1,2)="CPRS-IV")!($P($G(PSSDBDS("CONTEXT")),"-",1,2)="CPRS-UD") TWEAK2
  1. D:$P($G(PSSDBDS("CONTEXT")),"-",2,3)="IV-I" TWEAK3
  1. Q
  1. ;;
  1. TWEAK0 ;; loop through ERROR global remove/convert certain duplicates
  1. N PSSDWLP,PSSDWL1
  1. S PSSDWLP=""
  1. F S PSSDWLP=$O(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP)) Q:PSSDWLP="" D
  1. .S PSSDWL1=""
  1. .F S PSSDWL1=$O(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1)) Q:PSSDWL1="" D
  1. ..Q:$$TWEAK001(PSSDWLP,PSSDWL1)
  1. ..Q:$$TWEAK01(PSSDWLP,PSSDWL1)
  1. ..Q:$$TWEAK02(PSSDWLP,PSSDWL1)
  1. ..Q:$$TWEAK03(PSSDWLP,PSSDWL1)
  1. ..Q:$$TWEAK04(PSSDWLP,PSSDWL1)
  1. Q
  1. ;;
  1. TWEAK001(PSSDWLP,PSSDWL1) ;;
  1. Q $$TWEAK27^PSSDSEXE(PSSDWLP,PSSDWL1)
  1. ;;
  1. TWEAK01(PSSDWLP,PSSDWL1) ;; remove dummy and duplicate weight required errors
  1. N REASON,MESSAGE,FLAG,PSSDWLX,PSSDWE2,PSSREPL
  1. S REASON=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")),".",1)
  1. S (FLAG,FLAG(1))=0
  1. D:REASON="Weight required"
  1. .;; first, wipe out if obtained from dummy data
  1. .I $P(PSSDBCAR(PSSDWLP),U,6)=1 K ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1) S FLAG=1 Q
  1. .;; then, look for & scrub duplicates
  1. .S MESSAGE=$G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG"))
  1. .S PSSDWLX=PSSDWL1
  1. .F S PSSDWLX=$O(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)) Q:'PSSDWLX D
  1. ..S REASON(1)=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX,"TEXT")),".",1)
  1. ..Q:REASON'=REASON(1)
  1. ..S MESSAGE(1)=$G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX,"MSG"))
  1. ..S:MESSAGE'=MESSAGE(1) FLAG(1)=1 ;; if different message, set Dosing Checks message
  1. ..K ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)
  1. ..K:PSSDBASA ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)
  1. ..K:PSSDBASB ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWLX)
  1. ..S FLAG=1
  1. .;; finally, alter reason for calls from CPRS
  1. .D:+$G(PSSDSWHE)=1!(FLAG(1)=1)
  1. ..S:FLAG(1)=1 MESSAGE=$$CHECKMSG(PSSDWLP)_" could not be "_$S(PSSDSWHE=1:"done",1:"performed")_" for Drug: "_$P(PSSDBCAR(PSSDWLP),U,2)
  1. ..D:PSSDSWHE=1
  1. ...S PSSREPL("performed")="done"
  1. ...S MESSAGE=$$REPLACE^XLFSTR(MESSAGE,.PSSREPL)_"."
  1. ...S PSSREPL(":.")="."
  1. ...S MESSAGE=$$REPLACE^XLFSTR(MESSAGE,.PSSREPL)
  1. ..S REASON=$S(+$G(PSSDSWHE)=0:"Weight required.",1:"No weight documented for patient.")
  1. ..S ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")=REASON
  1. ..D:PSSDBASA
  1. ...S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ...S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")="Reason(s): "_REASON
  1. ..D:PSSDBASB
  1. ...S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"MSG")=MESSAGE
  1. ...S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"TEXT")="Reason(s): "_REASON
  1. ..Q
  1. .D:$$SHOGEN(PSSDWLP) GETGNRL(PSSDWLP)
  1. .S $P(PSSDBCAR(PSSDWLP),U,25)=1
  1. .S $P(PSSDBCAR(PSSDWLP),U,27)=1
  1. .Q
  1. Q FLAG
  1. ;;
  1. TWEAK02(PSSDWLP,PSSDWL1) ;; massage BSA required errors
  1. N REASON,MESSAGE,FLAG,PSSDWLX,PSSDWE2
  1. S REASON=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")),".",1)
  1. S (FLAG,FLAG(1))=0
  1. D:REASON="Body surface area required"
  1. .;; first, wipe out if obtained from dummy data
  1. .I $P(PSSDBCAR(PSSDWLP),U,6)=1 K ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1) S FLAG=1 Q
  1. .;; then, look for & scrub duplicates
  1. .S MESSAGE=$G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG"))
  1. .S PSSDWLX=PSSDWL1
  1. .F S PSSDWLX=$O(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)) Q:'PSSDWLX D
  1. ..S REASON(1)=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX,"TEXT")),".",1)
  1. ..Q:REASON'=REASON(1)
  1. ..S MESSAGE(1)=$G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX,"MSG"))
  1. ..S:MESSAGE'=MESSAGE(1) FLAG(1)=1 ;; if different message, set Dosing Checks message
  1. ..K ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)
  1. ..K:PSSDBASA ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWLX)
  1. ..K:PSSDBASB ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWLX)
  1. ..S FLAG=1
  1. .;; finally, alter reason for calls from CPRS
  1. .D:+$G(PSSDSWHE)=1!(FLAG(1)=1)
  1. ..S:FLAG(1)=1 MESSAGE=$$CHECKMSG(PSSDWLP)_" could not be "_$S(PSSDSWHE=1:"done",1:"performed")_" for Drug: "_$P(PSSDBCAR(PSSDWLP),U,2)
  1. ..D:PSSDSWHE=1
  1. ...S PSSREPL("performed")="done"
  1. ...S MESSAGE=$$REPLACE^XLFSTR(MESSAGE,.PSSREPL)_"."
  1. ...S PSSREPL(":.")="."
  1. ...S MESSAGE=$$REPLACE^XLFSTR(MESSAGE,.PSSREPL)
  1. ..S REASON=$S(+$G(PSSDSWHE)=0:"Body surface area required.",1:"No weight and/or height documented for patient.")
  1. ..S ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")=REASON
  1. ..D:PSSDBASA
  1. ...S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ...S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")="Reason(s): "_REASON
  1. ..D:PSSDBASB
  1. ...S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"MSG")=MESSAGE
  1. ...S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"TEXT")="Reason(s): "_REASON
  1. ..Q
  1. .D:$$SHOGEN(PSSDWLP) GETGNRL(PSSDWLP)
  1. .S $P(PSSDBCAR(PSSDWLP),U,26)=1
  1. .S $P(PSSDBCAR(PSSDWLP),U,27)=1
  1. .Q
  1. Q FLAG
  1. ;;
  1. TWEAK03(PSSDWLP,PSSDWL1) ;; convert 'Not screened' fdb messages, remove all exceptions
  1. N SEVERITY,ROUTE,REASON,MESSAGE,FLAG
  1. S SEVERITY=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"SEV")),".",1)
  1. S FLAG=0
  1. D:SEVERITY="NotScreened"
  1. .S $P(PSSDBCAR(PSSDWLP),U,30)=1
  1. .S MESSAGE=$$CHECKMSG(PSSDWLP)_" could not be "_$S(+$G(PSSDSWHE)=1:"done",1:"performed")_" for Drug: "_$P(PSSDBCAR(PSSDWLP),U,2)_$S(+$G(PSSDSWHE)=1:"",1:":")
  1. .D:+$G(PSSDSWHE)=0
  1. ..;S MESSAGE=$$CHECKMSG(PSSDWLP)_" could not be performed for Drug: "_$P(PSSDBCAR(PSSDWLP),U,2)
  1. ..S REASON=$G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT"))
  1. .D:+$G(PSSDSWHE)=1
  1. ..S MESSAGE=MESSAGE_", please complete a manual check for appropriate Dosing."
  1. ..;S MESSAGE=$$CHECKMSG(PSSDWLP)_" could not be done for Drug: "_$P(PSSDBCAR(PSSDWLP),U,2)_", please complete a manual check for appropriate Dosing."
  1. ..S REASON=""
  1. .K ^TMP($J,PSSDBASE,"OUT","EXCEPTIONS",PSSDWLP)
  1. .K ^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWLP)
  1. .D:PSSDBASA
  1. ..S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")=REASON
  1. ..K ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWLP)
  1. .D:PSSDBASB
  1. ..S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"TEXT")="Reason(s): "_REASON
  1. ..K ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"EXCEPTIONS")
  1. .S FLAG=1
  1. .S $P(PSSDBCAR(PSSDWLP),U,27)=1
  1. .Q
  1. Q FLAG
  1. ;;
  1. TWEAK04(PSSDWLP,PSSDWL1) ;; convert/set warning fdb messages
  1. N SEVERITY,REASON,MESSAGE,FLAG
  1. S SEVERITY=$P($G(^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"SEV")),".",1)
  1. S FLAG=0
  1. D:SEVERITY="Warning"
  1. .S MESSAGE=$$DOSEMSG^PSSHRVL1($P(PSSDBCAR(PSSDWLP),U,2),$S(($P(PSSDBCAR(PSSDWLP),U,1)="S")&(+$P(PSSDBCAR(PSSDWLP),U,8)=0):"S",$P(PSSDBCAR(PSSDWLP),U,15)=1:"S",1:""),"W")
  1. .S ^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. .S REASON=^TMP($J,PSSDBASE,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")
  1. .; IP/OP/CPRS messages are the same
  1. .D:PSSDBASA
  1. ..S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASF,"OUT","DOSE","ERROR",PSSDWLP,PSSDWL1,"TEXT")=REASON
  1. .D:PSSDBASB
  1. ..S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"MSG")=MESSAGE
  1. ..S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"ERROR",PSSDWL1,"TEXT")=REASON
  1. .S FLAG=1
  1. .S $P(PSSDBCAR(PSSDWLP),U,27)=1
  1. .Q
  1. Q FLAG
  1. ;;
  1. SHOGEN(PSSDWE5) ;;
  1. N PSSDWGFB
  1. S PSSDWGFB=0
  1. Q $$SHOGEN^PSSDSEXC()
  1. ;;
  1. GETGNRL(PSSDWLP) ;; set General Dosing info for missing weight/BSA
  1. N DRUGNAME,DRUGIEN,MESSAGE
  1. S DRUGNAME=$P(PSSDBCAR(PSSDWLP),U,2)
  1. S DRUGIEN=$P(PSSDBCAR(PSSDWLP),U,3)
  1. Q:(DRUGNAME="")!(DRUGIEN="")
  1. D:'$D(^TMP($J,PSSDBASE,"OUT","DOSE",PSSDWLP,DRUGNAME,"GENERAL","MESSAGE",DRUGIEN))
  1. .K ^TMP($J,"PSSDSEXD")
  1. .M ^TMP($J,"PSSDSEXD","IN")=^TMP($J,PSSDBASE,"IN")
  1. .S:+^TMP($J,"PSSDSEXD","IN","DOSE","BSA")'>0 ^("BSA")=1
  1. .S:+^TMP($J,"PSSDSEXD","IN","DOSE","WT")'>0 ^("WT")=1
  1. .D IN^PSSHRQ2("PSSDSEXD")
  1. .Q:$D(^TMP($J,"PSSDSEXD","OUT","EXCEPTIONS"))
  1. .S ^TMP($J,PSSDBASE,"OUT","DOSE",PSSDWLP,DRUGNAME,"GENERAL","MESSAGE",DRUGIEN)=^TMP($J,"PSSDSEXD","OUT","DOSE",PSSDWLP,DRUGNAME,"GENERAL","MESSAGE",DRUGIEN)
  1. I $D(^TMP($J,"PSSDSEXD","OUT","EXCEPTIONS")) K ^TMP($J,"PSSDSEXD") Q
  1. S MESSAGE=^TMP($J,PSSDBASE,"OUT","DOSE",PSSDWLP,DRUGNAME,"GENERAL","MESSAGE",DRUGIEN)
  1. I PSSDBASA S ^TMP($J,PSSDBASF,"OUT","DOSE",PSSDWLP,DRUGNAME,"3_GENERAL","MESSAGE",DRUGIEN,1)=MESSAGE
  1. I PSSDBASB S ^TMP($J,PSSDBASG,"OUT",PSSDWLP,"MESSAGE","3_GENERAL",DRUGIEN,1)=MESSAGE
  1. K ^TMP($J,"PSSDSEXD")
  1. Q
  1. ;;
  1. TWEAK1 ;; loop through EXCEPTION global, test for five IV related tweaks
  1. N PSSDWEX2,PSSDWE2,NODE
  1. S PSSDWEX2=""
  1. F S PSSDWEX2=$O(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2)) Q:PSSDWEX2="" D
  1. .S PSSDWE2=""
  1. .F S PSSDWE2=$O(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2)) Q:PSSDWE2="" D
  1. ..S NODE=$G(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2))
  1. ..Q:NODE=""
  1. ..Q:$$TWEAK11(NODE)
  1. ..Q:$$TWEAK12(NODE)
  1. ..Q:$$TWEAK13(NODE)
  1. ..Q:$$TWEAK14(NODE)
  1. ..Q:$$TWEAK15(NODE)
  1. Q
  1. ;;
  1. TWEAK11(NODE) ;;
  1. N REASON,MESSAGE
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="DRUG NOT MATCHED TO NDF" 0
  1. S MESSAGE=$$CHECKMSG(PSSDWEX2)_" could not be performed for Drug: "_$P(PSSDBCAR(PSSDWEX2),U,2)
  1. S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,7)=MESSAGE
  1. S:PSSDBASA ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,1)=MESSAGE
  1. S:PSSDBASB ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS",1)=MESSAGE
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. TWEAK12(NODE) ;;
  1. N REASON
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="NO GCNSEQNO EXISTS FOR VA PRODUCT" 0
  1. Q:$$EXMT^PSSDSAPI($P(PSSDBCAR(PSSDWEX2),U,3))=0 0
  1. K ^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2)
  1. K:PSSDBASA ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2)
  1. K:PSSDBASB ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS")
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. TWEAK13(NODE) ;;
  1. N REASON,MESSAGE
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="NO GCNSEQNO EXISTS FOR VA PRODUCT" 0
  1. Q:$$EXMT^PSSDSAPI($P(PSSDBCAR(PSSDWEX2),U,3))=1 0
  1. S MESSAGE=$$CHECKMSG(PSSDWEX2)_" could not be performed for Drug: "_$P(PSSDBCAR(PSSDWEX2),U,2)_", please complete a manual check for appropriate Dosing."
  1. S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,7)=MESSAGE
  1. S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,10)=""
  1. D:PSSDBASA
  1. .S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,1)=MESSAGE
  1. .S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,2)=""
  1. D:PSSDBASB
  1. .S ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS",1)=MESSAGE
  1. .S ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS",2)=""
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. TWEAK14(NODE) ;;
  1. N REASON
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="BAD GCNSEQNO ASSIGNED TO VA PRODUCT" 0
  1. Q:$$EXMT^PSSDSAPI($P(PSSDBCAR(PSSDWEX2),U,3))=0 0
  1. K ^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2)
  1. K:PSSDBASA ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2)
  1. K:PSSDBASB ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS")
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. TWEAK15(NODE) ;;
  1. N REASON,MESSAGE
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="BAD GCNSEQNO ASSIGNED TO VA PRODUCT" 0
  1. Q:$$EXMT^PSSDSAPI($P(PSSDBCAR(PSSDWEX2),U,3))=1 0
  1. S MESSAGE=$$CHECKMSG(PSSDWEX2)_" could not be performed for Drug: "_$P(PSSDBCAR(PSSDWEX2),U,2)_", please complete a manual check for appropriate Dosing."
  1. S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,7)=MESSAGE
  1. S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,10)=""
  1. D:PSSDBASA
  1. .S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,1)=MESSAGE
  1. .S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,2)=""
  1. D:PSSDBASB
  1. .S ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS",1)=MESSAGE
  1. .S ^TMP($J,PSSDBASG,"OUT",PSSDWEX2,"EXCEPTIONS",2)=""
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. TWEAK2 ;; loop through exception global, look for OR related tweaks
  1. D TWEAK2^PSSDSEXE
  1. Q
  1. ;;
  1. TWEAK3 ;; ensure itermittent with certain exceptions have general dosing info
  1. N PSSDWEX2,PSSDWE2,NODE
  1. S PSSDWEX2=""
  1. F S PSSDWEX2=$O(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2)) Q:PSSDWEX2="" D
  1. .S PSSDWE2=""
  1. .F S PSSDWE2=$O(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2)) Q:PSSDWE2="" D
  1. ..S NODE=$G(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2))
  1. ..Q:NODE=""
  1. ..Q:$$TWEAK31(NODE)
  1. Q
  1. ;;
  1. TWEAK31(NODE) ;; itermittent with bad frequency
  1. N REASON,MESSAGE
  1. S REASON=$$UP^XLFSTR($P(NODE,U,10))
  1. Q:REASON'="INVALID OR UNDEFINED FREQUENCY" 0
  1. ; -- RTC 165417
  1. D:PSSDBASA
  1. . S MESSAGE="Max Daily Dose Check could not be done for Drug: "_$P(PSSDBCAR(PSSDWEX2),U,2)_", please complete a manual check for appropriate Dosing."
  1. . S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,7)=MESSAGE
  1. . S $P(^TMP($J,PSSDBASE,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,PSSDWE2),U,10)=""
  1. . S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,1)=MESSAGE
  1. . S ^TMP($J,PSSDBASF,"OUT","EXCEPTIONS","DOSE",PSSDWEX2,2)=""
  1. D:$$SHOGEN(PSSDWEX2) GETGNRL3^PSSDSEXE(PSSDWEX2)
  1. S $P(PSSDBCAR(PSSDWEX2),U,27)=1
  1. Q 1
  1. ;;
  1. CHECKMSG(PSSLOOP) ;; max single if single dose, excluded or complex, else dosing
  1. Q $S(($P(PSSDBCAR(PSSLOOP),U,5)=0)!($P(PSSDBCAR(PSSLOOP),U,15)=1)!($$ISCMPLEX(PSSLOOP)):"Maximum Single Dose Check",$P(PSSDBCAR(PSSLOOP),U,30)=1:"Dosing Order Checks",1:$$ISCMPLET^PSSDSEXE(PSSLOOP)) ;;,1)"Dosing Checks")
  1. ;;
  1. ISCMPLEX(PSSLOOP) ;; is complex order
  1. Q $S($P(PSSDBCAR(PSSLOOP),U,16)=1:1,$P(PSSLOOP,";",5):1,1:0)
  1. ;;