PSSHRQ24 ;WOIFO/AV,TS,SG,CF - Parses out drugsNotChecked and DrugDoseCheck XML (cont) ;09/20/07
;;1.0;PHARMACY DATA MANAGEMENT;**178,206,224**;9/30/97;Build 3
;
; @authors - Alex Vazquez, Tim Sabat, Steve Gordon, Chris Flegel
; @date - June 23, 2014
; @version - 1.0
;
QUIT
;
DOSEWRIT(HASH,BASE) ;
; @DESC Handles writing the drug dose output global
;
; @HASH Variable containing drug dose values
; @BASE Base of output global
;
; @RETURNS Nothing
;
NEW I,NODE,QT,IEN,PSSFSCO,PSSFSCB,PSSFSCN,PSSFSCI
;get dose form flag
;
SET QT=""""
SET I=""
FOR SET I=$ORDER(HASH(I)) QUIT:I=""!('I) DO
. SET NODE="^TMP($JOB,BASE,""OUT"",""DOSE"",HASH(I,""orderNumber""),HASH(I,""drugName""))"
. SET IEN=HASH(I,"ien")
. ;
. ; Single values
. I $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseStatus") SET @NODE@("SINGLE","STATUS",IEN)=HASH(I,"singleDoseStatus")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseStatusCode") SET @NODE@("SINGLE","STATUSCODE",IEN)=HASH(I,"singleDoseStatusCode")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseMessage") SET @NODE@("SINGLE","MESSAGE",IEN)=HASH(I,"singleDoseMessage")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseMax") SET @NODE@("SINGLE","MAX",IEN)=HASH(I,"singleDoseMax")
. ; Range values
. I $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseLow") SET @NODE@("RANGE","LOW",IEN)=HASH(I,"rangeDoseLow")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseHigh") SET @NODE@("RANGE","HIGH",IEN)=HASH(I,"rangeDoseHigh")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseStatus") SET @NODE@("RANGE","STATUS",IEN)=HASH(I,"rangeDoseStatus")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseStatusCode") SET @NODE@("RANGE","STATUSCODE",IEN)=HASH(I,"rangeDoseStatusCode")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseMessage") SET @NODE@("RANGE","MESSAGE",IEN)=HASH(I,"rangeDoseMessage")
. ;set general dose form data
. I $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormHigh") SET @NODE@("GENERAL","DOSEFORMHIGH",IEN)=HASH(I,"doseFormHigh")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormHighUnit") SET @NODE@("GENERAL","DOSEFORMHIGHUNIT",IEN)=HASH(I,"doseFormHighUnit")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormLow") SET @NODE@("GENERAL","DOSEFORMLOW",IEN)=HASH(I,"doseFormLow")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormLowUnit") SET @NODE@("GENERAL","DOSEFORMLOWUNIT",IEN)=HASH(I,"doseFormLowUnit")
. ; General subscript values
. SET @NODE@("GENERAL","DOSEHIGH",IEN)=HASH(I,"doseHigh")
. SET @NODE@("GENERAL","DOSEHIGHUNIT",IEN)=HASH(I,"doseHighUnit")
. SET @NODE@("GENERAL","DOSELOW",IEN)=HASH(I,"doseLow")
. SET @NODE@("GENERAL","DOSELOWUNIT",IEN)=HASH(I,"doseLowUnit")
. SET @NODE@("GENERAL","DOSEROUTEDESCRIPTION",IEN)=HASH(I,"doseRouteDescription")
. SET @NODE@("GENERAL","MESSAGE",IEN)=$$BUILDMSG^PSSHRQ25(I,.HASH)
. ; "CHEMO" value, if any
. I $$CHKVAL^PSSHRQ23(.HASH,I,"chemoInjectable") SET @NODE@("CHEMO")=HASH(I,"chemoInjectable")
. ; Daily values
. I $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseStatus") SET @NODE@("DAILY","STATUS",IEN)=HASH(I,"dailyDoseStatus")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseStatusCode") SET @NODE@("DAILY","STATUSCODE",IEN)=HASH(I,"dailyDoseStatusCode")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseMessage") SET @NODE@("DAILY","MESSAGE",IEN)=HASH(I,"dailyDoseMessage")
. ; Max Daily values
. I $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseStatus") SET @NODE@("DAILYMAX","STATUS",IEN)=HASH(I,"maxDailyDoseStatus")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseStatusCode") SET @NODE@("DAILYMAX","STATUSCODE",IEN)=HASH(I,"maxDailyDoseStatusCode")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseMessage") SET @NODE@("DAILYMAX","MESSAGE",IEN)=HASH(I,"maxDailyDoseMessage")
. ; general maximum life time dose
. I $$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeDose") SET @NODE@("MAXLIFETIME","DOSE",IEN)=HASH(I,"maxLifetimeDose")
. ; Frequency values, if any
. I $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyStatus") SET @NODE@("FREQ","FREQUENCYSTATUS",IEN)=HASH(I,"frequencyStatus")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyStatusCode") SET @NODE@("FREQ","FREQUENCYSTATUSCODE",IEN)=HASH(I,"frequencyStatusCode")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyMessage") SET @NODE@("FREQ","FREQUENCYMESSAGE",IEN)=HASH(I,"frequencyMessage")
. I $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyHigh") SET @NODE@("FREQ","FREQUENCYHIGH",IEN)=HASH(I,"frequencyHigh") D CSTMFREQ(.HASH,I,NODE,IEN)
. I $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyLow") SET @NODE@("FREQ","FREQUENCYLOW",IEN)=HASH(I,"frequencyLow") D CSTMFREQ(.HASH,I,NODE,IEN)
. ; dose percent elements
. D:$D(HASH(I,"single"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"single","","")
. D:$D(HASH(I,"rangeLow"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"rangeLow","","")
. D:$D(HASH(I,"rangeHigh"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"rangeHigh","","")
. D:$D(HASH(I,"daily"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"daily","","")
. D:$D(HASH(I,"maxDaily"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxDaily","DAILYMAX","")
. D:$D(HASH(I,"maxLifetime"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxLifetime","","")
. D:$D(HASH(I,"maxLifetimeOrder"))=10 WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxLifetimeOrder","","")
. ;;
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderMessage") @NODE@("MAXLIFETIMEORDER","MESSAGE",IEN)=HASH(I,"maxLifetimeOrderMessage")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderStatus") @NODE@("MAXLIFETIMEORDER","STATUS",IEN)=HASH(I,"maxLifetimeOrderStatus")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderStatusCode") @NODE@("MAXLIFETIMEORDER","STATUSCODE",IEN)=HASH(I,"maxLifetimeOrderStatusCode")
. ;;
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDose") @NODE@("MAXSINGLENTE","DOSE",IEN)=HASH(I,"maxSingleNTEDose")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseUnit") @NODE@("MAXSINGLENTE","DOSEUNIT",IEN)=HASH(I,"maxSingleNTEDoseUnit")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseForm") @NODE@("MAXSINGLENTE","DOSEFORM",IEN)=HASH(I,"maxSingleNTEDoseForm")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseFormUnit") @NODE@("MAXSINGLENTE","DOSEFORMUNIT",IEN)=HASH(I,"maxSingleNTEDoseFormUnit")
. ;;
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDose") @NODE@("DAILYMAX","DOSE",IEN)=HASH(I,"maxDailyDose")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseUnit") @NODE@("DAILYMAX","DOSEUNIT",IEN)=HASH(I,"maxDailyDoseUnit")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseForm") @NODE@("DAILYMAX","DOSEFORM",IEN)=HASH(I,"maxDailyDoseForm")
. S:$$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseFormUnit") @NODE@("DAILYMAX","DOSEFORMUNIT",IEN)=HASH(I,"maxDailyDoseFormUnit")
. ;;
.;
.; -- in 2.1 if max daily dose frequency out of range flag=1 perform max daily dose check
. I $G(HASH(I,"orderNumber"))]"",$P($G(PSSDBCAR($G(HASH(I,"orderNumber")))),"^",29) D
. . S PSSFSCO=HASH(I,"orderNumber"),PSSFSCB=BASE,PSSFSCN=HASH(I,"drugName"),PSSFSCI=HASH(I,"ien") D MAXD^PSSDSUTA(PSSFSCO,PSSFSCB,PSSFSCN,PSSFSCI,.PSSDBCAR)
. QUIT
;
QUIT
;;
CSTMFREQ(HASH,I,NODE,IEN) ;; build customized frequency message
N MSG,LOW,LOWI,LOWS,LOWR,LOWSWAP,HIGH,HIGHI,HIGHS,HIGHR,HIGHSWAP
Q:$D(@NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN))
S (LOWS,HIGHS)=0
S MSG="Recommended frequency of "_$G(HASH(I,"drugName"))
S LOW=$G(HASH(I,"frequencyLow"))
S:+$P(LOW,".",2)=0 LOW=$P(LOW,".")
S HIGH=$G(HASH(I,"frequencyHigh"))
S:+$P(HIGH,".",2)=0 HIGH=$P(HIGH,".")
I (LOW="")!(HIGH="")!(+LOW=0)!(+HIGH=0)!(+LOW<0)!(+HIGH<0) S @NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN)=MSG_" is unavailable." Q
D:LOW<1
.S LOWI=+$P(1/LOW,".",1)
.S LOWR=$E(+$P(1/LOW,".",2),1)
.S LOWR=$S(LOWR>4:1,1:0)
.S LOW=LOWI+LOWR
.S LOWS=1
D:HIGH<1
.S HIGHI=+$P(1/HIGH,".",1)
.S HIGHR=$E(+$P(1/HIGH,".",2),1)
.S HIGHR=$S(HIGHR>4:1,1:0)
.S HIGH=HIGHI+HIGHR
.S HIGHS=1
D:(HIGH<LOW)&(LOWS=1)&(HIGHS=1)
.S HIGHSWAP=HIGH
.S LOWSWAP=LOW
.S LOW=HIGHSWAP
.S HIGH=LOWSWAP
I HIGH=LOW D
.I HIGHS=0 S MSG=MSG_" is "_HIGH_" time(s) per day."
.E S MSG=MSG_" is every "_HIGH_" days."
.Q
I HIGH'=LOW D
.I LOWS+HIGHS=0 S MSG=MSG_" is "_LOW_" to "_HIGH_" times per day." Q
.I (LOWS=1)&(HIGHS=0) D Q
..S:LOW'=1 MSG=MSG_" is every "_LOW_" day(s) to "_HIGH_" time(s) per day."
..S:LOW=1 MSG=MSG_" is "_LOW_" to "_HIGH_" time(s) per day."
.S MSG=MSG_" is every "_LOW_" day(s) to "_HIGH_" days."
.Q
S @NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN)=MSG
Q
;;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSHRQ24 8279 printed Oct 16, 2024@18:32:40 Page 2
PSSHRQ24 ;WOIFO/AV,TS,SG,CF - Parses out drugsNotChecked and DrugDoseCheck XML (cont) ;09/20/07
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**178,206,224**;9/30/97;Build 3
+2 ;
+3 ; @authors - Alex Vazquez, Tim Sabat, Steve Gordon, Chris Flegel
+4 ; @date - June 23, 2014
+5 ; @version - 1.0
+6 ;
+7 QUIT
+8 ;
DOSEWRIT(HASH,BASE) ;
+1 ; @DESC Handles writing the drug dose output global
+2 ;
+3 ; @HASH Variable containing drug dose values
+4 ; @BASE Base of output global
+5 ;
+6 ; @RETURNS Nothing
+7 ;
+8 NEW I,NODE,QT,IEN,PSSFSCO,PSSFSCB,PSSFSCN,PSSFSCI
+9 ;get dose form flag
+10 ;
+11 SET QT=""""
+12 SET I=""
+13 FOR
SET I=$ORDER(HASH(I))
if I=""!('I)
QUIT
Begin DoDot:1
+14 SET NODE="^TMP($JOB,BASE,""OUT"",""DOSE"",HASH(I,""orderNumber""),HASH(I,""drugName""))"
+15 SET IEN=HASH(I,"ien")
+16 ;
+17 ; Single values
+18 IF $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseStatus")
SET @NODE@("SINGLE","STATUS",IEN)=HASH(I,"singleDoseStatus")
+19 IF $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseStatusCode")
SET @NODE@("SINGLE","STATUSCODE",IEN)=HASH(I,"singleDoseStatusCode")
+20 IF $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseMessage")
SET @NODE@("SINGLE","MESSAGE",IEN)=HASH(I,"singleDoseMessage")
+21 IF $$CHKVAL^PSSHRQ23(.HASH,I,"singleDoseMax")
SET @NODE@("SINGLE","MAX",IEN)=HASH(I,"singleDoseMax")
+22 ; Range values
+23 IF $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseLow")
SET @NODE@("RANGE","LOW",IEN)=HASH(I,"rangeDoseLow")
+24 IF $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseHigh")
SET @NODE@("RANGE","HIGH",IEN)=HASH(I,"rangeDoseHigh")
+25 IF $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseStatus")
SET @NODE@("RANGE","STATUS",IEN)=HASH(I,"rangeDoseStatus")
+26 IF $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseStatusCode")
SET @NODE@("RANGE","STATUSCODE",IEN)=HASH(I,"rangeDoseStatusCode")
+27 IF $$CHKVAL^PSSHRQ23(.HASH,I,"rangeDoseMessage")
SET @NODE@("RANGE","MESSAGE",IEN)=HASH(I,"rangeDoseMessage")
+28 ;set general dose form data
+29 IF $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormHigh")
SET @NODE@("GENERAL","DOSEFORMHIGH",IEN)=HASH(I,"doseFormHigh")
+30 IF $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormHighUnit")
SET @NODE@("GENERAL","DOSEFORMHIGHUNIT",IEN)=HASH(I,"doseFormHighUnit")
+31 IF $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormLow")
SET @NODE@("GENERAL","DOSEFORMLOW",IEN)=HASH(I,"doseFormLow")
+32 IF $$CHKVAL^PSSHRQ23(.HASH,I,"doseFormLowUnit")
SET @NODE@("GENERAL","DOSEFORMLOWUNIT",IEN)=HASH(I,"doseFormLowUnit")
+33 ; General subscript values
+34 SET @NODE@("GENERAL","DOSEHIGH",IEN)=HASH(I,"doseHigh")
+35 SET @NODE@("GENERAL","DOSEHIGHUNIT",IEN)=HASH(I,"doseHighUnit")
+36 SET @NODE@("GENERAL","DOSELOW",IEN)=HASH(I,"doseLow")
+37 SET @NODE@("GENERAL","DOSELOWUNIT",IEN)=HASH(I,"doseLowUnit")
+38 SET @NODE@("GENERAL","DOSEROUTEDESCRIPTION",IEN)=HASH(I,"doseRouteDescription")
+39 SET @NODE@("GENERAL","MESSAGE",IEN)=$$BUILDMSG^PSSHRQ25(I,.HASH)
+40 ; "CHEMO" value, if any
+41 IF $$CHKVAL^PSSHRQ23(.HASH,I,"chemoInjectable")
SET @NODE@("CHEMO")=HASH(I,"chemoInjectable")
+42 ; Daily values
+43 IF $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseStatus")
SET @NODE@("DAILY","STATUS",IEN)=HASH(I,"dailyDoseStatus")
+44 IF $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseStatusCode")
SET @NODE@("DAILY","STATUSCODE",IEN)=HASH(I,"dailyDoseStatusCode")
+45 IF $$CHKVAL^PSSHRQ23(.HASH,I,"dailyDoseMessage")
SET @NODE@("DAILY","MESSAGE",IEN)=HASH(I,"dailyDoseMessage")
+46 ; Max Daily values
+47 IF $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseStatus")
SET @NODE@("DAILYMAX","STATUS",IEN)=HASH(I,"maxDailyDoseStatus")
+48 IF $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseStatusCode")
SET @NODE@("DAILYMAX","STATUSCODE",IEN)=HASH(I,"maxDailyDoseStatusCode")
+49 IF $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseMessage")
SET @NODE@("DAILYMAX","MESSAGE",IEN)=HASH(I,"maxDailyDoseMessage")
+50 ; general maximum life time dose
+51 IF $$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeDose")
SET @NODE@("MAXLIFETIME","DOSE",IEN)=HASH(I,"maxLifetimeDose")
+52 ; Frequency values, if any
+53 IF $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyStatus")
SET @NODE@("FREQ","FREQUENCYSTATUS",IEN)=HASH(I,"frequencyStatus")
+54 IF $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyStatusCode")
SET @NODE@("FREQ","FREQUENCYSTATUSCODE",IEN)=HASH(I,"frequencyStatusCode")
+55 IF $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyMessage")
SET @NODE@("FREQ","FREQUENCYMESSAGE",IEN)=HASH(I,"frequencyMessage")
+56 IF $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyHigh")
SET @NODE@("FREQ","FREQUENCYHIGH",IEN)=HASH(I,"frequencyHigh")
DO CSTMFREQ(.HASH,I,NODE,IEN)
+57 IF $$CHKVAL^PSSHRQ23(.HASH,I,"frequencyLow")
SET @NODE@("FREQ","FREQUENCYLOW",IEN)=HASH(I,"frequencyLow")
DO CSTMFREQ(.HASH,I,NODE,IEN)
+58 ; dose percent elements
+59 if $DATA(HASH(I,"single"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"single","","")
+60 if $DATA(HASH(I,"rangeLow"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"rangeLow","","")
+61 if $DATA(HASH(I,"rangeHigh"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"rangeHigh","","")
+62 if $DATA(HASH(I,"daily"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"daily","","")
+63 if $DATA(HASH(I,"maxDaily"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxDaily","DAILYMAX","")
+64 if $DATA(HASH(I,"maxLifetime"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxLifetime","","")
+65 if $DATA(HASH(I,"maxLifetimeOrder"))=10
DO WRITEDSP^PSSHRQ2D(NODE,.HASH,I,IEN,"maxLifetimeOrder","","")
+66 ;;
+67 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderMessage")
SET @NODE@("MAXLIFETIMEORDER","MESSAGE",IEN)=HASH(I,"maxLifetimeOrderMessage")
+68 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderStatus")
SET @NODE@("MAXLIFETIMEORDER","STATUS",IEN)=HASH(I,"maxLifetimeOrderStatus")
+69 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxLifetimeOrderStatusCode")
SET @NODE@("MAXLIFETIMEORDER","STATUSCODE",IEN)=HASH(I,"maxLifetimeOrderStatusCode")
+70 ;;
+71 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDose")
SET @NODE@("MAXSINGLENTE","DOSE",IEN)=HASH(I,"maxSingleNTEDose")
+72 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseUnit")
SET @NODE@("MAXSINGLENTE","DOSEUNIT",IEN)=HASH(I,"maxSingleNTEDoseUnit")
+73 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseForm")
SET @NODE@("MAXSINGLENTE","DOSEFORM",IEN)=HASH(I,"maxSingleNTEDoseForm")
+74 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxSingleNTEDoseFormUnit")
SET @NODE@("MAXSINGLENTE","DOSEFORMUNIT",IEN)=HASH(I,"maxSingleNTEDoseFormUnit")
+75 ;;
+76 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDose")
SET @NODE@("DAILYMAX","DOSE",IEN)=HASH(I,"maxDailyDose")
+77 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseUnit")
SET @NODE@("DAILYMAX","DOSEUNIT",IEN)=HASH(I,"maxDailyDoseUnit")
+78 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseForm")
SET @NODE@("DAILYMAX","DOSEFORM",IEN)=HASH(I,"maxDailyDoseForm")
+79 if $$CHKVAL^PSSHRQ23(.HASH,I,"maxDailyDoseFormUnit")
SET @NODE@("DAILYMAX","DOSEFORMUNIT",IEN)=HASH(I,"maxDailyDoseFormUnit")
+80 ;;
+81 ;
+82 ; -- in 2.1 if max daily dose frequency out of range flag=1 perform max daily dose check
+83 IF $GET(HASH(I,"orderNumber"))]""
IF $PIECE($GET(PSSDBCAR($GET(HASH(I,"orderNumber")))),"^",29)
Begin DoDot:2
+84 SET PSSFSCO=HASH(I,"orderNumber")
SET PSSFSCB=BASE
SET PSSFSCN=HASH(I,"drugName")
SET PSSFSCI=HASH(I,"ien")
DO MAXD^PSSDSUTA(PSSFSCO,PSSFSCB,PSSFSCN,PSSFSCI,.PSSDBCAR)
End DoDot:2
+85 QUIT
End DoDot:1
+86 ;
+87 QUIT
+88 ;;
CSTMFREQ(HASH,I,NODE,IEN) ;; build customized frequency message
+1 NEW MSG,LOW,LOWI,LOWS,LOWR,LOWSWAP,HIGH,HIGHI,HIGHS,HIGHR,HIGHSWAP
+2 if $DATA(@NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN))
QUIT
+3 SET (LOWS,HIGHS)=0
+4 SET MSG="Recommended frequency of "_$GET(HASH(I,"drugName"))
+5 SET LOW=$GET(HASH(I,"frequencyLow"))
+6 if +$PIECE(LOW,".",2)=0
SET LOW=$PIECE(LOW,".")
+7 SET HIGH=$GET(HASH(I,"frequencyHigh"))
+8 if +$PIECE(HIGH,".",2)=0
SET HIGH=$PIECE(HIGH,".")
+9 IF (LOW="")!(HIGH="")!(+LOW=0)!(+HIGH=0)!(+LOW<0)!(+HIGH<0)
SET @NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN)=MSG_" is unavailable."
QUIT
+10 if LOW<1
Begin DoDot:1
+11 SET LOWI=+$PIECE(1/LOW,".",1)
+12 SET LOWR=$EXTRACT(+$PIECE(1/LOW,".",2),1)
+13 SET LOWR=$SELECT(LOWR>4:1,1:0)
+14 SET LOW=LOWI+LOWR
+15 SET LOWS=1
End DoDot:1
+16 if HIGH<1
Begin DoDot:1
+17 SET HIGHI=+$PIECE(1/HIGH,".",1)
+18 SET HIGHR=$EXTRACT(+$PIECE(1/HIGH,".",2),1)
+19 SET HIGHR=$SELECT(HIGHR>4:1,1:0)
+20 SET HIGH=HIGHI+HIGHR
+21 SET HIGHS=1
End DoDot:1
+22 if (HIGH<LOW)&(LOWS=1)&(HIGHS=1)
Begin DoDot:1
+23 SET HIGHSWAP=HIGH
+24 SET LOWSWAP=LOW
+25 SET LOW=HIGHSWAP
+26 SET HIGH=LOWSWAP
End DoDot:1
+27 IF HIGH=LOW
Begin DoDot:1
+28 IF HIGHS=0
SET MSG=MSG_" is "_HIGH_" time(s) per day."
+29 IF '$TEST
SET MSG=MSG_" is every "_HIGH_" days."
+30 QUIT
End DoDot:1
+31 IF HIGH'=LOW
Begin DoDot:1
+32 IF LOWS+HIGHS=0
SET MSG=MSG_" is "_LOW_" to "_HIGH_" times per day."
QUIT
+33 IF (LOWS=1)&(HIGHS=0)
Begin DoDot:2
+34 if LOW'=1
SET MSG=MSG_" is every "_LOW_" day(s) to "_HIGH_" time(s) per day."
+35 if LOW=1
SET MSG=MSG_" is "_LOW_" to "_HIGH_" time(s) per day."
End DoDot:2
QUIT
+36 SET MSG=MSG_" is every "_LOW_" day(s) to "_HIGH_" days."
+37 QUIT
End DoDot:1
+38 SET @NODE@("FREQ","FREQUENCYCUSTOMMESSAGE",IEN)=MSG
+39 QUIT
+40 ;;