2.1.2.1. 章・節番号、エレメント番号
MML共通形式、MMLコンテンツモジュールの各エレメントに対する番号と章番号が混在していた。わかりやすくするために各エレメントの先頭にMをつけ、共通形式、コンテンツモジュールに連番を振った。
変更前 |
変更後 |
1.1. |
M1.1. |
2.1.2.2. 解説にデータ型、省略、繰り返しを明記した
エレメント表で記載されてはいるが、解説で記載されていなかったデータ型や省略について明示的に記載することとした。
【内容】薬剤名称 +【データ型】string
2.1.2.3. MML Header, docInfoのnamespace宣言
以下のようにnamespace宣言をしていた。
xmlns:mml ="http://www.medxml.net/MML/v4"
xmlns="http://www.medxml.net/MML/v4"
下記のようにbaseを間に挟むように改めた。
xmlns:mml ="http://www.medxml.net/MML/v4/base/1.0"
xmlns="http://www.medxml.net/MML/v4/base/1.0"
2.1.2.4. DTDについての記述
MML4ではW3C XML Schemaを採用しておりDTDはもはや使用しないため表現の修正を行った。
-|moduleVersion|uri|#IMPLIED| |使用モジュールのDTDのURIを記載 +|moduleVersion|uri|#IMPLIED| |使用するモジュールのXMLスキーマのURIを記載
2.1.2.5. 初診時特有情報の分娩時週数
P32Wといった、ISO8601のduration表記に準じたPnWで表現することとし、xs:duration型としていたが、XMLスキーマのxs:duration型には週数を範囲とする記載法がなく、一般的なバリデータではエラーとなるため、xs:string型で表現することとした
+===== M15.2.1.2. mmlFcl:deliveryWeeks 【内容】分娩時週数. + -【データ型】duration 書式:PnW + +【データ型】string. duration型に準じる. xs:duration(ISO8601形式)には週の単位がないため、便宜上の書式を採用する。書式:PnW +
-|xs:duration|期間型。ISO8601形式に週(W)を加えたPnYnMnWnDTnHnMnS形式で表記する。 +xs:duration:: 期間型。ISO8601形式PnYnMnDTnHnMnS形式で表記する。
2.1.3. 臨床サマリーモジュール内の診断履歴情報
文書では繰り返しありとなっているところをスキーマでは繰り返さなくなっているところを修正した。
- <xs:element minOccurs="0" ref="mmlRd:RegisteredDiagnosisModule"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="mmlRd:RegisteredDiagnosisModule"/>
2.1.4. 手術記録モジュール内のエレメントのoccurrence
手術記録モジュールの解説文書に記載されているエレメントのoccurrenceとスキーマに記載されているoccurrenceが一部異なっていた。調査の結果、MML ver 2, ver 3でも同様に文書とDTDにずれが見られた。検討の結果、DTD、スキーマに文書を合わせることとした。
M17.1.1.4. mmlSg:surgicalDepartment ? M17.1.1.4.1. mmlDp:Department M17.1.1.5. mmlSg:patientDepartment ? M17.1.1.5.1. mmlDp:Department M17.1.4.1.1. mmlSg:staffInfo M17.1.4.1.1.1. mmlPsi:PersonalizedInfo M17.1.6.1.1. mmlSg:staffInfo M17.1.6.1.1.1. mmlPsi:PersonalizedInfo
M17.1.1.4. mmlSg:surgicalDepartment ? M17.1.1.4.1. mmlDp:Department + M17.1.1.5. mmlSg:patientDepartment ? M17.1.1.5.1. mmlDp:Department + M17.1.4.1.1. mmlSg:staffInfo M17.1.4.1.1.1. mmlPsi:PersonalizedInfo + M17.1.6.1.1. mmlSg:staffInfo M17.1.6.1.1.1. mmlPsi:PersonalizedInfo +
2.1.5. 処方箋モジュールのmmlPs:repetitionsエレメント追加
処方箋モジュールで頓用処方の総回数を記載する項目がなかったため追加した。 下記のように追加した
M24.2.9 mmlPs:repetitions 【内容】総投与回数。(頓用、外用などの場合) + 【データ型】decimal + 【省略】可 + 【説明】頓用処方や外用処方の場合など、薬剤が繰り返される回数。
2.1.6. 処方箋、注射モジュールの薬剤コードエレメント
処方箋、注射記録モジュールとも薬剤コードの所属するコード体型を記録するsystem属性が存在するが、そのネームスペースが欠落していたのでそれぞれのネームスペースを付与した
system
mmlPs:system mmlInj:system
2.1.7. 処方箋モジュールの1日量処方表記
処方箋モジュールの書式は1回量表記がベースとなっているが、システム上、止むを得ない場合に一日総量をdoseに記載し、frequencyPerDayに1として、用法指示に分割指示を記載することも許容することとした。
2.1.8. 処方箋、注射モジュールの薬剤コード体系設定
処方箋モジュール、注射モジュールで使用する薬剤コード体系をMML0037テーブルにまとめた。
2.1.9. 注射記録モジュールの投与開始日時、投与終了日時
注射では投与開始日ではなく、投与開始日時が記録されるため記述部分でデータ型がdateとなっていたのをdateTime型に修正した。(スキーマに変更なし)
+===== M25.1.4. mmlInj:startDateTime +【内容】投与開始日時 + +【データ型】dateTime + 【省略】可 + -【データ型】date + 【説明】投与を開始した時間を記載する
-===== mmlInj:endDateTime +===== M25.1.5. mmlInj:endDateTime 【内容】投与修了日時 + +【データ型】dateTime + 【省略】可 + -【データ型】date +
2.1.10. XMLスキーマのリファクタリング。
xsdの書式で型定義やoccurrence定義が不十分であったり、冗長であったところを修正した。XMLスキーマとして暗黙的に指定されている型やoccurrenceについても明示的に記載することとした。
2.1.10.1. occurrenceの明示(基礎的診療情報モジュール)
- <xs:element minOccurs="0" ref="mmlBc:allergy"/>
- <xs:element minOccurs="0" ref="mmlBc:bloodtype"/>
- <xs:element minOccurs="0" ref="mmlBc:infection"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="mmlBc:allergy"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="mmlBc:bloodtype"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="mmlBc:infection"/>
2.1.10.2. 文字列型からboolean型へ
文字列(トークン)型で”true”あるいは”false”と制限をかける制約とboolean型を指定することで、インスタンス内に記載されるデータに差はないが、boolean型として明示的に定義するほうが冗長さも回避できる。
- <xs:attribute name="emergency" form="qualified">
- <xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="true"/>
- <xs:enumeration value="false"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
+ <xs:attribute name="emergency" type="xs:boolean" use="optional" form="qualified"/>
サマリー情報にあるemergency属性, deathInfoエレメントなどに上記の変更を行った。
2.1.10.3. 文字列型からdate型へ
MMLの規約として、日付はCCYY-MM-DDのISO8601形式で記載することとしているため、date型で指定するのと同様にインスタンスに記載されるが、明示的に型を指定することによりデータのバリデーションを行うことができるためスキーマの修正を行った。
-<xs:element name="birthday" type="xs:string"/> +<xs:element name="birthday" type="xs:date"/>
2.1.10.4. attributeの付け替えなど
DTDからXML schemaにはほぼ自動変換したものを使用していたが、冗長であったり定義の並びが離れていて分かりづらかったりしたところを修正した。
2.1.10.5. 誤字、表現の修正
その他誤字の修正、表現の修正を多数行った
+===== M23.4.4. mmlFs:boStatus 【内容】排泄物の性状。軟便、下痢、混濁など。大量・中等量、少量など数値化できない場合にはここに記載する。 + -【省略】省略可 + -【データ型】string +【データ型】string + +【省略】省略可
2.1.11. スキーマに関わる修正
2.1.11.1. MmlHeaderのtoc, tocItemの削除
以前から必要性については疑問視されてきていた。SAX系のパーサでは有用とされるが、現行のXMLテンプレートシステムとの相性の悪さや現在主流のXMLパーサでは単に読み飛ばされるだけであるため廃止することとした。
2.1.11.2. XHTML記述の追加
XHTML使用可とされているエレメントで、XHTMLが使用できなくなっていたのを修正した。
2.1.11.3. MmlのcreateDate属性
MML Ver 2.3ではdate型、MML ver 3ではdateTime型でとされていた。Ver 3.xを引き継ぐこととし、
2.1.11.4. docInfo, moduleVersion属性
uri型がXML Schema仕様にないため、string型に変更した。
2.1.11.5. mmlSm:attrListの属性としてrelationおよびrelatedDocの定義が誤って定義されていた。
下記のように修正を行った。
<xs:attribute name="relation" use="optional" type="xs:string" form="qualified"/>
</xs:extension>
</xs:simpleContent>
- <xs:attribute name="relation" use="optional" type="xs:string" form="qualified"/>
</xs:complexType>
</xs:element>
</xs:schema>
2.1.11.6. mmlSg:referenceInfo
ドキュメントおよびVer 3.0のDTDでは1回以上の繰り返しとなっていたため下記のように修正した。
<xs:element name="referenceInfo">
<xs:complexType>
<xs:sequence>
- <xs:element ref="mmlCm:extRef"/>
+ <xs:element ref="mmlCm:extRef" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
2.1.11.7. mmlPs:frequencyPerDay
4.1.1の解説文書ではdecimal, スキーマはstringであったが、ともにintegerに修正
2.1.11.8. mmlPs:batchNo
4.1.1の解説文書ではdecimal, スキーマはintegerであった。スキーマに合わせて解説文書をintegerに修正
2.1.11.9. mmlSm:clinicalRecord, mmlSm:deathInfo, mmlSm:testResult
属性情報のmmlSm:dateがdate/dateTimeとDTDの曖昧さを許容していた。XML Schemaでは型定義が厳密であることから、dateTime型に統一することとした。
2.1.11.10. mmlLb:numValue, mmlLb:value
Ver 3のDTDの定義では、下記のようにnumValueとしては空欄でもデータが異常値であることを示すことができていた。
<mmlLb:item>
<mmlLb:itemName mmlLb:itCode="915" mmlLb:itCodeId="KRTKC">HBsAb</mmlLb:itemName>
<mmlLb:value>ヨウセイ</mmlLb:value>
<mmlLb:numValue mmlLb:out="N" xsi:nil="true"/>
</mmlLb:item>
DTDではnil(空白)が許されていたが、mmlLb:numValueをdecimal型としたことで空白の値を取ることが原則許されなくなった。
このような表現を許すようにVersion 4.1.2ではnumValueにnillable属性をとることした。
<xs:element name="numValue" nillable="true">
この場合、インスタンスにはnilであることを明示的に記入する必要がある。
<mmlLb:item>
<mmlLb:itemName mmlLb:itCode="915" mmlLb:itCodeId="KRTKC">HBsAb</mmlLb:itemName>
<mmlLb:value>ヨウセイ</mmlLb:value>
<mmlLb:numValue mmlLb:out="N" xsi:nil="true"/>
</mmlLb:item>
表記が冗長になること、本来valueの属性であるべきことから4.2.0以降では、valueの属性にnumValueと同じくmmlLb:out, mmlLb:up, mmlLb:low, mmlLb:normalの属性をもたせることとした。
<mmlLb:item>
<mmlLb:itemName mmlLb:itCode="915" mmlLb:itCodeId="KRTKC">HBsAb</mmlLb:itemName>
<mmlLb:value mmlLb:out="N">ヨウセイ</mmlLb:value>
</mmlLb:item>
2.1.11.11. mmlRd:categoryの修正
categoryに文字列を記入することができなくなっていたため下記のように修正を行った。
<xs:element name="category">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="mmlRd:attlist.mmlRd.category"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
2.1.11.12. mmlSc:personNameのtableId属性
qualified指定がされていなかったため、namespace指定が落ちていた。追加して他の属性との整合性をとった。
<xs:attribute name="tableId" form="qualified">
2.1.12. 処置モジュールの追加
汎用処置モジュールの追加を行った。詳細はモジュール解説を参照。
2.1.13. 透析モジュールの分割
透析モジュールは透析履歴モジュール、透析オーダーモジュール、透析実施記録モジュールに3分割する方針であったが、このリリースでは盛り込めなかった。
2.1.14. サンプルインスタンスの追加
バイタルサインモジュール、体温表モジュール、報告書モジュール、透析モジュール、汎用処置モジュールのサンプルを追加した。
2.1.15. チェックプログラムの追加
Rubyでスキーマ、インスタンスの整合性を取るチェックプログラムを作成した。以下の手順でチェックプログラムを操作できる。
% git clone git@github.com:skoba/mml.git
% cd mml
% bundle install
% rake
2.1.16. 誤字、表現の修正
数多くの誤字の修正および表現の修正を行った。(下記参照)
2018/8/8公開 MML4.2.0 より2.1. MML ver 4修正履歴を抜粋