X12 EDI スキーマ言語リファレンス

X12 EDI モジュールでは ESL (EDI スキーマ言語) と呼ばれる YAML 形式を使用して EDI スキーマを表現します。基本 ESL は、構造、セグメント、複合、要素の観点で EDI メッセージの構造を定義します。ESL は X12、EDIFACT、TRADACOMS、HL7 をサポートしています。

ESL ドキュメントのコンポーネント

ESL ドキュメントの最上位の定義には、使用されている EDI 標準 (X12、EDIFACT、HL7、TRADACOMS がサポートされている)、その標準のバージョン、インポート ESL の省略可能リスト、構造、セグメント、複合、要素定義の任意の組み合わせがあります。次に、/x12/005010/850.esl スキーマからこれらの最上位の定義の例を示します。

form: X12
version: '005010'
imports: [ '/x12/005010/basedefs.esl' ]
structures:
- id: '850'
  name: Purchase Order
  class: PO
  ...

このモジュールには basedefs.esl という名前の各 X12 および EDIFACT バージョンの ESL が含まれており、標準セグメント、複合、要素定義が提供されます。この 850 購入注文の例では、これらをインポートして注文構造の定義で定義を再利用します。

構造定義

構造定義は X12 トランザクションセットまたは EDIFACT メッセージを表し、標準特性のキーと値のペアと実際の構造を構成するセグメントのリストで構成されています。セグメントリストは見出し、詳細、概要の各セクションに分かれています。セグメントは、反復する可能性のある一連のセグメントで構成されるグループにさらに整理することができます。

次に、再び /x12/005010/850.esl スキーマから構造定義のサンプルの一部を示します。

- id: '850'
  name: Purchase Order
  class: PO
  heading:
  - { idRef: 'ST', position: '0100', usage: M }
  - { idRef: 'BEG', position: '0200', usage: M }
  - { idRef: 'CUR', position: '0400', usage: O }
  - { idRef: 'REF', position: '0500', usage: O, count: '>1' }
  - { idRef: 'PER', position: '0600', usage: O, count: 3 }
  - { idRef: 'TAX', position: '0700', usage: O, count: '>1' }
  - { idRef: 'FOB', position: '0800', usage: O, count: '>1' }
  - { idRef: 'CTP', position: '0900', usage: O, count: '>1' }
  - { idRef: 'PAM', position: '0950', usage: O, count: 10 }
  - { idRef: 'CSH', position: '1100', usage: O, count: 5 }
  - { idRef: 'TC2', position: '1150', usage: O, count: '>1' }
  - groupId: 'SAC'
    usage: O
    count: 25
    items:
    - { idRef: 'SAC', position: '1200', usage: O }
    - { idRef: 'CUR', position: '1250', usage: O }
  - { idRef: 'ITD', position: '1300', usage: O, count: '>1' }
  - { idRef: 'DIS', position: '1400', usage: O, count: 20 }
  ...

基本的な構造値は次のようになります。

構造キー/セクション 説明

id

構造識別子。

name (名前)

構造名。

class

構造のクラス。X12 機能グループ識別子に相当 - EDIFACT 構造定義では無視されます。

heading (見出し)

構造の見出しセクション内のセグメントおよびグループのリスト。

detail (詳細)

構造の詳細セクション内のセグメントおよびグループのリスト。

summary (概要)

構造の見出しセクション内のセグメントおよびグループのリスト。

構造の異なるセクションのセグメントのリストはすべて同じフォームを使用します。リスト内の各項目はセグメント参照またはグループ定義です。セグメント参照はコンパクト YAML 構文を使用して示されます。この構文では、各参照の値は、中括弧で囲まれたカンマ区切りのキー-値ペアとして提供されます。

値は次のとおりです。

セグメントプロパティ 説明

idRef

参照されるセグメント ID。

position (位置)

セクション内のセグメントの位置 (EDI 規定により、これらは先行ゼロを含む可能性がある数値であり、引用符で囲まれて文字列として処理されます)。

usage (使用方法)

使用コード。次の値が考えられます。

  • Conditional (条件) の「C」

  • M: 必須

  • O: 省略可能

  • Unused (未使用) の「U」

count (数)

最大反復数の値。数値、または任意の反復数を意味する特殊な値「>1」を使用できます (省略可能、指定しない場合は 1 の値が使用される)。

グループ定義は拡張形式で表示され、キーと値のペアが個別の行に表示されます。グループ定義内の値を次に示します。

説明

groupId

グループ識別子。

usage (使用方法)

使用コード。次の値が考えられます。

  • Conditional (条件) の「C」

  • M: 必須

  • O: 省略可能

  • Unused (未使用) の「U」

count (数)

最大反復数の値。数値、または任意の反復数を意味する特殊な値「>1」を使用できます (省略可能、指定しない場合は 1 の値が使用される)。

items (項目)

グループを構成するセグメント (およびネストされている可能性のあるグループ) のリスト。

セグメント定義

セグメント定義も同様に標準文字のキーと値のペアと実際のセグメントを構成する値 (要素および複合) のリストで構成されています。次に、/x12/005010/basedefs.esl スキーマからセグメント定義のサンプルの一部を示します - usage: M は mandatory (必須)、O は Optional (省略可能) です。

- id: 'BAK'
  name: Beginning Segment for Purchase Order Acknowledgment
  values:
  - { idRef: '353', usage: M }
  - { idRef: '587', usage: M }
  - { idRef: '324', usage: M }
  - { idRef: '373', usage: M }
  - { idRef: '328', usage: O }
  - { idRef: '326', usage: O }

セグメント定義値は次のとおりです。

セクション 説明

id

セグメント識別子。

name (名前)

セグメント名。

values

セグメント内の要素および複合のリスト。

値リストは ID によって要素および複合を参照し、各参照の値が中括弧で囲まれたカンマ区切りのキーと値のペアとして指定されるコンパクトな YAML 構文を使用して表示されます。この参照の値を次に示します。

セクション 説明

idRef

参照される要素または複合 ID。

position (位置)

セグメント内の値の位置 (省略可能。通常は使用されず、デフォルトでは、位置は 1 から始まり、連続する値ごとに 1 ずつ増加する)。

name (名前)

セグメントの値の名前 (省略可能。デフォルトで使用される要素または複合の名前)。

usage (使用方法)

使用コード。次の値が考えられます。

  • Conditional (条件) の「C」

  • M: 必須

  • O: 省略可能

  • Unused (未使用) の「U」

count (数)

最大反復数の値。任意の数値、または任意の反復数を意味する特殊な値「>1」を使用できます (省略可能。指定しない場合は 1 の値が使用される)。

複合定義

複合定義はセグメント定義とよく似ており、同様に標準文字のキーと値のペアと実際の複合を構成する値 (要素および複合) のリストで構成されています。次に、/x12/005010/basedefs.esl スキーマから複合定義のサンプルの一部を示します。

- id: 'C022'
  name: 'Health Care Code Information'
  values:
  - { idRef: '1270', usage: M }
  - { idRef: '1271', usage: M }
  - { idRef: '1250', usage: C }
  - { idRef: '1251', usage: C }
  - { idRef: '782', usage: O }

複合定義値は次のとおりです。

Name (名前) 説明

id

複合識別子。

name (名前)

複合名。

values

複合内の要素と複合のリスト。

値リストは ID によって要素および複合を参照し、各参照の値が中括弧で囲まれたカンマ区切りのキーと値のペアとして指定されるコンパクトな YAML 構文を使用して表示されます。この参照の値を次に示します。

Name (名前) 説明

idRef

参照される要素または複合 ID。

position (位置)

複合内の値の位置 (省略可能。通常は使用されず、デフォルトでは、位置は 1 から始まり、連続する値ごとに 1 ずつ増加する)。

usage (使用方法)

使用コード。次の値が考えられます。

  • Conditional (条件) の「C」

  • M: 必須

  • O: 省略可能

  • Unused (未使用) の「U」

要素定義

要素定義は非常にシンプルで、標準文字の基本的なキーと値のペアで構成されます。

次に、/x12/005010/basedefs.esl スキーマから要素定義をいくつか示します。

elements:
  - { id: '1', name: 'Route Code', type: AN, minLength: 1,
      maxLength: 13 }
  - { id: '100', name: 'Currency Code', type: ID, minLength: 3,
      maxLength: 3 }
  - { id: '1000', name: 'Service Characteristics Qualifier',
      type: AN, minLength: 2, maxLength: 3 }

要素定義値は次のとおりです。

Name (名前) 説明

id

要素識別子。

name (名前)

要素名。

type

値種別コード。次の値を使用できます (Binary (バイナリ) データ型は現在サポートされていません)。

  • 整数の場合は N。

  • 指定された位置に暗黙の小数点を含む数値の場合は N0-N9 (N0 は N に相当)。

  • 小数の場合は R。

  • 識別子の場合は ID。

  • 英数字の文字列の場合は AN。

  • 日付の場合は DT。

  • 時刻の場合は TM。

minLength

値の有意文字の最小数。

maxLength

値の有意文字の最大数。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub