全国の医療機関コードを取得する

 医療機関コードは10桁の数値からなる.最初の2桁が都道府県コード,次の1桁が区分点数コード,後半7桁が医療機関番号である.医療機関番号は都道府県内では一意であるが,都道府県をまたぐと一意ではなくなる.今回はその医療機関番号から医療機関コードを取得する方法を投稿する.

データのダウンロード

厚生労働省の各地方厚生局でコード内容別医療機関一覧表を検索する

 厚生労働省の地方厚生局へのリンクはここにある.北海道厚生局,東北厚生局,関東信越厚生局,東海北陸厚生局,近畿厚生局,中国四国厚生局,四国厚生支局,九州厚生局の8個がある.

厚生労働省の各地方厚生局へのリンク
厚生労働省の各地方厚生局へのリンク

 北海道厚生局の検索ウィンドウに「コード内容別医療機関一覧表」と入力する.

北海道厚生局の件s買うウィンドウに「コード内容別医療機関一覧表」と入力する
北海道厚生局の検索ウィンドウに「コード内容別医療機関一覧表」と入力する

 検索結果の最初のリンクをクリックする.

検索結果の最初のリンクをクリック
検索結果の最初のリンクをクリック

 北海道厚生局の場合,ダウンロードしたファイル名に注意が必要である.それぞれ「医科(病院)」「医科(診療所)」「歯科」「薬局」と書き換えておく.

EXCELのファイル,またはzipファイルをクリックしてダウンロード
EXCELのファイル,またはzipファイルをクリックしてダウンロード

 東北厚生局の場合,ファイル名に「医科」「歯科併設」「歯科」「医科併設」「薬局」の文字列があるため,このままとしておく.

東北厚生局の場合
東北厚生局の場合

 関東信越厚生局の場合もファイル名に「医科」「歯科併設」「歯科」「医科併設」「薬局」の文字列があるため,このままとしておく.

関東信越厚生局の場合
関東信越厚生局の場合

 東海北陸厚生局の場合,ファイル名に「医科」「歯科」「薬局」の文字列があるためこのままとしておく.

東海北陸厚生局の場合
東海北陸厚生局の場合

 近畿厚生局の場合,ファイル名に「ika」「sikaheisetu」「sika」「ikaheisetu」「yakkyoku」の文字列があるためこのままとしておく.

近畿厚生局の場合
近畿厚生局の場合

 中国四国厚生局の場合,ファイル名に「医科」「歯科」「薬局」の文字列があるためこのままとしておく.

中国四国厚生局の場合
中国四国厚生局の場合

 四国厚生支局の場合,ファイル名に「医科」「歯科」「薬局」の文字列があるためこのままとしておく.

四国厚生支局の場合
四国厚生支局の場合

 九州厚生局の場合,ファイル名に「ika」「shika」「yakkyoku」の文字列があるためこのままとしておく.

九州厚生局の場合
九州厚生局の場合

ZIPCLOUDから郵便番号と住所のデータをダウンロードする

 日本郵便の郵便番号データダウンロードでも良いのだが,筆者はZIPCLOUDの郵便番号データのダウンロードを使用している.

Power Queryでの処理

 「データ」タブの「データの取得」「ファイルから」「フォルダーから」と進む.

「データ」タブの「データの取得」「ファイルから」「フォルダーから」
「データ」タブの「データの取得」「ファイルから」「フォルダーから」

 厚生局ごとにファイルをまとめたフォルダーを指定する.

厚生局ごとにファイルをまとめたフォルダーを指定
厚生局ごとにファイルをまとめたフォルダーを指定

 ダイアログで「結合」「データの結合と変換」と進む.これはファイル名を取り込むための処置である.

ダイアログで「結合」「データの結合と変換」
ダイアログで「結合」「データの結合と変換」

 「ファイルの結合」で表示オプションのシートを選択してOKする.

「ファイルの結合」で表示オプションのシートを選択してOK
「ファイルの結合」で表示オプションのシートを選択してOK

不要な行のフィルター

 通し番号の列のフィルターで不要な行のチェックを外す.

通し番号の列のフィルターで不要な行のチェックを外す
通し番号の列のフィルターで不要な行のチェックを外す

 通し番号の列のフィルターで不要な行のチェックを外す.

通し番号の列のフィルターで不要な行のチェックを外す
通し番号の列のフィルターで不要な行のチェックを外す

住所の列から郵便番号の切り出し

 住所の列で右クリックして「列の分割」「文字数による分割」へと進む.

住所の列で右クリックして「列の分割」「文字数による分割」
住所の列で右クリックして「列の分割」「文字数による分割」

 「文字数」を9,「分割」を「できるだけ左側で1回」としOKをクリックする.

