2014年12月21日 星期日

HL7 v2.6學習心得–第二.A章 Data Types–3(primitive data type)

上一篇提到的分類方式,其實也不怎麼正確。性質相同的放再一起講,當然會節省時間。只可惜醫療是這麼地複雜,許多資料型態其實是跨領域的。再來,HL7的資料型態一直有個關鍵問題,就是「資料型態的資料型態還是資料型態」,這個在v3.0也是一樣。
「資料型態的資料型態還是資料型態」一定要設「停損點」吧,否則會無窮迴圈下去。所幸在v 2.x會收斂,到了v 3.0還真會無窮迴圈下去。那2.x版的「停損點」到底是什麼呢?說穿了就是有些資料型態是最基礎的資料型態。
這麼講可能不好懂,如果你有Java或其他物件導向程式語言的背景,那就比較容易懂了。資料型態其實有分成兩種,其中一種是Primitive,例如說byte、int、float、double等。當一個變數宣告成這類型的資料型態時,除了有記憶體指向之外,還留有記憶體空間。簡單地說,就是可以直接指派符合其資料型態之內容值了。不同程式語言其Primitive Data Type的定義並不一定相同。
另外一種資料型態叫Reference,其實就是這個變數宣告成某一個物件。這個物件當然會有欄位,欄位又會有自己的資料型態。要一直碰到屬於Primitive的資料型態時,就可以放心指派內容值的。否則就一直要用點文法來遊歷了。
另外,還有一個觀念,除了有int整數型態之外,在java還會提供一個類別叫Integer,他是整數類別,他的目標是讓你更方便處理整數。當然,你可以透過這個類別來取得真正的整數值。
可惜,HL7 的Data Type全部都是Reference Data Type。因為HL7不牽涉到實作面呀,他不會限定你只能用java還是C#或其他語言呀。所以,他根本不會給你Primitive的定義。那都不能放內容值,那要怎麼實作呀。其實就是有一些「停損點」的資料型態,他可以讓你自己跟你所採用的程式語言的Primitive Data Type作對應。這樣不就結了嘛。這也是HL7相關API要去處理的事情。
接著我們就要來觀察,到底哪幾個資料型態具有「停損點」的功能。哈~其實就是從程式語言常用的Primitive 倒推回去囉。當然,其中一個String是比較麻煩。有些程式語言認為是類別,但是有些程式語言已經幫你做處理而當作Primitive了。或者是說,這個資料型態已經沒有定義欄位者,也可以算是了。
其他的資料型態,幾乎是基於這些所衍生的。
時間類
  • DT – Date

最大資料長度是8,其格式為YYYY[MM[DD]]。[]表示可選。YYYY是指四碼長度的西元年,MM是數字的月,DD是數字的日。|20110101|與|201110|都是合法的。
  • TM – time

最大資料長度是16,其格式為HH[MM[SS[.S[S[S[S]]]]]][+/-ZZZZ]。HH:時、MM:分、SS:秒、.SSSS是:微秒、+/-ZZZZ:時區。
  • DTM - date/time

最大資料長度是24,其格式為YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]。就是前面兩種資料型態之合體。
數值類
  • NM – numeric

最大資料長度是16(這個沒有多大意義)。反正又是一個可以帶正負號且可以有小數點的字串。哈~我這可不是誇張說法。注意,我一開始再聊時就說,其實HL7就是一個大字串。前面那些日期類的資料型態,看似數字,其實全部看成字串就對了啦。
字串類
這個應該可不用多講,就當作複習囉。
  • ST - string data

就是放一些長度不超過999的字串。
  • TX - text data

如果字串比較長的,那就用這個資料型態囉。
  • FT - formatted text data

如果字串內想要有點排版的樣式,那就是用這個囉。
編碼類
  • ID - coded value for HL7 defined tables

這個解講過囉。就是帶一組由HL7所定義的參照表編號。
  • IS - coded value for user-defined tables

與前者類似,只不過這邊攜帶的是使用者定義的參照表編號。注意,不是參考表編號是使用者制訂,而是這種類型的參照表會有哪些內容值,可由使用者自行定義。
  • SI - sequence ID

長度是4,這個專門用來定義流水號編碼。他是一個非負整數。也就是0~9999。

其實,有了以上這幾個資料型態作基礎後,其他的資料型態就會比較好理解。真的嗎?哈~那要看認真程度啦。因為後續的資料型態都會有特定用途與目的,如果對於所要解決的問題不是清楚的話,會完全搞不懂幹嘛要多這個資料型態。屆時,你只會一直罵無聊而已。

沒有留言:

張貼留言