1 | XLFMSMT ;SLC,SF/MH,RWF - Callable functions for conversions in measurement ;04/09/2002 09:02
|
---|
2 | ;;8.0;KERNEL;**228**;Jul 10, 1995
|
---|
3 | N I,VAL
|
---|
4 | W !!,"Routine: "_$T(+0),! F I=8:1 S VAL=$T(+I) Q:'$L(VAL) I VAL[";;" W !,VAL
|
---|
5 | W !!
|
---|
6 | Q
|
---|
7 | ;;
|
---|
8 | WEIGHT(VAL,FROM,TO) ;;Convert weight between metric and U.S. weights
|
---|
9 | ;; returns equivilent value with units
|
---|
10 | ;; VAL must contain a positive numeric value
|
---|
11 | ;; FROM must contain the units of measure of VAL
|
---|
12 | ;; TO must contain the units of measure to convert VAL to
|
---|
13 | ;; eg. W $$WEIGHT(12,"LB","G") ===> 5448 G
|
---|
14 | ;; Valid units in either lowercase or uppercase are
|
---|
15 | ;; t = metric tons tn = tons
|
---|
16 | ;; kg = kilograms lb = pounds
|
---|
17 | ;; g = grams oz = ounces
|
---|
18 | ;; mg = milligram gr = grain
|
---|
19 | N CKY,CKZ
|
---|
20 | I '$G(VAL) Q 0
|
---|
21 | I '$$VAL(VAL) Q 0_" ILLEGAL NUMBER"
|
---|
22 | S FROM=$$UPCASE(FROM),CKY="^"_FROM_"^",TO=$$UPCASE(TO),CKZ="^"_TO_"^"
|
---|
23 | Q:'$L(FROM)!('$L(TO)) 0
|
---|
24 | I "^T^KG^G^MG^TN^LB^OZ^GR^"'[CKY Q "ERROR"
|
---|
25 | I "^T^KG^G^MG^TN^LB^OZ^GR^"'[CKZ Q "ERROR"
|
---|
26 | ; quit with no conversion
|
---|
27 | G WT^XLFMSMT2
|
---|
28 | LENGTH(VAL,FROM,TO) ;;Convert length between metric and U.S. length
|
---|
29 | ;; returns equivilent value with units
|
---|
30 | ;; VAL must contain a positive numeric value
|
---|
31 | ;; FROM must contain the units of measure of VAL
|
---|
32 | ;; TO must contain the units of measure to convert VAL to
|
---|
33 | ;; eg. W $$LENGTH(12,"IN","CM") ===> 30.480 CM
|
---|
34 | ;; Valid units are in either uppercase or lowercase are:
|
---|
35 | ;; km = kilometers mi = miles
|
---|
36 | ;; m = meters yd = yards
|
---|
37 | ;; cm = centimeters ft = feet
|
---|
38 | ;; mm = millimeters in = inches
|
---|
39 | N CKY,CKZ
|
---|
40 | I '$G(VAL) Q 0
|
---|
41 | I '$$VAL(VAL) Q 0_" ILLEGAL NUMBER"
|
---|
42 | S FROM=$$UPCASE(FROM),CKY="^"_FROM_"^",TO=$$UPCASE(TO),CKZ="^"_TO_"^"
|
---|
43 | Q:'$L(FROM)!('$L(TO)) 0
|
---|
44 | I "^KM^M^CM^MM^MI^YD^FT^IN^"'[CKY Q "ERROR"
|
---|
45 | I "^KM^M^CM^MM^MI^YD^FT^IN^"'[CKZ Q "ERROR"
|
---|
46 | ; quit with no conversion
|
---|
47 | I FROM=TO Q VAL_" "_TO
|
---|
48 | G LN^XLFMSMT2
|
---|
49 | ;;
|
---|
50 | VOLUME(VAL,FROM,TO) ;;Convert volume between metric and U.S. volume
|
---|
51 | ;; Mililiters to cubic inches or quarts or ounces
|
---|
52 | ;; returns equivilent value with units
|
---|
53 | ;; VAL must contain a positive numeric value
|
---|
54 | ;; FROM must contain the units of measure of VAL
|
---|
55 | ;; TO must contain the units of measure to convert VAL to
|
---|
56 | ;; eg. W $$VOLUME(12,"CF","ML") ===> 339800.832 ML
|
---|
57 | ;; Valid units in either uppercase or lowercase are:
|
---|
58 | ;; kl = kiloliter cf = feet
|
---|
59 | ;; hl = hectoliter ci = inch
|
---|
60 | ;; dal = dekaliter gal = gallon
|
---|
61 | ;; l = liters qt = quart
|
---|
62 | ;; dl = deciliter pt = pint
|
---|
63 | ;; cl = centiliter c = cup
|
---|
64 | ;; ml = mililiter oz = ounce
|
---|
65 | ;
|
---|
66 | N CKY,CKZ
|
---|
67 | I '$G(VAL) Q 0
|
---|
68 | I '$$VAL(VAL) Q 0_" ILLEGAL NUMBER"
|
---|
69 | S FROM=$$UPCASE(FROM),CKY="^"_FROM_"^",TO=$$UPCASE(TO),CKZ="^"_TO_"^"
|
---|
70 | Q:'$L(FROM)!('$L(TO)) 0
|
---|
71 | I "^KL^HL^DAL^L^DL^CL^ML^CF^CI^GAL^QT^PT^C^OZ^"'[CKY Q "ERROR"
|
---|
72 | I "^KL^HL^DAL^L^DL^CL^ML^CF^CI^GAL^QT^PT^C^OZ^"'[CKZ Q "ERROR"
|
---|
73 | ; quit with no conversion
|
---|
74 | I FROM=TO Q VAL_" "_TO
|
---|
75 | G VOL^XLFMSMT2
|
---|
76 | ;;
|
---|
77 | BSA(%HT,%WT) ;;Return Body Surface Area using Dubois formula
|
---|
78 | ;; Dubois formula BSA=.007184*(ht**.725)*(wt**.425)
|
---|
79 | ;; %HT is height in centimeters
|
---|
80 | ;; %WT is weight in Kilograms
|
---|
81 | ;; eg. $$BSA(175,86)=2.02
|
---|
82 | ;; or $$BSA(100,43)=1.00
|
---|
83 | I '$$VAL(%HT) Q 0_"ILLEGAL NUMBER"
|
---|
84 | I '$$VAL(%WT) Q 0_" ILLEGAL NUMBER"
|
---|
85 | ;Q $FN(($$PWR^XLFMTH(%HT,.425)*$$PWR^XLFMTH(%WT,.725)*71.84)/10000,"",2)
|
---|
86 | Q $FN(((%HT**.725)*(%WT**.425)*71.84)/10000,"",2)
|
---|
87 | ;
|
---|
88 | TEMP(VAL,FROM,TO) ;;Convert metric temperature to U.S. temperature
|
---|
89 | ;; F = fahrenheit C = celsius
|
---|
90 | N CKY,CKZ
|
---|
91 | I '$D(VAL) Q 0
|
---|
92 | I '$$VAL(VAL) Q 0_" ILLEGAL NUMBER"
|
---|
93 | S FROM=$$UPCASE(FROM),CKY="^"_FROM_"^",TO=$$UPCASE(TO),CKZ="^"_TO_"^"
|
---|
94 | Q:'$L(FROM)!('$L(TO)) 0
|
---|
95 | I "^F^C^"'[CKY Q "ERROR"
|
---|
96 | I "^F^C^"'[CKZ Q "ERROR"
|
---|
97 | I FROM=TO Q VAL_" "_TO
|
---|
98 | I TO="C" Q $$FORMAT^XLFMSMT2((VAL-32)/1.8)_" "_TO
|
---|
99 | I TO="F" Q $$FORMAT^XLFMSMT2(1.8*VAL+32)_" "_TO
|
---|
100 | Q "ERROR"
|
---|
101 | VAL(X) ;
|
---|
102 | I X[".",$L(X)>19 Q 0
|
---|
103 | I $L(X)>18 Q 0
|
---|
104 | Q 1
|
---|
105 | UPCASE(X) ;
|
---|
106 | Q $TR(X,"zxcvbnmlkjhgfdsaqwertyuiop","ZXCVBNMLKJHGFDSAQWERTYUIOP")
|
---|
107 | ;
|
---|