Thursday, December 23, 2010

Create XMLTable with Virtual Column

以出院病歷要來說, 為了管理大量的電子病歷,增加資料存取的速度,可以借助Oracle Partitioning機制,來達到上列的需求。 要決定要做Partitioning Table的欄位,就整份文件來看,以文件列印日期可以做為Table Partitioning Key。 XML node: /ClinicalDocument/effectiveTime 的 value 屬性. 重點是namespace的宣告

XML Type的表格,可以以XML欄位的內容,定義虛擬欄位

CREATE TABLE CDA_DOCS OF XMLType
XMLTYPE STORE AS BINARY XML
VIRTUAL COLUMNS
(DATE_COL AS (XMLCast(XMLQuery('declare default element namespace "urn:hl7-org:v3";  (: :)
declare namespace voc="http://www.hl7.org/v3/voc";  (: :)
declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";  (: :)
/ClinicalDocument/effectiveTime/@value' PASSING OBJECT_VALUE RETURNING CONTENT)
AS varchar2(12))));

insert into CDA_DOCS select cda from XML_DOCS;
commit;

SELECT DATE_COL FROM CDA_DOCS;

No comments: