Skip to content

Instantly share code, notes, and snippets.

@stagira13
Created July 26, 2017 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stagira13/6b9822fd166f2bf1b3726069e49ddecd to your computer and use it in GitHub Desktop.
Save stagira13/6b9822fd166f2bf1b3726069e49ddecd to your computer and use it in GitHub Desktop.
ICD10 => MDC6変換マスタ作成
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import csv\n",
"import sqlite3\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# read_excelでも出来そう。あと、convertersでstrにする必要があるぞい\n",
"xls = pd.ExcelFile('平成28年度電子点数表_20170524.xlsx')\n",
"df = xls.parse(sheetname=\"4)ICD\",index_col=None, na_values=['NA'], converters={'MDCコード': str,'分類コード':str})"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MDCコード</th>\n",
" <th>分類コード</th>\n",
" <th>ICD名称</th>\n",
" <th>ICDコード</th>\n",
" <th>変更区分</th>\n",
" <th>有効期間</th>\n",
" <th>Unnamed: 6</th>\n",
" <th>更新日</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>開始日</td>\n",
" <td>終了日</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳髄膜の悪性新生物</td>\n",
" <td>C700</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>髄膜の悪性新生物,部位不明</td>\n",
" <td>C709</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳の悪性新生物</td>\n",
" <td>C71$</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>嗅神経の悪性新生物</td>\n",
" <td>C722</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MDCコード 分類コード ICD名称 ICDコード 変更区分 有効期間 Unnamed: 6 更新日\n",
"0 NaN NaN NaN NaN NaN 開始日 終了日 NaN\n",
"1 01 0010 脳髄膜の悪性新生物 C700 0.0 20160401 99999999 0.0\n",
"2 01 0010 髄膜の悪性新生物,部位不明 C709 0.0 20160401 99999999 0.0\n",
"3 01 0010 脳の悪性新生物 C71$ 0.0 20160401 99999999 0.0\n",
"4 01 0010 嗅神経の悪性新生物 C722 0.0 20160401 99999999 0.0"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MDCコード</th>\n",
" <th>分類コード</th>\n",
" <th>ICD名称</th>\n",
" <th>ICDコード</th>\n",
" <th>変更区分</th>\n",
" <th>有効期間</th>\n",
" <th>Unnamed: 6</th>\n",
" <th>更新日</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>開始日</td>\n",
" <td>終了日</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MDCコード 分類コード ICD名称 ICDコード 変更区分 有効期間 Unnamed: 6 更新日\n",
"0 NaN NaN NaN NaN NaN 開始日 終了日 NaN"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# スライスで行指定\n",
"df[0:1]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#dropで削除(not inplace)\n",
"df = df.drop(0)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MDCコード</th>\n",
" <th>分類コード</th>\n",
" <th>ICD名称</th>\n",
" <th>ICDコード</th>\n",
" <th>変更区分</th>\n",
" <th>有効期間</th>\n",
" <th>Unnamed: 6</th>\n",
" <th>更新日</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳髄膜の悪性新生物</td>\n",
" <td>C700</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>髄膜の悪性新生物,部位不明</td>\n",
" <td>C709</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳の悪性新生物</td>\n",
" <td>C71$</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>嗅神経の悪性新生物</td>\n",
" <td>C722</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>視神経の悪性新生物</td>\n",
" <td>C723</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MDCコード 分類コード ICD名称 ICDコード 変更区分 有効期間 Unnamed: 6 更新日\n",
"1 01 0010 脳髄膜の悪性新生物 C700 0.0 20160401 99999999 0.0\n",
"2 01 0010 髄膜の悪性新生物,部位不明 C709 0.0 20160401 99999999 0.0\n",
"3 01 0010 脳の悪性新生物 C71$ 0.0 20160401 99999999 0.0\n",
"4 01 0010 嗅神経の悪性新生物 C722 0.0 20160401 99999999 0.0\n",
"5 01 0010 視神経の悪性新生物 C723 0.0 20160401 99999999 0.0"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#リネーム。df.columnsを直接書き換えてもよいが、こっちの方が狙いうち出来て楽かな\n",
"df.rename(columns={'有効期間': '開始日', 'Unnamed: 6':'終了日'}, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MDCコード</th>\n",
" <th>分類コード</th>\n",
" <th>ICD名称</th>\n",
" <th>ICDコード</th>\n",
" <th>変更区分</th>\n",
" <th>開始日</th>\n",
" <th>終了日</th>\n",
" <th>更新日</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳髄膜の悪性新生物</td>\n",
" <td>C700</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>髄膜の悪性新生物,部位不明</td>\n",
" <td>C709</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳の悪性新生物</td>\n",
" <td>C71$</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>嗅神経の悪性新生物</td>\n",
" <td>C722</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>視神経の悪性新生物</td>\n",
" <td>C723</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MDCコード 分類コード ICD名称 ICDコード 変更区分 開始日 終了日 更新日\n",
"1 01 0010 脳髄膜の悪性新生物 C700 0.0 20160401 99999999 0.0\n",
"2 01 0010 髄膜の悪性新生物,部位不明 C709 0.0 20160401 99999999 0.0\n",
"3 01 0010 脳の悪性新生物 C71$ 0.0 20160401 99999999 0.0\n",
"4 01 0010 嗅神経の悪性新生物 C722 0.0 20160401 99999999 0.0\n",
"5 01 0010 視神経の悪性新生物 C723 0.0 20160401 99999999 0.0"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# MDC6列を作成\n",
"df['MDC6'] = df['MDCコード'] + df['分類コード']"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>MDCコード</th>\n",
" <th>分類コード</th>\n",
" <th>ICD名称</th>\n",
" <th>ICDコード</th>\n",
" <th>変更区分</th>\n",
" <th>開始日</th>\n",
" <th>終了日</th>\n",
" <th>更新日</th>\n",
" <th>MDC6</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳髄膜の悪性新生物</td>\n",
" <td>C700</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>髄膜の悪性新生物,部位不明</td>\n",
" <td>C709</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>脳の悪性新生物</td>\n",
" <td>C71$</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>嗅神経の悪性新生物</td>\n",
" <td>C722</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>01</td>\n",
" <td>0010</td>\n",
" <td>視神経の悪性新生物</td>\n",
" <td>C723</td>\n",
" <td>0.0</td>\n",
" <td>20160401</td>\n",
" <td>99999999</td>\n",
" <td>0.0</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MDCコード 分類コード ICD名称 ICDコード 変更区分 開始日 終了日 更新日 MDC6\n",
"1 01 0010 脳髄膜の悪性新生物 C700 0.0 20160401 99999999 0.0 010010\n",
"2 01 0010 髄膜の悪性新生物,部位不明 C709 0.0 20160401 99999999 0.0 010010\n",
"3 01 0010 脳の悪性新生物 C71$ 0.0 20160401 99999999 0.0 010010\n",
"4 01 0010 嗅神経の悪性新生物 C722 0.0 20160401 99999999 0.0 010010\n",
"5 01 0010 視神経の悪性新生物 C723 0.0 20160401 99999999 0.0 010010"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# ICDが$で終わるものは、0-9を末尾に追加することにする。\n",
"#そのための関数を用意\n",
"def replace_dollar(string):\n",
" icd_list = [string.replace('$',str(i)) for i in range(0,10)]\n",
" return icd_list"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 実際の処理を行う。単純なforループ\n",
"mdc6 = []\n",
"icd10 = []\n",
"for icd,mdc in zip(df['ICDコード'],df['MDC6']):\n",
" if icd.endswith('$'):\n",
" icd_list = replace_dollar(icd)\n",
" icd10.extend(icd_list)\n",
" mdc6.extend([mdc for i in range(0,10)])\n",
" else:\n",
" icd10.append(icd)\n",
" mdc6.append(mdc)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# 上記で作ったリストから、新たなマスタを作成。\n",
"master = pd.DataFrame({'MDC6':mdc6,'ICD10':icd10})"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ICD10</th>\n",
" <th>MDC6</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>C712</td>\n",
" <td>010010</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ICD10 MDC6\n",
"4 C712 010010"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 使用例\n",
"master[master['ICD10'] == 'C712']"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment