PSSHFREQ ;WOIFO/AV - VALIDATES FREQUENCY FOR DOSING ; Sep 20, 2007@16:00
;;1.0;PHARMACY DATA MANAGEMENT;**136,254**;9/30/97;Build 109
;
;
Q
;;
VALFREQ(FREQ) ; Validate Dosing Check Frequencies
; Input: FREQ - Frequency to be validated (e.g., "3XD", "Q5D", "Q1W", etc.)
;Output: VALFREQ - 1: Valid Frequency | 0: Invalid Frequency
S FREQ=$$UP^XLFSTR($$TRIM(FREQ)) I FREQ=""!(FREQ[".") Q 0
I FREQ?.N Q 1
I (" QD BID TID QID QAM QSHIFT QOD QHS QPM QDAY QWEEK QMONTH "[(" "_FREQ_" ")) Q 1
I $$FREQCHK^PSSJSV(FREQ)'="" Q 1
Q 0
;
;;
TRIM(TEXT) ;
;Trims the leading and trailing whitespace from a String
;
;Trim leading whitespace
SET TEXT=$$TRIMLEAD(TEXT)
;Trim trailing whitespace
SET TEXT=$$TRIMEND(TEXT)
QUIT TEXT
;;
TRIMLEAD(TEXT) ;
;Trims the leading whitespace from a String
;
NEW LENGTH,N,FLAG,CHAR,TEMPTEXT,MOD
;
;Ensure the String contains a value
IF $DATA(TEXT)=0 SET TEXT="" QUIT TEXT
SET LENGTH=$LENGTH(TEXT)
;Ensure the String is not empty
IF LENGTH=0 QUIT TEXT
;
;Initialize the flag
S FLAG=0,N=0,MOD=0
;Loop through
FOR SET N=N+1 QUIT:N>LENGTH!(FLAG=1) DO
.SET CHAR=$EXTRACT(TEXT,N)
.IF CHAR=" " SET TEMPTEXT=$EXTRACT(TEXT,N+1,LENGTH),MOD=1
.IF CHAR'=" " SET FLAG=1
.QUIT ;End for loop
;Save the new text to the passed in variable
IF MOD=1 SET TEXT=TEMPTEXT
QUIT TEXT
;;
TRIMEND(TEXT) ;
;Trims the trailing whitespace from a String
;
NEW LENGTH,N,FLAG,CHAR,TEMPTEXT,MOD
;
;Ensure the String contains a value
IF $DATA(TEXT)=0 SET TEXT="" QUIT TEXT
SET LENGTH=$LENGTH(TEXT)
;Ensure the String is not empty
IF LENGTH=0 QUIT TEXT
;
;Initialize the flag, counter, and modification indicator variables
S FLAG=0,N=LENGTH+1,MOD=0
;Loop through
FOR SET N=N-1 QUIT:N=0!(FLAG=1) DO
.SET CHAR=$EXTRACT(TEXT,N)
.;WRITE !,"CHAR: ",CHAR
.IF CHAR=" " SET TEMPTEXT=$EXTRACT(TEXT,1,N-1),MOD=1
.IF CHAR'=" " SET FLAG=1
.QUIT ;End for loop
;Save the new text to the passed in variable
IF MOD=1 SET TEXT=TEMPTEXT
QUIT TEXT
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSHFREQ 2057 printed Sep 23, 2025@20:07:24 Page 2
PSSHFREQ ;WOIFO/AV - VALIDATES FREQUENCY FOR DOSING ; Sep 20, 2007@16:00
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**136,254**;9/30/97;Build 109
+2 ;
+3 ;
+4 QUIT
+5 ;;
VALFREQ(FREQ) ; Validate Dosing Check Frequencies
+1 ; Input: FREQ - Frequency to be validated (e.g., "3XD", "Q5D", "Q1W", etc.)
+2 ;Output: VALFREQ - 1: Valid Frequency | 0: Invalid Frequency
+3 SET FREQ=$$UP^XLFSTR($$TRIM(FREQ))
IF FREQ=""!(FREQ[".")
QUIT 0
+4 IF FREQ?.N
QUIT 1
+5 IF (" QD BID TID QID QAM QSHIFT QOD QHS QPM QDAY QWEEK QMONTH "[(" "_FREQ_" "))
QUIT 1
+6 IF $$FREQCHK^PSSJSV(FREQ)'=""
QUIT 1
+7 QUIT 0
+8 ;
+9 ;;
TRIM(TEXT) ;
+1 ;Trims the leading and trailing whitespace from a String
+2 ;
+3 ;Trim leading whitespace
+4 SET TEXT=$$TRIMLEAD(TEXT)
+5 ;Trim trailing whitespace
+6 SET TEXT=$$TRIMEND(TEXT)
+7 QUIT TEXT
+8 ;;
TRIMLEAD(TEXT) ;
+1 ;Trims the leading whitespace from a String
+2 ;
+3 NEW LENGTH,N,FLAG,CHAR,TEMPTEXT,MOD
+4 ;
+5 ;Ensure the String contains a value
+6 IF $DATA(TEXT)=0
SET TEXT=""
QUIT TEXT
+7 SET LENGTH=$LENGTH(TEXT)
+8 ;Ensure the String is not empty
+9 IF LENGTH=0
QUIT TEXT
+10 ;
+11 ;Initialize the flag
+12 SET FLAG=0
SET N=0
SET MOD=0
+13 ;Loop through
+14 FOR
SET N=N+1
if N>LENGTH!(FLAG=1)
QUIT
Begin DoDot:1
+15 SET CHAR=$EXTRACT(TEXT,N)
+16 IF CHAR=" "
SET TEMPTEXT=$EXTRACT(TEXT,N+1,LENGTH)
SET MOD=1
+17 IF CHAR'=" "
SET FLAG=1
+18 ;End for loop
QUIT
End DoDot:1
+19 ;Save the new text to the passed in variable
+20 IF MOD=1
SET TEXT=TEMPTEXT
+21 QUIT TEXT
+22 ;;
TRIMEND(TEXT) ;
+1 ;Trims the trailing whitespace from a String
+2 ;
+3 NEW LENGTH,N,FLAG,CHAR,TEMPTEXT,MOD
+4 ;
+5 ;Ensure the String contains a value
+6 IF $DATA(TEXT)=0
SET TEXT=""
QUIT TEXT
+7 SET LENGTH=$LENGTH(TEXT)
+8 ;Ensure the String is not empty
+9 IF LENGTH=0
QUIT TEXT
+10 ;
+11 ;Initialize the flag, counter, and modification indicator variables
+12 SET FLAG=0
SET N=LENGTH+1
SET MOD=0
+13 ;Loop through
+14 FOR
SET N=N-1
if N=0!(FLAG=1)
QUIT
Begin DoDot:1
+15 SET CHAR=$EXTRACT(TEXT,N)
+16 ;WRITE !,"CHAR: ",CHAR
+17 IF CHAR=" "
SET TEMPTEXT=$EXTRACT(TEXT,1,N-1)
SET MOD=1
+18 IF CHAR'=" "
SET FLAG=1
+19 ;End for loop
QUIT
End DoDot:1
+20 ;Save the new text to the passed in variable
+21 IF MOD=1
SET TEXT=TEMPTEXT
+22 QUIT TEXT