- PSSDSBPB ;BIR/RTR-Determine numeric dose multiplier for dose call, continued ;02/12/09
- ;;1.0;PHARMACY DATA MANAGEMENT;**117,160**;9/30/97;Build 76
- ;
- ;
- NUMX() ;Determine numeric dose multiplier from Local Possible Dosage
- ;Q $S($$6:4,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,5) I PSSQVJ1="0.33 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,6,$L(PSSQVLCD)) Q $S($$6:.33,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,4) I PSSQVJ1="1/3 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,5,$L(PSSQVLCD)) Q $S($$6:.33,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,10) I PSSQVJ1="ONE THIRD " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,11,$L(PSSQVLCD)) Q $S($$6:.33,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,10) I PSSQVJ1="ONE-THIRD " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,11,$L(PSSQVLCD)) Q $S($$6:.33,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,5) I PSSQVJ1="0.25 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,6,$L(PSSQVLCD)) Q $S($$6:.25,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,4) I PSSQVJ1="1/4 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,5,$L(PSSQVLCD)) Q $S($$6:.25,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,11) I PSSQVJ1="ONE FOURTH " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,12,$L(PSSQVLCD)) Q $S($$6:.25,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,11) I PSSQVJ1="ONE-FOURTH " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,12,$L(PSSQVLCD)) Q $S($$6:.25,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,2) I PSSQVJ1="4 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,3,$L(PSSQVLCD)) Q $S($$6&$$9:4,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,5) I PSSQVJ1="FOUR " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,6,$L(PSSQVLCD)) Q $S($$6&$$9:4,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,2) I PSSQVJ1="3 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,3,$L(PSSQVLCD)) Q $S($$6&$$9:3,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,6) I PSSQVJ1="THREE " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,7,$L(PSSQVLCD)) Q $S($$6&$$9:3,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,2) I PSSQVJ1="2 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,3,$L(PSSQVLCD)) Q $S($$6&$$9:2,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,4) I PSSQVJ1="TWO " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,5,$L(PSSQVLCD)) Q $S($$6&$$9:2,1:0)
- ;
- S PSSQVJ1=$E(PSSQVLCD,1,2) I PSSQVJ1="1 " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,3,$L(PSSQVLCD)) Q $S($$6&$$9:1,1:0)
- S PSSQVJ1=$E(PSSQVLCD,1,4) I PSSQVJ1="ONE " Q:'$$7 0 S PSSQVJ2=$E(PSSQVLCD,5,$L(PSSQVLCD)) Q $S($$6&$$9:1,1:0)
- ;
- Q 0
- ;
- 6() ;
- ;Some special characters in a Nouns will pass, (), etc. others like "/" will not
- I PSSQVJ2[" " Q 0
- I PSSQVJ2["-" Q 0
- I PSSQVJ2["&" Q 0
- I PSSQVJ2["\" Q 0
- I PSSQVJ2["/" Q 0
- Q 1
- ;
- 7() ;
- I $L(PSSQVLCD)'>$L(PSSQVJ1) Q 0
- Q 1
- ;
- 9() ;
- I PSSQVJ2'["4",PSSQVJ2'["3",PSSQVJ2'["2",PSSQVJ2'["FOURTH",PSSQVJ2'["THIRD",PSSQVJ2'["HALF" Q 1
- Q 0
- ;
- ;
- NUMC() ;Continuation of Free Text Dosage conversion from routine PSSDSAPL
- ;
- S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="3-4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="3 - 4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="3 TO 4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="3 OR 4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,14) I PSSDBV1="THREE TO FOUR " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,15,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,14) I PSSDBV1="THREE OR FOUR " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,15,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,11) I PSSDBV1="THREE-FOUR " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,12,$L(PSSDBV9)) Q $S($$8:4,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="THREE - FOUR " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:4,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,2) I PSSDBV1="4 ",$$4 S PSSDBV2=$E(PSSDBV9,3,$L(PSSDBV9)) I $$8 Q 4
- S PSSDBV1=$E(PSSDBV9,1,5) I PSSDBV1="FOUR ",$$4 S PSSDBV2=$E(PSSDBV9,6,$L(PSSDBV9)) I $$8 Q 4
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="4 AND 1/4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="FOUR AND ONE FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="FOUR AND ONE-FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="4 AND ONE FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="4 AND ONE-FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FOUR AND 1/4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:4.25,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="4 AND 1/3 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="FOUR AND ONE THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="FOUR AND ONE-THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="4 AND ONE THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="4 AND ONE-THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FOUR AND 1/3 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:4.33,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="4 AND 1/2 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="FOUR AND ONE HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="FOUR AND ONE-HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="4 AND ONE HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="4 AND ONE-HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FOUR AND 1/2 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:4.5,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,4) I PSSDBV1="4-5 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,5,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,6) I PSSDBV1="4 - 5 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,7,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="4 TO 5 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,7) I PSSDBV1="4 OR 5 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,8,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FOUR TO FIVE " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FOUR OR FIVE " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="FOUR-FIVE " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,12) I PSSDBV1="FOUR - FIVE " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,13,$L(PSSDBV9)) Q $S($$8:5,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,2) I PSSDBV1="5 ",$$4 S PSSDBV2=$E(PSSDBV9,3,$L(PSSDBV9)) I $$8 Q 5
- S PSSDBV1=$E(PSSDBV9,1,5) I PSSDBV1="FIVE ",$$4 S PSSDBV2=$E(PSSDBV9,6,$L(PSSDBV9)) I $$8 Q 5
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="5 AND 1/4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="FIVE AND ONE FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,20) I PSSDBV1="FIVE AND ONE-FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,21,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="5 AND ONE FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,17) I PSSDBV1="5 AND ONE-FOURTH " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,18,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FIVE AND 1/4 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:5.25,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="5 AND 1/3 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="FIVE AND ONE THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,19) I PSSDBV1="FIVE AND ONE-THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,20,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="5 AND ONE THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,16) I PSSDBV1="5 AND ONE-THIRD " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,17,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FIVE AND 1/3 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:5.33,1:0)
- ;
- S PSSDBV1=$E(PSSDBV9,1,10) I PSSDBV1="5 AND 1/2 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,11,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="FIVE AND ONE HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,18) I PSSDBV1="FIVE AND ONE-HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,19,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="5 AND ONE HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,15) I PSSDBV1="5 AND ONE-HALF " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,16,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- S PSSDBV1=$E(PSSDBV9,1,13) I PSSDBV1="FIVE AND 1/2 " Q:'$$4 0 S PSSDBV2=$E(PSSDBV9,14,$L(PSSDBV9)) Q $S($$8:5.5,1:0)
- ;
- ;
- Q ""
- ;
- 8() ;Look for Unit - PSSDBIFL set in PSSSAPD, indicates if Order has a Dispense Drug, or just an Orderable Item
- S PSSDBV3="" D
- .I PSSDBIFL S PSSDBV3=$$UNITD^PSSDSAPI(PSSDBV2) Q
- .S PSSDBV3=$$UNIT^PSSDSAPI(PSSDBV2)
- Q $S(PSSDBV3="":0,1:1)
- ;
- ;
- 4() ;Validate text follow the numeric part of the text
- I $L(PSSDBV9)'>$L(PSSDBV1) Q 0
- Q 1
- ;
- TEST ;used for testing numeric dose multiplier from Local Possible Dosage
- N X,Y,PSSQVLCD,DIR,DIRUT,DTOUT
- TEST1 ;
- K DIR S DIR("A")="Possible Dosage",DIR(0)="FO^1:40" ;,DIR("?")="Enter a possible dosage for testing numeric dose multiplier."
- D ^DIR G TESTE:$G(DIRUT)!($G(DTOUT))!(X="")
- K DIR S PSSQVLCD=Y W !!,$$NUM^PSSDSBPA,!!
- G TEST1
- TESTE ;
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSDSBPB 9950 printed Feb 18, 2025@23:57:15 Page 2
- PSSDSBPB ;BIR/RTR-Determine numeric dose multiplier for dose call, continued ;02/12/09
- +1 ;;1.0;PHARMACY DATA MANAGEMENT;**117,160**;9/30/97;Build 76
- +2 ;
- +3 ;
- NUMX() ;Determine numeric dose multiplier from Local Possible Dosage
- +1 ;Q $S($$6:4,1:0)
- +2 ;
- +3 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,5)
- IF PSSQVJ1="0.33 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,6,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.33,1:0)
- +4 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,4)
- IF PSSQVJ1="1/3 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,5,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.33,1:0)
- +5 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,10)
- IF PSSQVJ1="ONE THIRD "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,11,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.33,1:0)
- +6 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,10)
- IF PSSQVJ1="ONE-THIRD "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,11,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.33,1:0)
- +7 ;
- +8 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,5)
- IF PSSQVJ1="0.25 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,6,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.25,1:0)
- +9 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,4)
- IF PSSQVJ1="1/4 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,5,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.25,1:0)
- +10 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,11)
- IF PSSQVJ1="ONE FOURTH "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,12,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.25,1:0)
- +11 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,11)
- IF PSSQVJ1="ONE-FOURTH "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,12,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6:.25,1:0)
- +12 ;
- +13 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,2)
- IF PSSQVJ1="4 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,3,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:4,1:0)
- +14 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,5)
- IF PSSQVJ1="FOUR "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,6,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:4,1:0)
- +15 ;
- +16 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,2)
- IF PSSQVJ1="3 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,3,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:3,1:0)
- +17 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,6)
- IF PSSQVJ1="THREE "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,7,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:3,1:0)
- +18 ;
- +19 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,2)
- IF PSSQVJ1="2 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,3,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:2,1:0)
- +20 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,4)
- IF PSSQVJ1="TWO "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,5,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:2,1:0)
- +21 ;
- +22 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,2)
- IF PSSQVJ1="1 "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,3,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:1,1:0)
- +23 SET PSSQVJ1=$EXTRACT(PSSQVLCD,1,4)
- IF PSSQVJ1="ONE "
- if '$$7
- QUIT 0
- SET PSSQVJ2=$EXTRACT(PSSQVLCD,5,$LENGTH(PSSQVLCD))
- QUIT $SELECT($$6&$$9:1,1:0)
- +24 ;
- +25 QUIT 0
- +26 ;
- 6() ;
- +1 ;Some special characters in a Nouns will pass, (), etc. others like "/" will not
- +2 IF PSSQVJ2[" "
- QUIT 0
- +3 IF PSSQVJ2["-"
- QUIT 0
- +4 IF PSSQVJ2["&"
- QUIT 0
- +5 IF PSSQVJ2["\"
- QUIT 0
- +6 IF PSSQVJ2["/"
- QUIT 0
- +7 QUIT 1
- +8 ;
- 7() ;
- +1 IF $LENGTH(PSSQVLCD)'>$LENGTH(PSSQVJ1)
- QUIT 0
- +2 QUIT 1
- +3 ;
- 9() ;
- +1 IF PSSQVJ2'["4"
- IF PSSQVJ2'["3"
- IF PSSQVJ2'["2"
- IF PSSQVJ2'["FOURTH"
- IF PSSQVJ2'["THIRD"
- IF PSSQVJ2'["HALF"
- QUIT 1
- +2 QUIT 0
- +3 ;
- +4 ;
- NUMC() ;Continuation of Free Text Dosage conversion from routine PSSDSAPL
- +1 ;
- +2 SET PSSDBV1=$EXTRACT(PSSDBV9,1,4)
- IF PSSDBV1="3-4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,5,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +3 SET PSSDBV1=$EXTRACT(PSSDBV9,1,6)
- IF PSSDBV1="3 - 4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,7,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +4 SET PSSDBV1=$EXTRACT(PSSDBV9,1,7)
- IF PSSDBV1="3 TO 4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,8,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +5 SET PSSDBV1=$EXTRACT(PSSDBV9,1,7)
- IF PSSDBV1="3 OR 4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,8,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +6 SET PSSDBV1=$EXTRACT(PSSDBV9,1,14)
- IF PSSDBV1="THREE TO FOUR "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,15,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +7 SET PSSDBV1=$EXTRACT(PSSDBV9,1,14)
- IF PSSDBV1="THREE OR FOUR "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,15,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +8 SET PSSDBV1=$EXTRACT(PSSDBV9,1,11)
- IF PSSDBV1="THREE-FOUR "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,12,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +9 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="THREE - FOUR "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4,1:0)
- +10 ;
- +11 SET PSSDBV1=$EXTRACT(PSSDBV9,1,2)
- IF PSSDBV1="4 "
- IF $$4
- SET PSSDBV2=$EXTRACT(PSSDBV9,3,$LENGTH(PSSDBV9))
- IF $$8
- QUIT 4
- +12 SET PSSDBV1=$EXTRACT(PSSDBV9,1,5)
- IF PSSDBV1="FOUR "
- IF $$4
- SET PSSDBV2=$EXTRACT(PSSDBV9,6,$LENGTH(PSSDBV9))
- IF $$8
- QUIT 4
- +13 ;
- +14 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="4 AND 1/4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +15 SET PSSDBV1=$EXTRACT(PSSDBV9,1,20)
- IF PSSDBV1="FOUR AND ONE FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,21,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +16 SET PSSDBV1=$EXTRACT(PSSDBV9,1,20)
- IF PSSDBV1="FOUR AND ONE-FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,21,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +17 SET PSSDBV1=$EXTRACT(PSSDBV9,1,17)
- IF PSSDBV1="4 AND ONE FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,18,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +18 SET PSSDBV1=$EXTRACT(PSSDBV9,1,17)
- IF PSSDBV1="4 AND ONE-FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,18,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +19 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FOUR AND 1/4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.25,1:0)
- +20 ;
- +21 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="4 AND 1/3 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +22 SET PSSDBV1=$EXTRACT(PSSDBV9,1,19)
- IF PSSDBV1="FOUR AND ONE THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,20,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +23 SET PSSDBV1=$EXTRACT(PSSDBV9,1,19)
- IF PSSDBV1="FOUR AND ONE-THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,20,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +24 SET PSSDBV1=$EXTRACT(PSSDBV9,1,16)
- IF PSSDBV1="4 AND ONE THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,17,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +25 SET PSSDBV1=$EXTRACT(PSSDBV9,1,16)
- IF PSSDBV1="4 AND ONE-THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,17,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +26 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FOUR AND 1/3 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.33,1:0)
- +27 ;
- +28 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="4 AND 1/2 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +29 SET PSSDBV1=$EXTRACT(PSSDBV9,1,18)
- IF PSSDBV1="FOUR AND ONE HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,19,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +30 SET PSSDBV1=$EXTRACT(PSSDBV9,1,18)
- IF PSSDBV1="FOUR AND ONE-HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,19,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +31 SET PSSDBV1=$EXTRACT(PSSDBV9,1,15)
- IF PSSDBV1="4 AND ONE HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,16,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +32 SET PSSDBV1=$EXTRACT(PSSDBV9,1,15)
- IF PSSDBV1="4 AND ONE-HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,16,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +33 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FOUR AND 1/2 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:4.5,1:0)
- +34 ;
- +35 SET PSSDBV1=$EXTRACT(PSSDBV9,1,4)
- IF PSSDBV1="4-5 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,5,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +36 SET PSSDBV1=$EXTRACT(PSSDBV9,1,6)
- IF PSSDBV1="4 - 5 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,7,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +37 SET PSSDBV1=$EXTRACT(PSSDBV9,1,7)
- IF PSSDBV1="4 TO 5 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,8,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +38 SET PSSDBV1=$EXTRACT(PSSDBV9,1,7)
- IF PSSDBV1="4 OR 5 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,8,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +39 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FOUR TO FIVE "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +40 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FOUR OR FIVE "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +41 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="FOUR-FIVE "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +42 SET PSSDBV1=$EXTRACT(PSSDBV9,1,12)
- IF PSSDBV1="FOUR - FIVE "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,13,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5,1:0)
- +43 ;
- +44 SET PSSDBV1=$EXTRACT(PSSDBV9,1,2)
- IF PSSDBV1="5 "
- IF $$4
- SET PSSDBV2=$EXTRACT(PSSDBV9,3,$LENGTH(PSSDBV9))
- IF $$8
- QUIT 5
- +45 SET PSSDBV1=$EXTRACT(PSSDBV9,1,5)
- IF PSSDBV1="FIVE "
- IF $$4
- SET PSSDBV2=$EXTRACT(PSSDBV9,6,$LENGTH(PSSDBV9))
- IF $$8
- QUIT 5
- +46 ;
- +47 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="5 AND 1/4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +48 SET PSSDBV1=$EXTRACT(PSSDBV9,1,20)
- IF PSSDBV1="FIVE AND ONE FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,21,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +49 SET PSSDBV1=$EXTRACT(PSSDBV9,1,20)
- IF PSSDBV1="FIVE AND ONE-FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,21,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +50 SET PSSDBV1=$EXTRACT(PSSDBV9,1,17)
- IF PSSDBV1="5 AND ONE FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,18,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +51 SET PSSDBV1=$EXTRACT(PSSDBV9,1,17)
- IF PSSDBV1="5 AND ONE-FOURTH "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,18,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +52 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FIVE AND 1/4 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.25,1:0)
- +53 ;
- +54 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="5 AND 1/3 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +55 SET PSSDBV1=$EXTRACT(PSSDBV9,1,19)
- IF PSSDBV1="FIVE AND ONE THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,20,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +56 SET PSSDBV1=$EXTRACT(PSSDBV9,1,19)
- IF PSSDBV1="FIVE AND ONE-THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,20,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +57 SET PSSDBV1=$EXTRACT(PSSDBV9,1,16)
- IF PSSDBV1="5 AND ONE THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,17,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +58 SET PSSDBV1=$EXTRACT(PSSDBV9,1,16)
- IF PSSDBV1="5 AND ONE-THIRD "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,17,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +59 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FIVE AND 1/3 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.33,1:0)
- +60 ;
- +61 SET PSSDBV1=$EXTRACT(PSSDBV9,1,10)
- IF PSSDBV1="5 AND 1/2 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,11,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +62 SET PSSDBV1=$EXTRACT(PSSDBV9,1,18)
- IF PSSDBV1="FIVE AND ONE HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,19,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +63 SET PSSDBV1=$EXTRACT(PSSDBV9,1,18)
- IF PSSDBV1="FIVE AND ONE-HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,19,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +64 SET PSSDBV1=$EXTRACT(PSSDBV9,1,15)
- IF PSSDBV1="5 AND ONE HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,16,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +65 SET PSSDBV1=$EXTRACT(PSSDBV9,1,15)
- IF PSSDBV1="5 AND ONE-HALF "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,16,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +66 SET PSSDBV1=$EXTRACT(PSSDBV9,1,13)
- IF PSSDBV1="FIVE AND 1/2 "
- if '$$4
- QUIT 0
- SET PSSDBV2=$EXTRACT(PSSDBV9,14,$LENGTH(PSSDBV9))
- QUIT $SELECT($$8:5.5,1:0)
- +67 ;
- +68 ;
- +69 QUIT ""
- +70 ;
- 8() ;Look for Unit - PSSDBIFL set in PSSSAPD, indicates if Order has a Dispense Drug, or just an Orderable Item
- +1 SET PSSDBV3=""
- Begin DoDot:1
- +2 IF PSSDBIFL
- SET PSSDBV3=$$UNITD^PSSDSAPI(PSSDBV2)
- QUIT
- +3 SET PSSDBV3=$$UNIT^PSSDSAPI(PSSDBV2)
- End DoDot:1
- +4 QUIT $SELECT(PSSDBV3="":0,1:1)
- +5 ;
- +6 ;
- 4() ;Validate text follow the numeric part of the text
- +1 IF $LENGTH(PSSDBV9)'>$LENGTH(PSSDBV1)
- QUIT 0
- +2 QUIT 1
- +3 ;
- TEST ;used for testing numeric dose multiplier from Local Possible Dosage
- +1 NEW X,Y,PSSQVLCD,DIR,DIRUT,DTOUT
- TEST1 ;
- +1 ;,DIR("?")="Enter a possible dosage for testing numeric dose multiplier."
- KILL DIR
- SET DIR("A")="Possible Dosage"
- SET DIR(0)="FO^1:40"
- +2 DO ^DIR
- if $GET(DIRUT)!($GET(DTOUT))!(X="")
- GOTO TESTE
- +3 KILL DIR
- SET PSSQVLCD=Y
- WRITE !!,$$NUM^PSSDSBPA,!!
- +4 GOTO TEST1
- TESTE ;
- +1 QUIT