CDA ドキュメントと XSL 変換
この章では、インターシステムズ製品での CDA ドキュメントの処理方法について説明します。まず、CDA ドキュメントの構造の概要を示し、次に CDA ドキュメントと SDA を相互に変換する XSLT (XSL 変換) のライブラリについて説明します。
CDA ドキュメントの構造
すべての CDA ドキュメントのルート・ノードは <ClinicalDocument> です。その下に 3 つの論理ディビジョンがあります。ヘッダ、1 つ以上の Section、および各 Section 内の 1 つ以上の Entry です。
-
ヘッダには、メタデータ、患者基本情報、およびプロバイダ情報が含まれます。
-
Section では、Allergies や Medication などの広範な概念を設定します。Section には、Entry 形式の構造化データのほかに、構造化されていない“叙述”データも記述できます。
-
Entry は Section 内に埋め込まれており、より大きい概念の中でインスタンスを表します。例えば、Allergies セクションのある Entry でピーナッツ・アレルギーを表し、別の Entry で花粉アレルギーを表すことができます。
CDA ドキュメントを変換する際、Section と Entry はサポート・ファイルから変換命令を受け取ります。これについては、“CDA ドキュメントの XSLT ディレクトリ構造” のセクションで説明します。
CDA ドキュメントのすべての部分は、IHE または他の組織によって定義されたテンプレートに準拠します。これらのテンプレートは、OID (オブジェクト識別子) によって識別されます。テンプレートにより、CDA ドキュメントの臨床データを構造化された再利用可能な形式にすることができます。またテンプレートは、CDA ドキュメントが準拠すべき仕様も示します。複数のテンプレートを相互に継承し合い、さらに制約を課すことができます。OID はピリオドで区切られた整数の文字列で構成されます (例 : 2.16.840.1.113883.3.88.11.83.102)。特定のテンプレートに関する詳細は、インターネットの検索エンジンに OID を入力してください。OID の仕様を詳しく説明したオンライン・リソースが多数あります。
各 Section には、構造化データと非構造化データが含まれます。非構造化データにはテキスト、数値、段落全体などのアイテムが含まれ、Section の叙述部分に配置されます。非構造化データの役目は 2 つあります。第 1 に、CDA 仕様で要求される、人間が読める CDA のセクションを提供します。第 2 に、後続の構造化データから参照できる参照ポイントを提供します。
構造化データは、Section 内に Entry として記述します。その名前のとおり、構造化データはより多くの仕様に準拠する必要があります。各 Entry にはテンプレートが 1 つ以上関連付けられていて、その Entry が準拠する標準が指定されています。Entry には、日付、間隔、文字列、OID などさまざまなデータが格納されます。また、コード化データを格納し、特定のフィールドで特定の入力パターンを要求することもできます。例えば、codeSystem 属性は有効な OID でなければならず、空白にすることはできません。
次の表に、インターシステムズでサポートされる CCDA v2.1 のSection を示します。左の列に XSL を示し、右の列に対応するセクション名を示します。
XSL | CCDA セクション | メモ |
---|---|---|
AdvanceDirectives.xsl | Advance Directives | |
AllergiesAndOtherAdverseReactions.xsl | Allergies and Intolerances | |
AssessmentAndPlan.xsl | Assessment and Plan | |
Assessments.xsl | Assessment | |
ChieftComplaint.xsl | Chief Complaint | エクスポートでのみサポートされます。 |
ChiefComplaintAndReasonForVisit.xsl | Chief Complaint and Reason for Visit | エクスポートでのみサポートされます。 |
CarePlan.xsl |
この XSL は以下の SDA 要素を定義します。
|
|
DiagnosticResults.xsl | Results | |
DischargeDiagnosis.xsl | Discharge Diagnosis | |
EncounterDiagnoses.xsl | 既定の Encounter セクションの仕様を補完するために使用します。 | |
FamilyHistory.xsl | Family History | |
FunctionalStatus.xsl | Functional Status | |
Goals.xsl | Goals | |
HealthConcerns.xsl | Health Concerns | |
HistoryOfPastIllness.xsl | History of Past Illness | |
HistoryOfPresentIllness.xsl | History of Present Illness | |
HospitalAdmissionDiagnosis.xsl | Admission Diagnosis | |
HospitalCourse.xsl | Hospital Course | エクスポートでのみサポートされます。 |
HospitalDischargeInstructions.xsl | Hospital Discharge Instructions | |
HospitalDischargeMedications.xsl | Discharge Medications | |
Immunizations.xsl | Immunizations | |
Instructions.xsl | Instructions | |
Interventions.xsl | Interventions | |
Medications.xsl | Medications | |
MedicationsAdministered.xsl | Medications Administered | |
Non-RatifiedSections.xsl |
この XSL は、Care Considerations の SDA 要素を定義し、以下のサブフィールドが含まれます。
|
|
Outcomes.xsl | Health Status Evaluations and Outcomes | |
Payers.xsl | Payers | |
PhysicalExams.xsl | Physical Exam | エクスポートでのみサポートされます。 |
PlanOfTreatment.xsl | Plan of Treatment | |
ProblemList.xsl | Problem | |
ProceduresAndInterventions.xsl | Procedures | |
ReasonForReferral.xsl | Reason for Referral | エクスポートでのみサポートされます。 |
ReasonForVisit.xsl | Reason for Visit | |
SocialHistory.xsl | Social History | |
VitalSigns.xsl | Vital Signs |
CDA ドキュメントの XSLT ディレクトリ構造
インターシステムズの医療製品には、CDA ドキュメントと SDA を相互に変換する XSLT のライブラリが付属しています。
使用可能なルートレベルの XSLT を表示するには、インストール・ディレクトリに移動して、パス install-dir\CSP\xslt\SDA3 に従います。XSLT はこのディレクトリに含まれており、そのほとんどに XSLT が実行するアクションの名前が付いています。
例えば、CCDA-to-SDA は Consolidated CDA 1.1 の CCD を SDA に変換し、CCDAv21-to-SDA は Consolidated CDA 2.1 の CCD を SDA に変換し、SDA-to-C32v25 は SDA を C32 に変換します。その後、これらのファイルは、install-dir\CSP\xslt\SDA3\CDA-Support-Files の CDA-Support-Files ディレクトリにある他のファイルを呼び出します。
ルートレベルの XSLT (CDA-to-SDA.xsl など) はそれぞれ、CDA-Support-Files ディレクトリにある適切なファイルをインクルードする xsl:include 宣言で始まります。
ここでは、CDA-Support-Files 内のさまざまなディレクトリとその機能について説明します。イメージからわかるように、CDA-Support-Files には以下のディレクトリが含まれます。
-
System — OID やテンプレートなどの幅広く使用されるアイテムを定義する、ソース・コントロールされた構成不可能なファイル。
-
Site — さまざまな XSLT で使用される構成可能なファイル。
-
Import と Export — CDA と SDA を相互に変換する際に呼び出されるファイル。
-
Reports — 主に、CDA ドキュメントを HTML に変換して Web ブラウザで表示できるようにする変換。このディレクトリについては、以下では説明しません。
XSLT はキャッシュされるため、変換の編集後に変更を反映させるには、該当するネームスペースでプロダクションを再起動する必要があります。
System ディレクトリ
System ディレクトリには、広範なアイテムを定義する静的ファイルが含まれます。このフォルダのアイテムは構成不可能です。
System 内には、次のディレクトリがあります。
-
Common — あまり使用されないユーティリティ・テンプレートです。
-
OIDs — OID に関連付けられている変数です。
-
Site-Defaults — Site ディレクトリのソース・コントロール・バージョンです。このディレクトリは、実行時には呼び出されません。詳細は、“Site ディレクトリ” のセクションを参照してください。
-
Templates — テンプレート ID に関連付けられている変数です。
Site ディレクトリ
Site ディレクトリには、一意に構成可能なファイルが含まれます。
このディレクトリ内のファイルはアップグレード時に変更されないため、カスタマイズ内容が保持されます。アップグレード後、これらのファイルを install-dir\CSP\xslt\SDA3\CDA-Support-Files\System\Site-Defaults にある新規バージョンのファイルで手動で調整する必要があります。この作業は、これらのファイルをカスタマイズしているかどうかに関係なく行う必要があります。Site ディレクトリ内にあるカスタマイズしていないファイルもすべてこのディレクトリに手動でコピーし、Site-Defaults にある新規バージョンで更新する必要があります。
Site 内には、次のファイルが含まれます。
-
ImportProfile および ExportProfile — CDA ドキュメントをインスタンスにインポートするプロセス、およびインスタンスから CDA ドキュメントをエクスポートするプロセスで使用する構成設定です。以下の “インポート・プロファイル” および “エクスポート・プロファイル” のセクションを参照してください。
-
OutputEncoding — 出力される CDA ドキュメントのエンコードを制御するために使用される XSLT です。既定値は UTF-8 です。
-
Variables — インポートまたはエクスポートの際に使用される構成可能な変数です。これらの変数は組織を表し、“ホーム” 情報を設定します。
インポート・プロファイル
インポート・プロファイルは、CDA ドキュメントのインポート時に構成設定を制御します。インポート・プロファイルのほぼすべての変数には、<sectionTemplateId>、<entryTemplateId>、またはその両方があります。例外は resultsImportConfiguration で、代わりに <sectionC32TemplateId> と <sectionC37TemplateId> に別個のテンプレート ID が付けられています。<sectionTemplateId> または <entryTemplateId> のどちらが存在するかは、問題の変数が Section モジュールと Entry モジュールのどちらにあるかによって決まります。
さらに、変数によっては他の設定が含まれることもあります。次の表に、このような設定、および設定が属する変数とその値を示します。
変数名 |
設定 |
値 |
---|---|---|
generalImportConfiguration/blockImportCTDCodeFromText | disabled |
CDA の @code 属性が利用できない場合に、CDA 文字列、叙述テキスト、または originalText の SDA CodeTableDetail コード・プロパティへのインポートをブロックします。 この設定が有効化されていて、コード化要素が nullFlavor の場合、テキストは SDA のコード・プロパティにロードされません。ただし、ターゲットの SDA 要素が OrderItem であり、構成パラメータ orderItemDefaultCode または orderItemDefaultDescription が有効になっている場合を除きます。 blockImportCTDCodeFromText が有効になっていない場合、インポート動作は前バージョンと同じです。 |
generalImportConfiguration/sdaActionCodes |
enabled |
SDA アクション・コードが有効化されているかどうかを示します。SDA アクション・コードは、データの更新と削除を制御します。 |
generalImportConfiguration/sdaActionCodes |
overrideExternalId |
該当する場合、CDA <id> 要素を使用して SDA ExternalId プロパティ値をインポートする必要があるかどうかを示します。 |
generalImportConfiguration |
enableOtherOrders |
有効化されていて、CDA の Result を SDA の LabOrder または RadOrder として分類できない場合、Result は SDA OtherOrder としてインポートされます。それ以外の場合、Result はインポートされません。 |
generalImportConfiguration/representedOrganizationId |
concatRootAndNumericExtension |
値が 1 の場合、hl7:representedOrganization/hl7:id @root が OID で、@extension が数値であれば、両者が 1 つの施設 OID に連結されます。 |
generalImportConfiguration |
narrativeImportMode |
値 1 では、叙述セクションをテキストとしてインポートし、<br/> と叙述行フィードを両方とも行フィードとしてインポートします。値 2 では、<br/> のみを行フィードとして使用して、テキストとしてインポートします。Result Text、Hospital Discharge Instructions、および Reason for Visit のインポートにのみ適用されます。 |
dischargeMedicationsImportConfiguration medicationsImportConfiguration medicationsAdministeredImportConfiguration |
pharmacyStatus |
Medication のステータスを示します。値はどの変数に配置されているかによって異なり、Medication のインポート元の CDA セクションを示します。 |
planImportConfiguration | effectiveTimeCenter |
0 に設定すると、effectiveTime/center 値は FromTime にインポートされます。 1 に設定すると、effectiveTime/center 値は FromTime と ToTime にインポートされます。 注意 : effectiveTime/center を特定の care plan に対して生成する場合、その care plan に effectiveTime/high および effectiveTime/low を入力しないでください。 |
resultsImportConfiguration |
resultOrganizerTemplateId |
hl7:organizer が複数ある場合に、指定された結果エントリ内で正しい hl7:organizer を選択するのに役立ちます。指定される可能性がある代替値の 1 つとして、$ihe-PCC-LabBatteryOrganizer があります。 |
resultsImportConfiguration |
orderItemDefaultCode |
OrderItem Code または Description を導出するための情報が CDA の Result に含まれない場合に、SDA の OrderItem Code に使用するコードです。 |
resultsImportConfiguration |
orderItemDefaultDescription |
SDA の OrderItem Code または Description を導出するための情報が CDA の Result に含まれない場合に、SDA の OrderItem Code に使用する説明です。 |
healthFundImportMode |
enabled |
値が 1 であれば、この設定は有効です。これが既定の設定です。得られた SDA への Encounter ごとに Health Fund ストリームレットが追加されます。 |
healthFundImportMode |
disabled |
値が 0 であれば、この設定は無効です。Encounter ごとに Health Fund ストリームレットが作成されることはありません。 |
memberEnrollmentImportMode |
enabled |
値が 1 であれば、この設定は有効です。CCD/CCDA に Payor を受け取るたびに、得られた SDA に Member Enrollment ストリームレットが作成されます。 |
memberEnrollmentImportMode |
disabled |
値が 0 であれば、この設定は無効です。これが既定の設定です。得られた SDAに Member Enrollment ストリームレットは作成されません。 |
エクスポート・プロファイル
エクスポート・プロファイルのほとんどの要素には、<emptySection> 要素、<narrativeLinkPrefixes> 要素、またはその両方があります。<emptySection> 要素は、情報を含まないセクションをエクスポートするかどうかを制御します。<narrativeLinkPrefixes> には、CDA ドキュメントの叙述部分、すなわち人間が読める部分に含めるテキストを入力できます。
さらに、セクションによっては他の設定が含まれることもあります。このような設定は、エクスポートするデータに応じて編集および拡張できます。次の表に、このような一意の設定、および設定が存在するセクションとその値を示します。
セクション |
設定 |
値 |
---|---|---|
admissionDiagnoses/diagnosisType |
codes |
Admission の追加の診断タイプとして使用できるコード。 |
advanceDirectives/advanceDirectiveType |
codes |
Resuscitation や intubation など、さまざまな事前指示タイプに対応するコード。 |
assessment/diagnosisType |
codes |
Assessment の追加の診断タイプとして使用できるコード。 |
dischargeDiagnoses/diagnosisType |
codes |
Discharge の追加の診断タイプとして使用できるコード。 |
encounterDiagnoses/exportToC32 | disabled | 有効な場合 (値 = 1)、encounter diagnosis を CDA C32 にエクスポートできます。 |
medications/currentMedication |
includeHistoricalMedications |
現在の Medications リストに、Medications 履歴を含めるかどうかを制御します。 |
medications/currentMedication |
windowInDays |
Medication の有効期間と、Medication を引き続き現在の Medications リストに含めることができる期間を制限します (日数)。 |
medications/currentMedication |
hideNarrativeColumn |
叙述列を非表示にします。 |
planOfCare | effectiveTimeCenter |
0 に設定すると、FromTime が effectiveTime/low にエクスポートされ、ToTime が effectiveTime/high にエクスポートされます。 1 に設定すると、FromTime と ToTime は同じ NULL 以外の値になり、その値が effectiveTime/center にエクスポートされます。それ以外の場合は、FromTime に値があれば、その値が effectiveTime/low にエクスポートされます。ToTime に値があれば、その値が effectiveTime/high にエクスポートされます。 例外 : ProcedureTime に値がある場合、その値が FromTime の代わりに effectiveTime/Center にエクスポートされます。 |
problems/currentCondition |
codes |
ACTIVE や CHRONIC など、さまざまな問題タイプに対応するコード。 |
problems/currentCondition |
windowInDays |
Medication の有効期間と、Medication を引き続き現在の問題リストに含めることができる期間を制限します (日数)。 |
socialHistory/emptySmokingStatus |
exportData |
データが含まれていない場合に smokingStatus をエクスポートするかどうかを指定します。 |
Import ディレクトリと Export ディレクトリ
Import ディレクトリと Export ディレクトリには、XSLT がデータを変換する際に呼び出されるファイルが含まれます。
-
Import ディレクトリには、CDA を SDA に変換する際に呼び出されるファイルが含まれます。
-
Export ディレクトリには、SDA を CDA に変換する際に呼び出されるファイルが含まれます。
Import ディレクトリと Export ディレクトリの両方に、Common、Entry-Modules、Section-Modules というラベルが付いたサブディレクトリが含まれます。
-
Common ディレクトリには、さまざまな変換でよく使用されるグローバル変数を設定する XSLT が含まれます。また、これらの XSLT は、よく使用されるロジック (address-Home など) が含まれるテンプレートを提供します。
-
Section-Modules ディレクトリには、指定された CDA セクションとの間でデータを変換する XSLT が含まれます。各 XSLT の名前は、その XSLT で変換する CDA セクションの名前に厳密に一致します。
-
Entry-Modules ディレクトリには、変換をドキュメントの正しい Entry にマップしてからコード化データを解析する XSLT が含まれます。このため、このディレクトリ内の XSLT は、Section-Modules ディレクトリ内の XSLT と比べて大幅に長くなる傾向があります。
ルートレベルの XSLT (CDA-to-SDA.xsl など) はそれぞれ、適切な Section-Modules のファイル、Entry-Modules のファイル、Common のファイル、必要な他のファイルをインクルードする xsl:include 宣言で始まります。