カスタム・スキーマ・カテゴリの作成
InterSystems IRIS® データ・プラットフォームでカスタム・スキーマ・カテゴリを作成しなければならない場合があります。ここでは、その詳細について説明します。
組み込みスキーマ・カテゴリ定義は絶対に編集しないでください。カスタム・スキーマが必要な場合は、組み込みスキーマ・カテゴリ定義をスキーマ・ベースとして使用するカスタム・スキーマ・カテゴリ定義を作成します。
これらのタスクはプロダクションが存在しているネームスペースで実行する必要があります。
カスタム・スキーマ・カテゴリが必要な場合
例えば、一般的な方法は、他の標準のドキュメント構造にカスタム・セグメントを追加することです。
ロードした標準スキーマに従っていないドキュメントを操作する場合は、以下のどちらかを実行するために対応するカスタム・カテゴリを作成する必要があります。
-
構造的なドキュメントの検証の実行
-
BPL、DTL、およびルーティング・ルール構文でのセグメントおよびフィールド・パス名の使用
カスタム・スキーマ・カテゴリの作成方法
カスタム・スキーマ・カテゴリを作成する一般的な方法が 4 つあります。
-
最も厳密にニーズを満たしているスキーマ・ファイルのコピーを作成します。そのファイルを編集します。その後で、"ポータル・ツール" の説明に従って、そのファイルをインポートします。
-
スタジオで、最も厳密にニーズを満たしているスキーマ・カテゴリ定義を開きます。[ファイル]→[名前を付けて保存] を使用して新しい定義を作成します。その後で、そのコピーを編集します。"InterSystems IRIS 内でのスキーマ・カテゴリの構文" で、この定義の構文について詳しく説明します。
-
スタジオ・ウィザードを使用して、新しいスキーマ・カテゴリ定義を作成してから、それを編集します。"カスタム X12 スキーマの作成" を参照してください。同じプロセスを EDIFACT に対しても使用できます。
InterSystems IRIS 内でのスキーマ・カテゴリの構文
InterSystems IRIS では、EDIFACT および X12 用のスキーマ・カテゴリ定義を表現するために同じ XML ベースの構文が使用されます。
カスタム・スキーマ・カテゴリを作成する際、カスタム・セグメント (Z セグメント) を定義し、これらのセグメントを含む可能性のあるメッセージ・タイプとメッセージ構造を記述することにより、既存のスキーマを補足します。これを行うために必要なことは、XML 要素 <MessageType>、<MessageStructure>、および <SegmentStructure> を使用することのみです。
カスタムのスキーマ・カテゴリ定義は、組み込みの定義より単純で、含まれる文は少なくなります。ベース・カテゴリ内のすべてがカスタムのスキーマ・カテゴリ定義に含まれます。標準メッセージ・タイプの定義を繰り返す必要はありません。カスタム・メッセージ・タイプを定義するだけです。これを行うための規則は以下のとおりです。
定義対象 | 定義方法 |
---|---|
カスタムのスキーマ・カテゴリ定義 | <Category> |
カスタム・セグメント | <SegmentStructure> |
カスタム・セグメントを含むメッセージ構造 | <MessageStructure> |
カスタム・セグメントのあるメッセージ構造を含むメッセージ・タイプ。メッセージ・タイプは以下を指定します。
|
<MessageType> |
<Category>
<Category> 要素は、カスタム・スキーマ・カテゴリを記述する XML ドキュメントの最上位のコンテナです。
以下のテーブルは、<Category> の属性を示しています。
属性 | 説明 | 値 |
---|---|---|
name | [スキーマ構造] ページの利用可能なスキーマ・カテゴリのリストに表示される名前。 | 文字列。便宜上、スキーマ・ファイルの名前を使用します。 |
std | 1 (真) の場合、この <Category> ブロックは標準の HL7 スキーマ・カテゴリを示します。デフォルトは、0 (偽) です。 | 標準のスキーマ・カテゴリ定義専用。カスタム・スキーマには std を使用しないでください。 |
base | このカスタム・スキーマ・カテゴリのベースとなるスキーマ・カテゴリを指定します。スキーマ・ベース内の各定義が自動的にカスタム・カテゴリに含まれ、カスタム・スキーマ・カテゴリ内の文が単純にベースに追加されます。 | 別のスキーマ・ファイル内の <Category> ブロックを使用して定義された標準またはカスタム・スキーマ・カテゴリの name。 |
<SegmentStructure>
<Category> 要素には、1 つ以上の <SegmentStructure> 要素を含めることができます。各 <SegmentStructure> 要素では、カスタム・セグメントの構造を定義します。
以下のテーブルは、<SegmentStructure> の属性を示しています。
属性 | 説明 | 値 |
---|---|---|
name | [スキーマ構造] ページの利用可能なセグメント構造のリストに表示される名前。 | 3–文字の文字列。. |
description | [スキーマ構造] ページおよび [ドキュメント・ビューア] ページのツールのヒントに表示される、セグメントのコンテンツを説明するテキスト。 | 文字列 |
<SegmentSubStructure>
<SegmentStructure> 要素には、1 つ以上の <SegmentSubStructure> 要素を含めることができます。各 <SegmentSubStructure> 要素は、カスタム・セグメントの 1 つのフィールドを、上から下に順に説明します。以下は、<SegmentSubStructure> 要素の構文の例です。
<SegmentSubStructure piece='6' description='Encounter Number' symbol='!'
length='12' required='R' ifrepeating='0'/>
以下のテーブルは、<SegmentSubStructure> の属性を示しています。
属性 | 説明 | 値 |
---|---|---|
piece | ユーザがこのフィールドを含むセグメントの詳細を表示するよう要求したときに [スキーマ構造] ページに表示される数値。この数値を使用して、仮想プロパティ・パスのフィールドを指定できます。 | 整数。<SegmentStructure> 内の各 <SegmentSubStructure> は、1 から始まり、1 ずつ増加するよう順に piece 値を使用する必要があります。 |
codetable | このフィールドで有効な値を列挙するコード・テーブル。カスタム・スキーマでは通常この属性は使用されません。 | <CodeTable> ブロックを使用して定義されたコード・テーブルの name。 |
datastruct | このフィールドの値の解釈方法を指定するデータ構造。カスタム・スキーマでは通常この属性は使用されません。 | <DataStructure> ブロックを使用して定義されたデータ構造の name。 |
description | [スキーマ構造] ページおよび [ドキュメント・ビューア] ページのツールのヒントに表示される、フィールドのコンテンツを説明するテキスト。 | 文字列 |
symbol |
セグメント内のこのフィールドの有無または繰り返しの要件を示す記号。 このフィールドはオプションです。これは [スキーマ構造] ページでインジケータとして機能します。フィールドの要件または繰り返しを実際に制御することはありません。required および ifrepeating を参照してください。 |
以下の単一文字
|
length | このフィールドに表示できる文字数の上限。 | 整数 |
required | このフィールドをセグメント内に表示する必要性。 |
以下の単一文字
|
ifrepeating | このフィールドをセグメント内で繰り返す可能性。 | 整数。0 は繰り返す可能性がないことを意味し、1 は繰り返す可能性があることを意味します。 |
<MessageStructure>
<Category> 要素には、1 つ以上の <MessageStructure> 要素を含めることができます。各 <MessageStructure> 要素は、メッセージ構造内のセグメントの数および配置についての仕様を指定します。以下は、<MessageStructure> 要素の構文の例です。
<MessageStructure
name='MFN_M03'
definition='base:MSH~base:MFI~{~base:MFE~[~ZSI~]~base:OM1~[~base:Hxx~]~}'
description='HNB MFN message'
/>
以下のテーブルは、<MessageStructure> の属性を示しています。
属性 | 説明 | 値 |
---|---|---|
name | [スキーマ構造] ページの利用可能なメッセージ構造のリストに表示される名前。 | 3 文字の文字列、アンダースコア (_)、および 3 文字の文字列で構成。 |
definition | メッセージ構造内のセグメントの数および配置についての仕様。標準およびカスタムのメッセージ・セグメントの組み合わせを含む場合があります。以下の構文ルールを参照してください。 | <SegmentStructure> を使用して定義された標準またはカスタムのメッセージ・セグメントの 3 文字の name 値を含む文字列。 |
description | [スキーマ構造] ページおよび [ドキュメント・ビューア] ページのツールのヒントに表示される、フィールドのコンテンツを説明するテキスト。 | 文字列 |
definition 文字列の構文規則は以下のとおりです。
-
文字列全体を 1 行に収めます。
-
各セグメントを左から右に向かって順に列挙します。
-
セグメントを列挙する際、<SegmentStructure> で定義された name 値を使用します。
-
セグメント間は ~ (チルダ) 文字で区切られます。
-
セグメントまたはセグメントのブロックが繰り返される場合、繰り返し部分を {~ および ~} で囲みます。
-
セグメントまたはセグメントのブロックがオプションの場合、オプション部分を [~ および ~] で囲みます。
definition 内では、name を単純にすることができます。この場合、InterSystems IRIS は、同じファイル内のカスタム <MessageStructure> ブロックの値を参照していると見なします。さらに、name は、スキーマ・ベースの標準メッセージ構造を表すこともできます。これは、<Category> 要素に含まれる base 属性で指定されたファイルで定義されます。これを指定するには、name で以下の接頭語を使用する必要があります。
base:
これにより、InterSystems IRIS は別のファイルで適切な <SegmentStructure> を見つけることができます。他の外部ファイルを参照することはできません。スキーマ・ベースのみとなります。
<MessageType>
<Category> 要素には、1 つ以上の <MessageType> 要素を含めることができます。<MessageType> エントリは、カスタム・セグメントのあるメッセージ構造を含むメッセージ・タイプを定義します。<MessageType> 要素は、以下の 2 つの項目の単純なリストです。
-
送信するメッセージ構造
-
応答で予定されるメッセージ構造
以下は、<MessageType> 要素の構文の例です。
<MessageType name='ADT_A31' structure='ADT_A01' returntype='base:ACK_A31'/>
以下のテーブルは、<MessageType> の属性を示しています。
属性 | 説明 | 値 |
---|---|---|
name | [スキーマ構造] ページの利用可能なメッセージ・タイプのリストに表示される名前。 | 3–文字の文字列、アンダースコア (_)、および 3 文字の文字列で構成。 |
structure | 送信するメッセージ構造。 | <MessageStructure> を使用して定義された標準またはカスタムのメッセージ構造の name。 |
returntype | 応答で予定されるメッセージ構造。これは、有効な ACK メッセージ構造である必要があります。returntype がスキーマ・ベースの値であることを確認してください。例 : returntype="base:ACK" | <MessageStructure> を使用して定義された標準またはカスタムのメッセージ構造の name。 |
structure 値は、現在のファイルの単純な name 値にすることができます。
代わりに、structure または returntype の値で、スキーマ・ベースの標準メッセージ構造を表すこともできます。これを指定するには、値に以下の接頭語を使用する必要があります。
base: