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