医療情報学会課題研究会「電子カルテ研究会」およびその年次大会の通称シーガイアミーティングでは、1994年頃から電子カルテの診療データを施設間で相互に電子的に交換するための表現形式として、Standard Generalized Mark-up Language (SGML)に準拠したデータ記述言語Medical Mark-up Language(MML)の仕様作成を検討してきた[1]。1995年には厚生省電子カルテ開発事業が開始され、その中でカルテデータ構造技術コアチームが上記検討メンバーを中心にして発足した。ここでは、MMLの仕様をカルテの論理構造に基づいて具体的に検討することが行われ、その成果としてMMLの暫定版がDocument Type Definition (DTD)により記述され公開された[2]。さらに、DICOM,MML,HL7をどのように組み合わせて運用するかという医療情報交換のための運用指針の策定を目的とした作業班が組織され(班長、木村通男(浜松医大医療情報部))、MML策定メンバーの一部がこの作業班のメンバーとして入ることになった。そして、この作業班とともに、MMLを実装可能なレベルにまで詳細化する作業が行われた。
この文書は、MMLの規格を解説しているが、SGMLの一般的な知識を持っていることを前提に書かれている。SGMLについては、参考文献4,5などを参照されたい。とくに文献4が非常によくまとめられている。
(1) MMLは、基本的には診療施設間で診療データを電子的に交換するためのデータ記述言語として開発されている。しかし、診療施設と患者宅、検査センターと診療施設との間など、診療データを電子的に交換するあらゆる場面での利用も想定されている。
(2) MMLは、ある施設が別の施設に診療データを送信する場合に使用するデータ記述言語である。施設内のデータがどのような形式で表現され記憶管理されるかは、各施設のシステムの自由である。従って、データ交換の際には、システム内部の表現形式からMML形式への変換、またはその逆変換を行うことを想定している。
(3) MMLは、OSIモデルの第7層(アプリケーション層)と第6層(プレゼンテーション層)に限定したデータ記述言語である。したがって、どのように意味のあるデータをまとめあげて、どのような文字列で記述するかという部分までは規定するが、記述されたデータのかたまりをどのような方法で相手システムと接続して送信するかといった第5層以下の部分は規定しない。言い換えれば、MMLによって記述されたデータは、電子メールで送信しても、ディスクに格納して郵便で送付しても、ファイル転送プロトコルによって送信しても構わない。
(4) MMLはSGMLに準拠した記述言語であり、これによって記述された診療データは、ひとつのSGMLインスタンス(ドキュメント)となる。
第1版では以下の条件があるが、これは今後の版で改定される可能性がある。
(1) MML第1版では、ひとりの患者についての、ひとつまたは複数の時点での診療データを、ひとつのSGMLインスタンスで表現する。複数の患者についての診療データは、患者ごとに複数のインスタンスとする。
(2) 暗号化についての規定を含まない。
(3) MMLにより記述された複数のインスタンスをどのようにひとつの連続したストリーム(またはファイル)にまとめあげるかという部分は規定しない。
(4) 記録者の情報、患者の識別情報、生活歴、保険情報、既往疾患リスト、主訴、既往歴、家族歴、現病歴、検査結果、処方オーダー、処置記録、処置オーダー、サマリー情報をデータ交換の対象として含む。ただし、フリーテキストで表現することを前提としている情報もあれば、HL7などによる十分詳細なレベルに分解されたデータの交換を前提としているものもあり、情報の粒度(Granularity)は一定ではない。
(1) 文字コードセットのベースセットおよび量集合Quantity Set については、ISO8879-1986 および JIS X4151 日本語SGML宣言を採用する。
(2) 量集合Quantity Setのデフォルト設定値と異なるものは以下に示す。
(1) 最大128文字までを有効とする。したがって必要ならSGML宣言において量集合Quantity Set におけるDTAGLEN = 128 に変更すること。
(1) 最大128文字までを有効する。したがって必要ならSGML宣言において量集合Quantity
Set におけるNAMELEN = 128 に変更すること。
タグに囲まれるドキュメント内容は、以下のデータ型のいずれかに属する。
特別な意味を持つ文字はエスケープ文字を前置する必要がある。
(1) ST型:文字列型
先行する空白、後置される空白を無視した文字列。表示上の制御文字を含まない。
不等号文字(<または>)そのものを挿入したい場合には、それぞれ< または> を挿入する。アンパサンド文字(&)そのもの挿入したい場合には、& を挿入する。セミコロン文字(;)を挿入したい場合には、; を挿入する。
(2) TX型:文章型
先行する空白、後置される空白を無視しない文字列。1個以上の繰り返しが許される。表示上の改行(パラグラフ区切り指示)を含めたい場合には、<BR>を挿入する。
不等号文字(<または>)そのものを挿入したい場合には、それぞれ< または> を挿入する。アンパサンド文字(&)そのものを挿入したい場合には、& を挿入する。セミコロン文字(;)を挿入したい場合には、; を挿入する。
(3) DT型:日付型
HL7 v2.3 に準拠。YYYY[MM[DD]] であらわされる文字列型である。
例1:1984年 1984
例2:1984年7月 198407
例3:1984年7月9日 19840709
(4) TM型:時刻型
HL7 v2.3 に準拠。HH[MM[SS[.S[S[S[S]]]]]][+/-XXXX] であらわされる文字列型である。
例1:08時 08
例2:08時02分 0802
例3:08時02分12秒 080212
例4:08時02分12.43秒 080212.43
例5:08時02分 JST 0802+0900
(5) TS型:タイムスタンプ型
HL7 v2.3 に準拠。DT型とTM型を連結してあらわされる文字列型である。YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]] [+/-XXXX]
例3:1984年7月9日08時02分 198407090802
(6) ML型:MMLコード型
MMLで定められたコード表にもとづくコード値。コード値そのものは文字列型である。
検体検査結果、処方、画像などのデータについては、(1)HL7やDICOMなどの規格が存在する、(2)
バイナリデータ形式がデータ交換上効率がよい、(3)独立したデータファイルで管理されることが多い、などの理由から、これらはMMLインスタンスから独立したデータファイルとし、MMLからそれらを外部参照する方式を強く推奨している。MMLインスタンスにこれらのデータを直接埋め込む方法もMMLv1.0規格としてはサポートするが、十分に検討されていないので本規格書では外部参照する方式だけを記載する。外部参照形式は以下のような記述形式をとる。
<TEST-RESULT TYPE="分野コード">
<MREF
CONTENT-TYPE="情報タイプ/サブタイプ"
REF="MMLインスタンスからの相対URL記述"
その他のアトリビュートのリスト > の1回以上の繰り返し
</TEST-RESULT>
ここで、分野名として、"LABORATORY"(検体検査結果)、"RADIOLOGY"(放射線関連結果)、"REPORT"(報告書)、"ENDOSCOPY"(内視鏡検査)、"PATHOLOGY"(病理検査)などが定義されている。 この定義はMERIT-9 (医療情報交換規約運用指針)で定義されているものである。CONTENT-TYPEは、MIME(RFC1341,1521,1522,1554)のCONTENT-TYPEに準拠しており、"TEXT/PLAIN"、"IMAGE/DICOM"、"APPLICATION/HL72.3-HL7ER2.3"などが定義されている。この定義はMERIT-9 (医療情報交換規約運用指針)で定義されているものである。
実例として、検体検査結果を外部参照する場合には、
<TEST-RESULT TYPE="LABORATORY" >
<MREF
CONTENT-TYPE=" APPLICATION/HL72.3-HL7ER2.3"
REF=" patient0203/CBC0923.HL7"
EXAM-DATE="19970423" >
</TEST-RESULT>
のようになる。画像についても同様の方法で、DICOM,JPEG,GIF,TIFF,ISAC形式など複数のフォーマットの外部ファイルを参照可能としている。このカバーする範囲、分野コード、MREFタグにおけるアトリビュートの必須、任意などについてはMERIT-9を参照されたい。
表1は、MMLver.1.0b3(b3はベータ第3版を意味し、最終版に近いが、まだ変更されることがあり得る。実装を行う場合には、正式版を参照すること)におけるSGMLエレメントの一覧である。各列の意味は以下のとおりである。
(1) タグ
DTDにおけるエレメント名であり、これが< >に囲まれて開始タグとなる。なお、終了タグは外部参照を示すMREFタグをのぞき省略できない。下位構造をもつ(つまりタグが階層的にネスティングする)エレメントのタグ名はすべて“-SECTION“で終わるように名づけられている。ひとつの”XXXX-SECTION“で囲まれる範囲内では、その直下のエレメントの出現順はこの一覧表での出現順序には意味がないので、順不同である。従ってパーサーはこの範囲内ではタグの出現順序を想定して作成してはいけない。
(2) 省略
このエレメント自体が省略(つまりインスタンス中に出現しない)可能かどうかを示すが、解釈には以下の注意が必要である。
あるエレメントの省略欄が
1) 空欄の場合には、そのエレメント自体はいつでも省略可能である。
2)「不可」の場合には、該当するエレメント(以下では当該エレメントという)が属するすぐ上位階層のエレメント(以下では直上エレメントという)が省略可能かどうかをチェックし、以下の2通りに分けて解釈する必要がある。
2−1)直上エレメントのこの欄が空欄(省略可能)の場合で、かつ実際に省略されているのであれば、当該エレメントは省略してもよい。
2−2)直上エレメントのこの欄が「不可」の場合には、当該エレメントはかならず存在しなければならない。
簡単に言いかえると、直上エレメントが実際に存在するのであれば、不可なら省略できないということになる。
(3) 反復
このエレメント自体が、連続して繰り返し出現することが許されるかどうかを示す。「あり」と記載されているエレメントは反復が可能である。連続して繰り返す必要があるが、その繰り返しのなかでの順序は意味を持たない。
(4) エレメント名称
日本語名称で、日本人間のコミュニケーションのために存在する名称である。
(5) 型
エレメントのデータの値のデータ型で、前出の基本データ型のどれかである。
この欄に「なし」と記載されている場合には、このエレメントはタグだけからなる。
(6) メモ
エレメントの値などを簡単に解説したものである。
7.2 各エレメントの説明
準備中 当面は一覧表で理解ください。
第4章に記載したとおり、ISO8879-1986 および JIS X4151を採用する。さらに、DTAGLEN = 128、NAMELEN = 128に変更指定する。
実際にMMLver.1.0によりインスタンスが交換される場合には、SGML宣言部を先頭分に同梱してもよいが、多くの場合省略してよい。省略された場合には、上記を仮定するものとする。
現時点でのバージョンを付録2に掲載するが、最新版は常にWWWを参照すること。
http://www.h.u-tokyo.ac.jp/mml/
http://www.miyazaki-med.ac.jp/mml/
(1) 吉原博幸、山本隆一, 山崎俊司,
大橋克洋, 大江和彦, 八幡勝也, 山下芳範, 高橋 究:平成7年度厚生省健康政策調査研究事業報告--電子カルテシステムに関する研究,
1997.
http://www.miyazaki-med.ac.jp/medinfo/SGmeeting/document/ehr_kousei_full.web
_ver/ehr_kousei_full.html
(1996.03)
(2) 吉原博幸、大江和彦、大橋克洋他:医療情報の交換手順の標準化に関する研究報告書,
1997.
http://www.miyazaki-med.ac.jp/medinfo/SGmeeting/document/mml9702/techcore.html
(3) 高橋 究、山本隆一、皆川和史他: インターネットにおける診療情報流通のための共通フォーマットの検討. 第15回医療情報学連合大会論文集, 809-810, 1995.
(4) Neil Bradley: The Concise <SGML> companion. Addison-Wesley Publishing, 1997
(5) Eric van Herwijnen, 実践SGML.
SGML懇談会実用WG監訳,
日本規格協会,1992