「文字数」を9,「分割」を「できるだけ左側で1回」としOKI
「文字数」を9,「分割」を「できるだけ左側で1回」としOK

 郵便番号の列で右クリックして「値の置換」を選択する.

郵便番号の列で右クリックして「価の置換」
郵便番号の列で右クリックして「値の置換」

 「検索する値」に「〒」,「置換後」は空白のままOKする.

「検索する値」に「〒」,「置換後」は空白のままOK
「検索する値」に「〒」,「置換後」は空白のままOK

 「検索する値」に「ー」,「置換後」を空白のままOKする.

「検索する値」に「ー」,「置換後」を空白のままOK
「検索する値」に「ー」,「置換後」を空白のままOK

年月日の整形

 年月日の列で右クリックして「値の置換」と進む.

年月日の列で右クリックして「値の置換」
年月日の列で右クリックして「値の置換」

 「検索する値」に「.」,「置換後」に「/」と入力しOKする.

「検索する値」に「.」,「置換後」に「/」と入力しOK
「検索する値」に「.」,「置換後」に「/」と入力しOK

 「検索する値」に「元」,「置換後」に「1」と入力しOKする.

「検索する値」に「元」,「置換後」に「1」と入力しOK
「検索する値」に「元」,「置換後」に「1」と入力しOK

 年月日の列で右クリックして「型の変更」「日付」へと進む.

年月日の列で右クリックして「型の変更」「日付」
年月日の列で右クリックして「型の変更」「日付」

列名の決定

 列名は区分点数コード,医療機関番号,医療機関名,郵便番号,所在地,電話番号,経営母体,代表者名,届出年月日,種別とする.

医療機関番号の整形

 7桁の「医療機関番号」の列で右クリックして「値の置換」へと進む.北海道厚生局のファイルではコンマだけだが,他の地方厚生局では他にピリオド,半角ハイフン,半角スペース,全角中黒が混入していた.厚生局内では意味のある区切りなのだろうが,データクレンジングでは邪魔なだけである.

7桁の「医療機関番号」の列で右クリックして「値の置換」
7桁の「医療機関番号」の列で右クリックして「値の置換」

 「検索する値」に「,」,「置換後」は空白のままOKする.

「検索する値」に「,」,「置換後」は空白のままOK
「検索する値」に「,」,「置換後」は空白のままOK

区分点数コードの整形

 最も左側の「区分点数コード」列で「列の分割」を駆使して「医科」「歯科」「薬局」の文字列を切り出したあとの処置である.右クリックして「値の置換」へと進む.

最も左側の「区分点数コード」列で右クリックして「値の置換」
最も左側の「区分点数コード」列で右クリックして「値の置換」

 「検索する値」に「医科」,「置換後」に「1」と入力しOKする.

「検索する値」に「医科」,「置換後」に「1」と入力しOK
「検索する値」に「医科」,「置換後」に「1」と入力しOK

 「検索する値」に「歯科」,「置換後」に「3」と入力しOKする.

「検索する値」に「歯科」,「置換後」に「3」と入力しOK
「検索する値」に「歯科」,「置換後」に「3」と入力しOK

 「検索する値」に「薬局」,「置換後」に「4」と入力しOKする.

「検索する値」に「薬局」,「置換後」に「4」と入力しOK
「検索する値」に「薬局」,「置換後」に「4」と入力しOK

閉じて読み込む

 最後に「閉じて読み込む」を押下して読み込む.テーブルの右側のヘッダーに「管轄」とタイプ入力し,全行に「北海道厚生局」と入力する.

すべての地方厚生局で上記の作業を繰り返す

 続いて東北厚生局,関東信越厚生局,東海北陸厚生局,近畿厚生局,中国四国厚生局,四国厚生支局,九州厚生局のファイルで上記の作業を繰り返す.厚生局ごとにファイル名,医療機関番号に混入している文字列のクセが異なるが,Power Queryで対応できる範疇である.

8つのファイル内容をコピペで結合する

 8つのファイルからPower Queryで結合しようとしても,なぜかエラーが発生して統合できない.やむなくコピペで対応する.2025年8月1日時点での全国の医療機関番号を付与したEXCELのブックを置いておく.M_MedicalInstitution このファイルに付与してある医療機関番号は7桁であり,10桁の医療機関コードとは異なるので注意が必要である.

タブ区切りテキストで保存

 上記のファイルをタブ区切りテキストで保存する.

郵便番号マスターのテキストファイルへの書き出し

 ZIPCLOUDからダウンロードしたcsvファイルをEXCELで開き,タブ区切りテキストで保存する.ファイル名はM_ZIPCODEとする.

 日本郵便の郵便番号データダウンロードから事業所の個別郵便番号のダウンロードへと進み,最新データのダウンロードを行う.ダウンロードしたファイルをEXCELで開き,M_JIGYOSYOのファイル名で保存し,タブ区切りテキストで保存する.

