==========
首先我們要知道,Primitive Type中跟數值有關的主要是interger與decimal。我們要思考的是,那數值的東西還有哪些變化呢?其實,可以從數學與物理的角度來思考。這篇就來討論這個問題。(這一塊,R3跟R4有明顯差異)
Money
在R4這個被獨立拉出來了。
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Money | ΣN | Element | An amount of economic utility in some recognized currency Elements defined in Ancestors: id, extension | |
value | Σ | 0..1 | decimal | Numerical value (with implicit precision) |
currency | Σ | 0..1 | code | ISO 4217 Currency Code CurrencyCode (Required) |
資料集的定義有了,那內容值呢?就是去看Expansion那節。
還好,都是來自urn:iso:std:iso:4217這個編碼系統。放心TWD,也有在裡面。
接著要來看Money的原生家庭。
Quantity
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Quantity | ΣIN | Element | A measured or measurable amount + Rule: If a code for the unit is present, the system SHALL also be present Elements defined in Ancestors: id, extension | |
value | Σ | 0..1 | decimal | Numerical value (with implicit precision) |
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value QuantityComparator (Required) |
unit | Σ | 0..1 | string | Unit representation |
system | ΣI | 0..1 | uri | System that defines coded unit form |
code | Σ | 0..1 | code | Coded form of the unit |
- Quantity.value:decimal [0..1]
這跟Money的概念是一樣,實際放數值的地方。
- Quantity.comparator:code [0..1]
你可以想像這個是value的prefix。根據QuantityComparator這個Value-Set所規定,只有四種內容值可以使用。
Code | Display | Definition |
< | Less than | The actual value is less than the given value. |
<= | Less or Equal to | The actual value is less than or equal to the given value. |
>= | Greater or Equal to | The actual value is greater than or equal to the given value. |
> | Greater than | The actual value is greater than the given value. |
- Quantity.unit:string [0..1]
這是這個數值的單位名稱。Type用string,那可以推想他是用來給人看的。
- Quantity.system:uri [0..1]
有負責維護單位的編碼系統。這邊建議是UCUM (大概只有外國人願意幹這麼基礎性的工作。國內,就算我有心,也沒有機會)。當然也可以用SNOMED CT(真的是無所不包)。當你編碼系統用ISO 4127,那就表示簡化到Money這個Type。
- Quantity.code:code [0..1]
這不用解釋了吧。就看你採用哪個編碼系統對這個單位所給予的編碼內容,很繞口!?那就看下一張圖吧。雖然unit是放"unit/kg",code要放"415785005"。
==========
曾經跟一個年輕小伙子開會,講到關於血糖在LOINC中還有分飯後幾小時。他說,這個根本不需要.balabala。我也沒給他好臉色,直接說我不認同,我們都不是醫檢師,請尊重專業。
也許是吧,台灣一向不尊重專業。國外嚴謹的態度,我們恐怕一時半載是趕不上的啦。
還是得繼續講下去。
==========
到這兒,得插播一下。有些Type,不算Type(哈~這些都是我自己的體會,如有亂講請包涵),稱之為Profile層級的Type。之前Money也是,後被獨立出來,所以,Profile層級的Type,也許有一天發現常用且重要,就被提升為正式的Type。
這類的東東,衍生自Quantity特多。接著就來看看。
- MoneyQuantity
記得他不是Type,只是想用Quantity來表達Money。什麼時候使用呢?例如比率(Ratio),原本分子分母的定義是要用Quantity,可是現在是貨幣(Money)時,那要怎麼處理。Quantity最起碼Code中要放value。至於system要放的話,那一定是urn:iso:std:iso:4217。其他的還有下列,請自行參考文件。
- SimpleQuantity (少comparator)
- Distance
- Age
- Count
- Duration
=========
Range
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Range | ΣIN | Element | Set of values bounded by low and high + Rule: If present, low SHALL have a lower value than high Elements defined in Ancestors: id, extension | |
low | Σ | 0..1 | SimpleQuantity | Low limit |
high | Σ | 0..1 | SimpleQuantity | High limit |
Ratio
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Ratio | ΣIN | Element | A ratio of two Quantity values - a numerator and a denominator + Rule: Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present Elements defined in Ancestors: id, extension | |
numerator | Σ | 0..1 | Quantity | Numerator value |
denominator | Σ | 0..1 | Quantity | Denominator value |
這個也很直覺,分子與分母。但有個限制條件,numerator與denominator必須同時出現,或同時不存在。
SampledData
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
SampledData | TU | Element | A series of measurements taken by a device Elements defined in Ancestors: id, extension | |
origin | Σ | 1..1 | SimpleQuantity | Zero value and units |
period | Σ | 1..1 | decimal | Number of milliseconds between samples |
factor | Σ | 0..1 | decimal | Multiply data by this before adding to origin |
lowerLimit | Σ | 0..1 | decimal | Lower limit of detection |
upperLimit | Σ | 0..1 | decimal | Upper limit of detection |
dimensions | Σ | 1..1 | positiveInt | Number of sample points at each time point |
data | 0..1 | string | Decimal values with spaces, or "E" | "U" | "L" |
- SampledData.origin:SimpleQuantity [1..1]
這是設定原點值,以及取樣資料的單位。
- SampledData.period:decimal [1..1]
取樣時間長度(多久取樣一次)。以毫秒為單位。
- SampledData.factor:decimal [0..1]
校正因子。(採樣數據要放回原點座標時要調整)
- SampledData.lowerLimit:decimal [0..1]
採樣資料的下限值。
- SampledData.upperLimit:decimal [0..1]
採樣資料的上限值。
- SampledData.dimensions:positiveInt [1..1]
採樣數。在同一時間點下,採集多少筆資料。
- SampledData.data:string [0..1]
原始數據資料。每一個數據由空白區隔。若有不正常者可標注為"E"(錯誤),"L"(低於下限值),"U"(高於上限值)。
==========
跟數值有關的Type大概介紹到此了。
有些可能還是需要到應用面時,才更有感覺。
這就是為何我急著要把所有Type講完。
沒有留言:
張貼留言