見出し画像

お薬のJANコード、GS1コード、GTINコード、とか

薬局ではお薬のコードをよく使います。
お薬の刻印や印字のコードではなく、GS1コードとかの話です。

JANコードとかGS1コードとかよくわからなくなるので、整理しておきました。
定義は細かいのですが、薬局業務で使える範囲で整理します。

お薬の箱に付与されるJANコードとお薬の箱に付与されるGS1コードは一体のものと考えることができます。
なおGS1コードはGTINコード(GTIN-14)と同じものとしてよいです。

例)ムコスタ錠100㎎100錠包装
JANコード   4987035184614
GS1コード 14987035184611

ムコスタ錠のJANコードは、4987035184614となっています。
このJANコードの本体部分は下1桁の4を除いた、498703518461です。
下1桁はチェックデジットといって、本体部分である498703518461の各桁の数値から計算できる一桁の数字です。チェックデジットの計算は後述します。
このJANコードの本体部分の先頭に、販売単位ごとに決められた数字(通常のお薬の箱単位の場合は1です)を付加すると、それがGS1コードの本体部分になります。つまり、1498703518461がGS1コードの本体部分になります。このGS1コードの本体部分の各桁の数値から計算して得られるチェックデジットを末尾に加えるとGS1コードになります。

GS1コードの本体部分は、JANコードの本体部分の先頭に数字が加えられているため、チェックデジットの値はJANコードのそれとは異なります。そのため、GS1コードの末尾とJANコードの末尾は異なる数字になります。

チェックデジットの計算方法は以下の通りです。
①本体部分の一番右側の数値を一桁目とする。
②奇数桁目の数値をそれぞれ3倍した各値と、偶数桁目の数値を全て足す。
③それにより得られた値の下一桁の値を10から引く。
上のJANコードの本体部分は498703518461なので、これで計算すると、②の値は以下のようになります。
4+9*3+8+7*3+0+3*3+5+1*3+8+4*3+6+1*3=106
この値の下一桁は6なのでこれを10から引いて得られた4がJANコードのチェックデジットです。
JANコードの本体部分498703518461にこのチェックデジット4を付加したものがJANコード4987035184614です。
上のGS1コードの本体部分は1498703518461なので、これで計算すると、②の値は以下のようになります。
1*3+4+9*3+8+7*3+0+3*3+5+1*3+8+4*3+6+1*3=109
この値の下一桁は9なのでこれを10から引いて得られた1がGS1コードのチェックデジットです。
GS1コードの本体部分1498703518461にこのチェックデジット1を付加したものがGS1コード149870351846141です。

つまりJANコードからGS1コードを生成することが可能で、JANコードの先頭に1を付加し、末尾の一桁を削除することでGS1コードの本体部分を生成し、そのGS1コードの本体部分の末尾に、GS1コードの本体部分の各桁から計算した新たなチェックデジットを付加することでGS1コードが得られます。
一方GS1コードからJANコードを生成するのであれば、先頭と末尾の一桁を削除してJANコードの本体部分を生成し、そのJANコードの本体部分の末尾に、JANコードの本体部分の各桁から計算した新たなチェックデジットを付加することでJANコードが得られます。

単にルックアップするだけであれば、JANコードの末尾一桁を除いた本体部分と、GS1コードの先頭と末尾の一桁を除いた部分とを対比すればよいことになります。

なおGS1コードは、お薬のシート単位(調剤単位)にも付与されますが、それらは箱単位で付与されるGS1コードとは異なる値であり、上述のJANコードとの関係は成り立ちません。

余談
チェックデジットをエクセルで計算する際に、MID関数で各桁を取り出すと、出力は文字列です。そのままでは数値としての和が得られません。取り出した文字列に*1(1をかける演算)を行うと数値として扱ってくれるようになります。

参考
ここは大変勉強になりました。
いろいろな医薬品コード

この記事が気に入ったらサポートをしてみませんか?