SQL Serverでの処理

ウィザードによるインポート

 ウィザードを使って上記のM_MedicalInstitution.txtとM_ZIPCODE.txt,M_JIGYOSYO.txtをSQL Serverにインポートする.

M_MedicalInstitutionのインポートにおける列マッピング
M_MedicalInstitutionのインポートにおける列マッピング
M_ZIPCODEのインポートにおける列マッピング
M_ZIPCODEのインポートにおける列マッピング
M_JIGYOSYOのインポートにおける列マッピング
M_JIGYOSYOのインポートにおける列マッピング

クエリでの照合

 単純にM_MedicalInstituionテーブルとM_ZIPCODEテーブルを結合するだけでは医療機関コードがNULLの行が1134件出現する.

SELECT LEFT(Z.全国地方公共団体コード, 2)
      +[区分点数コード]
      +[医療機関番号] AS '医療機関コード'
      ,[医療機関名]
      ,M.[郵便番号]
      ,Z.都道府県名
      ,[所在地]
      ,[電話番号]
      ,[経営母体]
      ,[代表者名]
      ,[届出年月日]
      ,[種別]
      ,[管轄]
  FROM [MedicalAreaDB].[dbo].[M_MedicalInstitution] AS M
  LEFT  JOIN    dbo.M_ZIPCODE   AS Z
  ON    M.郵便番号 = Z.郵便番号
  WHERE LEFT(Z.全国地方公共団体コード, 2)
      +[区分点数コード]
      +[医療機関番号] IS NULL
(1134 行に影響しました)

 先にダウンロードしたM_JIGYOSYOテーブルも結合してみる.

SELECT CASE WHEN LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] IS NULL 
       THEN LEFT(J.所在地のJISコード, 2) + [区分点数コード] +[医療機関番号]
       ELSE LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] END  AS '医療機関コード'
      ,[医療機関名]
      ,M.[郵便番号]
      ,Z.都道府県名
      ,[所在地]
      ,[電話番号]
      ,[経営母体]
      ,[代表者名]
      ,[届出年月日]
      ,[種別]
      ,[管轄]
  FROM [MedicalAreaDB].[dbo].[M_MedicalInstitution] AS M
  LEFT  JOIN    dbo.M_ZIPCODE   AS Z
  ON    M.郵便番号 = Z.郵便番号
  LEFT  JOIN    dbo.M_JIGYOSYO  AS J
  ON    M.郵便番号 = J.大口事業所個別番号
  WHERE CASE WHEN LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] IS NULL 
       THEN LEFT(J.所在地のJISコード, 2) + [区分点数コード] +[医療機関番号]
       ELSE LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] END IS NULL
(51 行に影響しました)

 1134行から51行に減った.

M_MedicalInstitutionテーブル構造の変更

 「医療機関コード」列と「都道府県名」列を追加する.

「医療機関コード」列と「都道府県名」列の追加
「医療機関コード」列と「都道府県名」列の追加

テーブルのUPDATE

 下記クエリを実行してテーブルを更新する.

UPDATE	M_MedicalInstitution
SET		医療機関コード = CASE WHEN LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] IS NULL 
        THEN LEFT(J.所在地のJISコード, 2) + [区分点数コード] +[医療機関番号]
        ELSE LEFT(Z.全国地方公共団体コード, 2) + [区分点数コード] +[医療機関番号] END
    ,   都道府県名 = CASE WHEN Z.都道府県名 IS NULL THEN J.都道府県名 ELSE Z.都道府県名 END
FROM	dbo.M_MedicalInstitution	AS M
LEFT	JOIN	dbo.M_ZIPCODE	AS Z
ON		M.郵便番号 = Z.郵便番号
LEFT	JOIN	dbo.M_JIGYOSYO	AS J
ON		M.郵便番号 = J.大口事業所個別番号
(216322 行に影響しました)

 残る51行の医療機関についてはさらなる調査と対応が必要である.

まとめ

 厚生労働省の地方厚生局のサイトから医療機関番号を取得し,日本郵便の情報を追加して医療機関コードを取得した.

 216,322件の医療機関については医療機関コードを取得できたが,51件の医療機関については医療機関コードを取得できなかった.

 そもそも厚生労働省が10桁の医療機関コードを公開していないために起こった事態であり,政府が主導して公開すべきである.各地方厚生局ごとにファイル名の命名規則,医療機関番号に混入する余分な文字が異なっており,政府が主導して統一すべきである.九州厚生局に限っては都道府県名が住所に記載されており,他の地方厚生局もこれに倣うべきである.

 医療機関番号は毎月更新されており,本記事で公開した医療機関番号は2025年8月1日時点のものである.

“全国の医療機関コードを取得する” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください