@fhir-toolkit/ucum (英语)
UCUM(计量单位的统一代码)验证器,转换器,以及Node.js和浏览器的分析器.
安装
pnpm add @fhir-toolkit/ucum
# or
npm install @fhir-toolkit/ucum
基本用途
import { createUcumService } from '@fhir-toolkit/ucum'
const service = createUcumService()
校验
service.validate('mg/dL') // returns void — valid
service.validate('xyz') // throws UcumValidationError
转换
const mg = service.convert(1, 'g', 'mg')
console.log(mg) // 1000
const celsius = service.convert(37, 'Cel', '[degF]')
console.log(celsius) // 98.6
// Throws UcumConversionError if units are not comparable
service.convert(1, 'mg', 'Cel')
检查可比性
service.isComparable('mg', 'g') // true — same dimension (mass)
service.isComparable('mg', 'Cel') // false — different dimensions
service.isComparable('kg.m/s2', 'N') // true — both resolve to force
条形
// Returns the value and base-unit code
const result = service.canonical(1, 'kg.m/s2')
// { value: 1, code: 'g.m.s-2' }
const result2 = service.canonical(1, 'mg/dL')
// { value: 0.01, code: 'g.l-1' }
乘并相除
const speed = service.multiply(
{ value: 100, code: 'm' },
{ value: 1, code: 's-1' },
)
// { value: 100, code: 'm.s-1' }
const ratio = service.divide(
{ value: 10, code: 'g' },
{ value: 5, code: 'L' },
)
// { value: 2, code: 'g.L-1' }
分析( )
返回 UCUM 表达式的可读描述 :
service.analyze('mg/dL') // 'milligram per deciliter'
service.analyze('kg.m/s2') // 'kilogrammetersecond-2'
service.analyze('Cel') // 'degree Celsius'
建议()
通过代码前缀或名称子字符串自动完成单元搜索 :
service.suggest('ki') // [{ code: 'kg', name: 'kilogram' }, ...]
service.suggest('Cel') // [{ code: 'Cel', name: 'degree Celsius' }, ...]
// Limit results (default: 20)
service.suggest('m', 5) // at most 5 results
处理错误
import { UcumValidationError, UcumConversionError } from '@fhir-toolkit/ucum'
try {
service.validate('bad~code')
} catch (err) {
if (err instanceof UcumValidationError) {
console.error(err.message) // invalid UCUM code "bad~code": ...
}
}
try {
service.convert(1, 'mg', 'Cel')
} catch (err) {
if (err instanceof UcumConversionError) {
console.error(`${err.from} → ${err.to}: ${err.message}`)
}
}
浏览器使用量
在任何现代浏览器中工作——不需要特殊的捆绑器配置:
import { createUcumService } from '@fhir-toolkit/ucum'
const service = createUcumService()
从 @lhncbc/ucum-lhc
@lhncbc/ucum-lhc | @fhir-toolkit/ucum |
|---|---|
UcumLhcUtils.getInstance().validateUnitString(code) | service.validate(code) (推错) |
UcumLhcUtils.getInstance().convertUnitTo(value, from, to) | service.convert(value, from, to) |
UcumLhcUtils.getInstance().commensurableTest(code1, code2) | service.isComparable(code1, code2) |
| 手动字符串匹配 | service.suggest(prefix, limit) |
关键差异 :
validate()掷出UcumValidationError而不是返回状态对象.convert()返回平面number而不是结果对象.canonical()接受(value, code)返回时{ value, code }。 。 。 .