EU Digital COVID Certificateに含まれるデータの中身とその仕様

# はじめに
ワクチン接種率の増加とともにEUやアメリカではいわゆる「ワクチンパスポート」の導入が進んでいます。
今後、各国で導入が進むことも予想されます。
たとえば、フランスでの「衛生パス」導入は大きな話題となりました。

そのフランスでの「衛生パス」のベースともなっているのが、EUの導入している「EU Digital COVID Certificate (EU DCC)」です。
本記事では、EU DCCについてどんな内容が含まれているのかまとめました。

# 公式ドキュメント
下記2ページを見れば大丈夫でしょう。
## EU公式ページ

https://ec.europa.eu/health/ehealth/covid-19_en

## Github: European eHealth network - digital covid certificate coordination

https://github.com/ehn-dcc-development

# 免責事項
- 本記事は筆者 (Twitter: [@hrk_kobayashi](https://twitter.com/hrk_kobayashi) が個人的にまとめたものです。内容の誤りにより生じたいかなる損害にも責任を負いかねます。正確な内容は上述のEU公式ページをご確認ください。なお、修正依頼は大歓迎です。
- 本記事の内容は執筆時点 (2021-08-14) のものです。

# EU DCCとは
下記の要件を満たすように実装されています。

## 要件
1. 偽装困難かつ、オフラインで所有者の状態が確認できること
1. 光学的手段（カメラ等による画像認識）での読み取りが容易で、コンパクトな符号化であること
1. 一般的なプラットフォーム上で動作可能で、標準化されたオープンな規格をベースとし、相互運用性があること
1. 標準化された規格がない場合、現存する規格をベースに新たなメカニズムを定義し、動作可能性を保証できること
1. 既存の光学的手段でのデコードに互換性があること

## 実装
1. ワクチン接種内容や陰性証明の内容をJSONで記載
1. CBORでシリアライズ
1. COSEでデジタル署名 + 暗号化
1. Zlibで圧縮
1. Base45符号化 + QRコード生成

本記事でまとめているのは1のJSONで記載される内容についてです。

# 仕様とデータ構造
以下に仕様とデータ構造を記します。
直訳ではなく、原文の意図をなるべく失わないよう意訳しています。
太字の語尾（～し**なければならない**、など）は、原文のMUST/SHOULD/MAYなどに対応します。

## 全体の構造
### 文字コード
Unicode 13.0をUTF-8エンコードしたJSON形式で記載する。

### ファイル構造
```JSON
"JSON": {
    "ver": <バージョン情報>,
    "nam": {
        <氏名情報>
    },
    "dob": <生年月日>
    "v", "t", or "r": [
        <ワクチン接種情報, 検査情報, or 感染からの治癒情報, のうち1点>
    ]
}
```

## バージョン情報
|フィールドID|内容|説明|
|:-|:-|:-|
|`ver`|スキーマのバージョン|EU DCCの定めるバージョン文字列で**なければならない**。|

### `ver`
従うスキーマのバージョンを記載し**なければならない**。
現在のバージョンは `1.3.0`。

```JSON:例
"ver": "1.3.0" //現行バージョン
```

## 氏名情報
|フィールドID|内容|説明|
|:-|:-|:-|
|`nam/fn`|名字/surname(s)|証明書の所有者の名字をそのまま記載する。|
|`nam/fnt`|標準化した名字/surname(s)|証明書の所有者の名字を渡航文書（パスポートなど）の表記の通り記載する。|
|`nam/gn`|名前/forename(s)|証明書の所有者の名前をそのまま記載する。|
|`nam/gnt`|標準化した名前/forename(s)|証明書の所有者の名前を渡航文書（パスポートなど）の表記の通り記載する。|

### `nam/fn`
証明書の所有者の名字/surname(s) をそのまま記載する。
空でないちょうど1つのフィールドを記載し**なければならない**。
複合姓を持つ場合、スペースで区切ら**なければならない**。
ハイフンやそれらの記号を含む場合、そのままの記載する。

```JSON:例
"fn": "Musterfrau-Gößinger" //ハイフンはそのまま残す
"fn": "Musterfrau-Gößinger Müller" //複合姓はスペースで区切る
```

### `nam/fnt`
証明書の所有者の名字/surname(s) を渡航文書（パスポートなど）の表記の通り記載する。 (ICAO Doc 9303 Part 3)。
空でないちょうど1つのフィールドを記載し**なければならない**。
フィールド内で使用できる文字は `[A-Z]` と `<` のみで、最大80文字とし**なければならない**。

```JSON:例
"fnt": "MUSTERFRAU<GOESSINGER" //パスポートの記載通り、全大文字でハイフンを<に置換し、ダイアクリティカルマーク等のついた文字については翻字を行う
"fnt": "MUSTERFRAU<GOESSINGER<MUELLER" //スペースを<に置換する
```

### `nam/gn`
証明書の所有者の名前/forename(s), given name(s) をそのまま記載する。
所有者に名前がなければ、このフィールドは存在し**てはならない**。
このフィールドは2つ以上存在し**てはならない**。
複数の名前を持つ場合、スペースで区切ら**なければならない**。

```JSON:例
"gn": "Isolde Erika"
```

### `nam/gnt`
証明書の所有者の名前/forename(s), given name(s) を渡航文書（パスポートなど）の表記の通り記載する。 (ICAO Doc 9303 Part 3)。
所有者に名前がなければ、このフィールドは存在し**てはならない**。
このフィールドは2つ以上存在し**てはならない**。
フィールド内で使用できる文字は `[A-Z]` と `<` のみで、最大80文字とし**なければならない**。

```JSON:例
"gnt": "ISOLDE<ERIKA"
```

## 生年月日
|フィールドID|内容|説明|
|:-|:-|:-|
|`dob`|生年月日|所有者の生年月日を記載する。|

### `dob`
所有者の生年月日をISO 8601形式 (`YYYY-MM-DD`)で記載し**なければならない**。
記載できる範囲は `1900-01-01` から `2099-12-31` の範囲である。
ちょうど1つのフィールドを記載し**なければならない**。
生年月日がわからない場合、例の通り、`YYYY-MM` や `YYYY` といった記載や、完全に不明な場合は空文字列とし**なければならない**。

```JSON:例
"dob": "1979-04-14" //YYYY-MM-DD形式
"dob": "1901-08" //YYYY-MM形式
"dob": "1939" //YYYY形式
"dob": "" //不明な場合は空文字列とする
```

:::note info
ユーザーへの画面表示上は、<code>1990-XX-XX</code> のように不明な部分を <code>XX</code> で表示し<strong>てもかまいません</strong>。
:::

## 証明の種類
EU DCCでは、1つの証明書につき下記3グループのうち、ちょうど1グループの内容を含ま**なければならない**。

|グループID|内容|説明|
|:-|:-|:-|
|`v`|ワクチン接種グループ|ワクチン接種の内容について記載する。|
|`t`|検査グループ|検査の内容について記載する。|
|`r`|治癒グループ|治癒内容について記載する。|

## ワクチン接種グループ
ちょうど1回のワクチン接種の内容について記載し**なければならない**。

|フィールドID|内容|説明|
|:-|:-|:-|
|`v/tg`|ワクチンの対象疾病|接種したワクチンが対象としている疾病を記載する。|
|`v/vp`|ワクチンもしくは予防法の種別|接種したワクチンや実施した予防法の種別を記載する。|
|`v/mp`|医薬品名|ワクチン等の医薬品名を記載する。|
|`v/ma`|医薬品認可を保有する団体・企業名|ワクチン等の認可を保有する団体・企業名や製造者を記載する。|
|`v/dn`|接種回数|何度目の接種かを記載する。|
|`v/sd`|必要接種回数|定められた必要接種回数を記載する。|
|`v/dt`|接種日|接種した日付を記載する。|
|`v/co`|国名もしくは組織名|接種に責任を持つ国名もしくは組織名を記載する。|
|`v/is`|発行者|その接種証明を発行した組織名を記載する。|
|`v/ci`|ユニーク証明識別子|ユニーク証明識別子 (UVCI) を記載する。|

### `v/tg` (v1.0)
ワクチンが対象としている疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。
COVID-19のIDは `840539006` のため、現行スキーマバージョンではこの値を記載する。

```JSON:例
"tg": "840539006" //COVID-19
```

### `v/vp` (v1.0)
接種したワクチンや実施した予防法の種別をSNOMED CTで定められた値かWHO ATC分類で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
```

|コード|コードシステム|表示名|
|:-|:-|:-|
|`1119305005`|SNOMED CT|SARS-CoV-2 antigen vaccine|
|`1119349007`|SNOMED CT|SARS-CoV-2 mRNA vaccine|
|`J07BX03`|WHO ATC|covid-19 vaccines|

:::note warn
ATCのコード <code>J07BX03</code> はantigenもしくはmRNAワクチンでない場合か、情報が足りない場合のみ用いることができます。
:::

### `v/mp` (v1.2)
接種したワクチンの製品名を記載する。
コードはEUに登録されているものを用いるが、EU全体では*未承認 (Italic)*のものもある。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
```

|コード|表示名|状況|日本語補足
|:-|:-|:-|:-|
|`EU/1/20/1528`|Comirnaty|承認済|バイオンテック/ファイザー コミナティ筋注|
|`EU/1/20/1507`|Spikevax (旧COVID-19 Vaccine Moderna)|承認済|モデルナ筋注|
|`EU/1/21/1529`|Vaxzevria|承認済|アストラゼネカ バキスゼブリア筋注|
|`EU/1/20/1525`|COVID-19 Vaccine Janssen|承認済|ヤンセンファーマ/J&J|
|*`CVnCoV`*|CVnCoV|審査中|CureVac|
|*`NVX-CoV2373`*|NVX-CoV2373|審査中|ノババックス|
|*`Sputnik-V`*|Sputnik-V|審査中|スプートニクV|
|*`Convidecia`*|Convidecia|未承認|カンシノ・バイオロジクス|
|*`EpiVacCorona`*|EpiVacCorona|未承認|ベクター・インスティテュート|
|*`BBIBP-CorV`*|BBIBP-CorV|未承認|シノファーム|
|*`Inactivated-SARS-CoV-2-Vero-Cell`*|Inactivated-SARS-CoV-2-Vero-Cell|未承認|シノファーム|
|*`CoronaVac`*|CoronaVac|未承認|シノバック|
|*`Covaxin`*|Covaxin (aka. BBV152 A, B, C)|未承認|バラート・バイオテック|
|*`Covishield`*|Covishield (ChAdOx1_nCoV-19)|未承認|インド血清研究所/アストラゼネカ|

ワクチンの承認状況に応じてコードは拡張される。

:::note warn
国によってワクチンの名称が異なりますが、上のテーブルにあるコードで記載す<strong>べきです</strong>。
たとえば、モデルナ社製のワクチンを日本で接種した場合「COVID-19ワクチンモデルナ筋注」という名称ですが、
これはEUでの名称「Spikevax」に従い <code>EU/1/20/1507</code> とコードされる<strong>べきです</strong>。
:::

### `v/ma` (v1.2)
ワクチン等の認可を保有する団体・企業名や製造者を記載する。
コードはEMAに登録されているものを用いるが、未登録のものもある。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
```

|コード|表示名|EMA登録|日本語補足|
|:-|:-|:-|:-|
|`ORG-100001699`|AstraZeneca AB|登録済|アストラゼネカ|
|`ORG-100030215`|Biontech Manufacturing GmbH|登録済|バイオンテック (ファイザー)|
|`ORG-100001417`|Janssen-Cilag International|登録済|ヤンセンファーマ (J&J)|
|`ORG-100031184`|Moderna Biotech Spain S.L.|登録済|モデルナ|
|`ORG-100006270`|Curevac AG|登録済|CureVac|
|`ORG-100013793`|CanSino Biologics|登録済|カンシノ・バイオロジクス|
|`ORG-100020693`|China Sinopharm International Corp. - Beijing location|登録済|シノファーム|
|`ORG-100010771`|Sinopharm Weiqida Europe Pharmaceutical s.r.o. - Prague location|登録済|シノファーム|
|`ORG-100024420`|Sinopharm Zhijun (Shenzhen) Pharmaceutical Co. Ltd. - Shenzhen location|登録済|シノファーム|
|`ORG-100032020`|Novavax CZ AS|登録済|ノババックス|
|`Gamaleya-Research-Institute`|Gamaleya Research Institute|未登録|ガマレヤ研究所|
|`Vector-Institute`|Vector Institute|未登録|ベクター・インスティテュート|
|`Sinovac-Biotech`|Sinovac Biotech|未登録|シノバック|
|`Bharat-Biotech`|Bharat Biotech|未登録|バラート・バイオテック|
|`ORG-100001981`|Serum Institute Of India Private Limited|登録済|インド血清研究所 (アストラゼネカ)|

ワクチンの承認状況に応じてコードは拡張される。

:::note warn
同一メーカーの異なる支社についても、上のテーブルにあるコードで記載す<strong>べきです</strong>。
また、同一内容のワクチンについては、EU内での認可保有者名で記載します。
例えばスイスでは「Pfizer AG」が「Comirnaty」の認可を保有しますが、<code>ORG-100030215</code> の「Biontech Manufacturing GmbH」でコードします。
また、例えばフィリピンでは「Zuellig Pharma」が「Covid-19 Vaccine 
Moderna」の認可を保有しますが、これは「Spikevax」に倣い <code>ORG-100031184</code> の「Moderna Biotech Spain S.L.」でコードします。
:::

### `v/dn`
何度目の接種か記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"dn": "1" //初回接種
"dn": "2" //2回目の接種
"dn": "3" //3回目の接種（ブースター接種を想定）
```

### `v/sd`
証明書に記載した接種の時点での定められた必要接種回数を記載する。
必要接種回数は必ずしもワクチン製品に応じて決まるわけではなく、各国の規定や感染経験の有無などで異なる場合がある。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"sd": "1" //必要接種回数は1回
"sd": "2" //必要接種回数は2回
"sd": "3" //必要接種回数は3回（ブースター接種を想定）
```

### `v/dt`
接種日を `YYYY-MM-DD` 形式で記載する。その他の形式はサポートされない。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"dt": "2021-03-28"
```

### `v/co`
ISO3166 2レターコードでの接種に責任を持つ国名 (**推奨される**)、もしくはWHOやUNHCRといった組織名（`[A-Z]` で1文字以上10文字以下）を記載する。
ちょうど1つのフィールドを記載し**なければならない**。

```JSON:例
"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所
```

### `v/is`
その接種証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含ん**でもよい**が、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは**推奨されない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "Vaccination Centre South District 3" //南3区ワクチンセンター
```

### `v/ci`
ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は [Guidelines on verifiable vaccination certificates - basic interoperability elements](https://ec.europa.eu/health/sites/default/files/ehealth/docs/vaccination-proof_interoperability-guidelines_en.pdf) を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 `URN:UVCI:` を追加し**てもよい**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付
```

:::note info
基本的には下記の通りで、用いる文字は <code>[A-Z0-9/#:]</code> のみです。
<code>URN:UVCI:&lt;バージョン&gt;:&lt;ISO3166 2レター国名&gt;:&lt;国ごとに発行されるユニーク文字列&gt;#&lt;チェックサム&gt;</code>
:::

:::note info
&lt;チェックサム&gt; はLuhn-Mod-Nアルゴリズムで算出す<strong>べき</strong>とされています。
詳細は割愛しますが、参考実装では文字列 <code>URN:UVCI:&lt;バージョン&gt;:&lt;ISO3166 2レター国名&gt;:&lt;国ごとに発行されるユニーク文字列&gt;</code> について丸ごと計算します。
<code>ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:</code> の順に <code>0</code> から <code>37</code> の数字を割り当て、
<code>factor = 2</code> かつ <code>N = 38</code> として計算すれば算出されます。
:::

## 検査グループ
ちょうど1回の検査の内容について記載し**なければならない**。

|フィールドID|内容|説明|
|:-|:-|:-|
|`t/tg`|検査の対象疾病もしくは病原体|検査が対象としている疾病もしくは病原体を記載する。|
|`t/tt`|検査の種類|実施した検査の種類を記載する。|
|`t/nm`|検査名 (NAATのみ)|実施した検査名を記載する。|
|`t/ma`|検査デバイス識別子 (RATのみ)|検査デバイスの識別子を記載する。|
|`t/sc`|検体採取日時|検体を採取した日時を記載する。|
|`t/tr`|検査結果|検査結果を記載する。|
|`t/tc`|検査実施者|その検査の実施者を記載する。|
|`t/co`|国名もしくは組織名|検査に責任を持つ国名もしくは組織名を記載する。|
|`t/is`|発行者|その検査証明を発行した組織名を記載する。|
|`t/ci`|ユニーク証明識別子|ユニーク証明識別子 (UVCI) を記載する。|

### `t/tg` (v1.0)
検査が対象としている疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。
COVID-19のIDは `840539006` のため、現行スキーマバージョンではこの値を記載する。

```JSON:例
"tg": "840539006" //COVID-19
```

### `t/tt` (v1.0)
実施した検査の種類をLOINCで定められた値で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"tt": "LP6464-4" //核酸増幅検査
```

|コード|コードシステム|表示名|補足|
|:-|:-|:-|:-|
|[`LP6464-4`](https://loinc.org/LP6464-4/)|LOINC|Nucleic acid amplification with probe detection|NAAT/核酸増幅検査|
|[`LP217198-3`](https://loinc.org/LP217198-3/)|LOINC|Rapid immunoassay|RAT/高速免疫学的測定 (イムノアッセイ)|

### `t/nm`
実施した検査名を記載する。
`t/tt` がNAAT (`LP6464-4`) の場合、このフィールドを記載するかどうかは選択可能 (optional) である。
検査名には、検査メーカー名と商品名がカンマ区切りで含まれる**べきである**。
`t/tt` がRAT (`LP217198-3`) の場合、`t/ma` の内容に検査名が含まれるため、このフィールドは記載する**べきではない**。
このフィールドを含む場合、空であっ**てはならない**。

```JSON:例
"nm": "ELITechGroup, SARS-CoV-2 ELITe MGB® Kit"
```

### `t/ma`
検査デバイスの識別子を記載する。
`t/tt` がNAAT (`LP6464-4`) の場合、このフィールドは用い**てはならない**。
`t/tt` がRAT (`LP217198-3`) の場合、ちょうど1つの空でないフィールドを記載し**なければならない**。

検査デバイス識別子は下記から確認できる。

- [HSC common list](http://covid-19-diagnostics.jrc.ec.europa.eu/devices?manufacturer&text_name&marking&rapid_diag&format&target_type&field-1=HSC%20common%20list%20%28RAT%29&value-1=1&search_method=AND#form_content) 閲覧用
- [hsc-common-recognition-rat](https://covid-19-diagnostics.jrc.ec.europa.eu/devices/hsc-common-recognition-rat) JSON形式 (`id_device` の値)

```JSON:例
"ma": "344" //SD BIOSENSOR Inc, STANDARD F COVID-19 Ag FIA
```

:::note warn
EU/EEA内の証明書発行者はその時点で有効な検査のみについて証明を発行し<strong>なければなりません</strong>。
また、24時間ごとに、有効な検査デバイスリストを更新し<strong>なければなりません</strong>。
:::

:::note warn
第三国の証明書発行者は有効でない検査についての証明を発行し<strong>てもかまいません</strong>。
ただし、識別子は上記のリストの値で<strong>なければなりません</strong>。
:::

:::note warn
検証者（証明書を確認する者）は、最新の検査デバイスリストに記載のない値を検出し、その証明書を無効とし<strong>なければなりません</strong>。
ただし、検査デバイスリストから削除された値については削除後72時間まで受け付け<strong>てもかまいません</strong>。
:::

### `t/sc`
検査日時を下記1～4のいずれかのISO8601フォーマットで記載する。その他の形式はサポートされない。
時間情報はタイムゾーンの情報を含ま**なければならない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

1. `YYYY-MM-DDThh:mm:ssZ`
1. `YYYY-MM-DDThh:mm:ss[+-]hh`
1. `YYYY-MM-DDThh:mm:ss[+-]hhmm`
1. `YYYY-MM-DDThh:mm:ss[+-]hh:mm`

```JSON:例
"sc": "2021-08-20T10:03:12Z" //UTC time
"sc": "2021-08-20T12:03:12+02" //CEST time
"sc": "2021-08-20T12:03:12+0200" //CEST time
"sc": "2021-08-20T12:03:12+02:00" //CEST time
```

### `t/tr` (v1.0)
検査結果をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"tr": "260415000" //未検出
```

|コード|コードシステム|表示名|
|:-|:-|:-|
|`260415000`|SNOMED CT|Not detected|
|`260373001`|SNOMED CT|Detected|

:::note info
<code>undetermined</code> などの値が将来的に追加される可能性があります。
:::

### `t/tc`
その検査の実施者を記載する。
`t/tt` がNAAT (`LP6464-4`) の場合、このフィールドはちょうど1つ記載し**なければならず**、空であっ**てはならない**。
`t/tt` がRAT (`LP217198-3`) の場合、このフィールドを記載するかどうかは選択可能 (optional) であるが、このフィールドを含む場合、空であっ**てはならない**。
最長80文字のUTF-8文字列を記載でき、超過分は切り詰められる**べきである**。
何らかの識別子を一部に含ん**でもよい**が、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは**推奨されない**。
このフィールドは自動承認といった機械的な処理を想定していない。

```JSON:例
"tc": "Test centre west region 245" //西地区245テストセンター
```

### `t/co`
ISO3166 2レターコードでの検査に責任を持つ国名 (**推奨される**)、もしくはWHOやUNHCRといった組織名（`[A-Z]` で1文字以上10文字以下）を記載する。
ちょうど1つのフィールドを記載し**なければならない**。

```JSON:例
"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所
```

### `t/is`
その検査証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含ん**でもよい**が、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは**推奨されない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "North-West region health authority" //北西地区保健局
```

### `t/ci`
ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は [Guidelines on verifiable vaccination certificates - basic interoperability elements](https://ec.europa.eu/health/sites/default/files/ehealth/docs/vaccination-proof_interoperability-guidelines_en.pdf) を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 `URN:UVCI:` を追加し**てもよい**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付
```

## 治癒グループ
ちょうど1回の治癒の内容について記載し**なければならない**。

|フィールドID|内容|説明|
|:-|:-|:-|
|`r/tg`|治癒した疾病もしくは病原体|治癒した疾病もしくは病原体を記載する。|
|`r/fr`|初回陽性検体採取日|NAAT検査で初めて陽性判定された際の検体採取日を記載する。|
|`r/co`|国名もしくは組織名|検査に責任を持つ国名もしくは組織名を記載する。|
|`r/is`|発行者|その治癒証明を発行した組織名を記載する。|
|`r/df`|治癒証明開始日|治癒証明が有効だとみなされる期間の初日を記載する。|
|`r/du`|治癒証明開始日|治癒証明が有効だとみなされる期間の最終日を記載する。|
|`r/ci`|ユニーク証明識別子|ユニーク証明識別子 (UVCI) を記載する。|

### `r/tg` (v1.0)
治癒した疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載し**なければならない**。
COVID-19のIDは `840539006` のため、現行スキーマバージョンではこの値を記載する。

```JSON:例
"tg": "840539006" //COVID-19
```

### `r/dt`
NAAT検査で初めて陽性判定された際の検体採取日を `YYYY-MM-DD` 形式で記載する。
その他の形式はサポートされない。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"fr": "2021-05-18"
```

### `r/co`
ISO3166 2レターコードでの検査に責任を持つ国名 (**推奨される**)、もしくはWHOやUNHCRといった組織名（`[A-Z]` で1文字以上10文字以下）を記載する。
ちょうど1つのフィールドを記載し**なければならない**。

```JSON:例
"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所
```

### `r/is`
その治癒証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含ん**でもよい**が、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは**推奨されない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "Central University Hospital" //中央大学病院
```

### `r/df`
治癒証明が有効だとみなされる期間の初日を `YYYY-MM-DD` 形式で記載する。
その他の形式はサポートされない。
`r/fr + 11日` よりも前の日付であっ**てはならない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"df": "2021-05-29"
```

### `r/du`
証明書の発行者が指定する、治癒証明が有効だとみなされる期間の最終日を `YYYY-MM-DD` 形式で記載する。
その他の形式はサポートされない。
`r/fr + 180日` よりも後の日付であっ**てはならない**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"du": "2021-11-14"
```

### `r/ci`
ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は [Guidelines on verifiable vaccination certificates - basic interoperability elements](https://ec.europa.eu/health/sites/default/files/ehealth/docs/vaccination-proof_interoperability-guidelines_en.pdf) を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 `URN:UVCI:` を追加し**てもよい**。
ちょうど1つの空でないフィールドを記載し**なければならない**。

```JSON:例
"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付
```

# 参考リンク
1. [eHealth : Digital health and care](https://ec.europa.eu/health/ehealth/covid-19_en)
1. [Applying for a COVID certificate if you were vaccinated abroad (procedure for non-EU tourists)](https://www.diplomatie.gouv.fr/en/coming-to-france/coronavirus-advice-for-foreign-nationals-in-france/coronavirus-statements/article/applying-for-a-covid-certificate-if-you-were-vaccinated-abroad-procedure-for)
1. [Github: eu-digital-green-certificates](https://github.com/eu-digital-green-certificates)
1. [Github: European eHealth network - digital covid certificate coordination](https://github.com/ehn-dcc-development)

# 更新履歴
- 2021-08-14: 初版