メインコンテンツまでスキップ

CSV変換手順

クイックスタート(Patientサンプル)

クイックスタート(Patient)

以下の入力CSVとマッピングセッティングプロファイルを用いて、Patientを作成する最短手順です。
サンプルのプロファイルはマッピングセッティングプロファイル仕様 > サンプル(Patient)を参照してください。

入力CSV例(patient_sample.csv

SEQ,INSURANCE_ID,PATIENT_ID,INSTITUTION_NUMBER,FAMILY_NAME,GIVEN_NAME,FAMILY_NAME_KANA,GIVEN_NAME_KANA,GENDER,BIRTH_DATE,ADDRESS_TEXT,ADDRESS_COUNTRY,ADDRESS_POSTALCODE,ADDRESS_STATE,ADDRESS_CITY,ADDRESS_LINE
1,12345678:A:11111111:01,01111111,1138814790,山田,太郎,ヤマダ,タロウ,male,20010101,東京都文京区本郷7-3-1,日本,113-8655,東京都,文京区,7-3-1
2,12345678:A:22222222:01,02222222,1138814790,山田,花子,ヤマダ,ハナコ,female,20020202,東京都文京区本郷7-3-1,JP,113-8655,東京都,文京区,7-3-1
3,12345678:A:22222222:01,03333333,1138814790,ケネディ,ジョン フィッツジェラルド,,,male,20030303,東京都文京区本郷7-3-1,JPN,113-8655,東京都,文京区,7-3-1

ZIP構成(アップロード単位)

sample_patient.zip
├─ input/
│ └─ patient_sample.csv
└─ definition/
└─ patient.frumap ← マッピングセッティングプロファイル(Patient)のサンプルを保存

ルール:ZIPは1つにマッピングパックとみなされ、input/が入力、definition/が変換定義として扱われます。クライアントはZIPファイルをBase64エンコードした文字列を送ります。

実行(API最短例)

  • ワンショット実行(入力と定義を同時に送る)
POST [base]/csv-plugin/excute/Patient
Body: Base64(sample_patient.zip)

成功時は検索URLを含むBundle、失敗時はOperationOutcomeが返ります。

  • 定義を保存して実行(定義の再利用)
  1. 変換定義の登録
POST [base]/csv-plugin/definition/[mappingPackName]
Body: Base64(definition/ を含むZIP)
  1. 入力だけを渡して実行
POST [base]/csv-plugin/excute/[mappingPackName]/Patient
Body: Base64(input/ を含むZIP) ※定義のみで生成する場合は省略可

返却は上記と同様です。エンドポイント仕様(期待HTTPステータス、エラー条件など)はAPI一覧を参照してください。

(参考)CSV列→FHIR要素(抜枠)

CSV列FHIR Patient要素(例)
INSURANCE_IDidentifier (system: JP_Insuarance_memberID / use:usual)
PATIENT_ID & INSTITUTION_NUMBERidentifier (自施設のID。OID+施設番号でsystem生成)
FAMILY_NAME / GIVEN_NAMEname.text / name.family / name.given
FAMILY_NAME_KANA / GIVEN_NAME_KANAname(カナ用)+iso21090-EN-representation拡張(SYL
GENDERgender
BIRTH_DATEbirthDate(マッピングセッティングプロファイル側で日付化)
ADDRESSaddress.text / state / city / postalcode / line

実装の共通ルール(ZIPの扱い、返却がBundle/OperationOutcome、定義の保存・参照・削除・実行のAPI)は本手順及びAPI一覧に整理済みです。

1. 目的

あらかじめ用意したCSVと変換定義からFHIRリソースへ変換する手順について説明します。 CSVプラグインの導入手順は「CSVプラグイン導入手順」を参照してください。

2. 用語

マッピングセッティングプロファイル

  • CSVなどの入力をFHIRリソースに変換するための方法を記述したFSHライクな独自言語です。
  • 仕様の詳細は「マッピングセッティングプロファイル仕様」を参照してください。
  • 以降、簡潔に 「マッピングプロファイル」 と表記します。

変換定義

  • CSVの各列をFHIRリソースの各要素に変換するための設定一式です。マッピングセッティングプロファイル(.frumap) で記述します。

マッピングプロファイル(.frumap)

  • 変換に用いる個々の定義ファイルです。マッピングパック内のdefinition/配下に配置します。
  • 現在の実装ではDB上で一つのマッピングプロファイル一つBasicリソースに変換され保存されます。(保存対象は definition/ 以下のファイル)
  • 変換時に指定するプロファイル名は、同一マッピングパック内で一意である必要があります。(別パックで同名は可)
  • 使用できる文字は半角英数字とアンダースコア・ハイフン・ドット(_ - .)。大文字小文字は区別されます。

マッピングパック

  • 複数の変換定義(マッピングプロファイル)をまとめて扱う単位です。(ZIP1つ=マッピングパック)
  • 現在の実装ではDB上でListリソースに変換され保存されます。
  • マッピングパック名は一意である必要があります。
  • 使用できる文字は半角英数字とアンダースコア・ハイフン・ドット(_ - .)。大文字小文字は区別されます。

3. 変換手順

CSVと変換定義をまとめたZIPファイルからFHIRリソースを生成しリソースDBに保存する

POST [base]/csv-plugin/execute/{mappingProfileName}
  • リクエストボディはCSVと変換定義を含むZIPをBase64エンコードした文字列を指定します。
  • ZIPが一つのマッピングパック、ZIP内のファイルがマッピングプロファイルとして扱われます。
  • ZIP内の input/ 以下のファイルが入力、 definition/ 以下が変換定義です。
  • URL内の{mappingProfileName}には、は変換に使用するプロファイル(.frumap)のファイル名(拡張子を除く)を指定します。

成功時は、生成したリソースを検索するためのURLを持つBundleが返ります。(検索URLは適切なURLエンコードが必要)
失敗時は、失敗概要を含むOperationOutcomeが返ります。

CSVをまとめたZIPファイルとDBに保存した変換定義からFHIRリソースを生成しリソースDBに保存する

  1. 変換定義を保存する。

    POST [base]/csv-plugin/definition/{mappingPackName}
    • リクエストボディは変換定義(definition/を含むZIP) をBase64エンコードした文字列を指定します。
    • ZIPが一つのマッピングパック、ZIP内のファイルがマッピングプロファイルとして扱われます。
    • definition/ 以下のファイルが 設定DB に保存されます。
    • URL内の{mappingPackName}は保存するマッピングパック名を指定します。既に同名が存在する場合はエラーになります。

    成功時は、保存されたマッピングパックに対応するListリソースが返ります。
    失敗時は、失敗概要を含むOperationOutcomeが返ります。

    ヒント

    保存されたマッピングパックやマッピングプロファイルはGETリクエストにより確認できます。 詳しくは「API一覧」を参照してください。

  2. CSVをまとめたZIPと、設定DBに保存した変換定義を用いて実行する

    POST [base]/csv-plugin/execute/{mappingPackName}/{mappingProfileName}
    • リクエストボディは入力(input/を含むZIP) をBase64エンコードした文字列を指定します。
      • 定義のみで生成する場合はリクエストボディを省略可能です。
    • 入力はinput/、変換定義は指定したマッピングパックに保存済みのプロファイルが利用されます。
    • URL内の{mappingProfileName}プロファイル名(拡張子を除く) を指定します。存在しない場合はエラーになります。

    成功時は、生成したリソースを検索するためのURLを持つBundleが返ります。(URLエンコードに注意)
    失敗時は、失敗概要を含むOperationOutcomeが返ります。

  3. 保存した変換定義を削除する。

    DELETE [base]/csv-plugin/definition/{mappingPackName}
    • 指定したマッピングパック設定DB から削除されます。
    • URL内の{mappingPackName}削除するマッピングパック名を指定します。存在しない場合エラーになります。

    成功時は、成功概要を含むOperationOutcomeが返ります。
    失敗時は、失敗概要を含むOperationOutcomeが返ります。