adm-ntuh-net/forteo/Untitled.ipynb
2024-12-12 10:19:16 +08:00

435 lines
63 KiB
Text

{
"cells": [
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"from collections import Counter\n",
"\n",
"import math\n",
"import re\n",
"\n",
"from pandas import read_excel\n",
"from pymongo import MongoClient\n",
"from pyquery import PyQuery as pq\n",
"from scipy import stats\n",
"\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"SHEETS = (\n",
" (\"神外-總院_1070920.xlsx\", \"總院\"), \n",
"# (\"(骨穩)總院_分科1070928.xlsx\", \"工作表1\")\n",
" (\"(骨穩)總院_分科1071002.xlsx\", \"工作表1\")\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"client = MongoClient(\"mongodb.xiao.tw\", 27017)\n",
"db = client.forteo\n",
"posts = db.posts"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib.font_manager import FontManager\n",
"\n",
"import subprocess\n",
"\n",
"def get_matplot_zh_font():\n",
" fm = FontManager()\n",
" mat_fonts = set(f.name for f in fm.ttflist)\n",
"\n",
" output = subprocess.check_output('fc-list :lang=zh -f \"%{family}\\n\"', shell=True)\n",
" output=str(output)\n",
" zh_fonts = set(f.split(',', 1)[0] for f in output.split('\\n'))\n",
"\n",
" print(mat_fonts)\n",
" print(zh_fonts)\n",
" available = list(mat_fonts & zh_fonts)\n",
"\n",
" print ('*' * 10, '可用的字體', '*' * 10)\n",
" for f in available:\n",
" print(f)\n",
" return available\n",
"\n",
"def set_matplot_zh_font():\n",
" available = get_matplot_zh_font()\n",
" if len(available) > 0:\n",
" mpl.rcParams['font.sans-serif'] = [available[0]] # 指定默認字體\n",
" mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題\n",
" \n",
"# set_matplot_zh_font()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"frames = []"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"for file_name, sheet_name in SHEETS:\n",
" data = read_excel(file_name, sheet_name)\n",
" frames.append(data)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df=pd.concat(frames, ignore_index=True, sort=False)\n",
"df.to_excel('concat.xls')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"8.680568609022558\n",
"6.696428571428571 0.14285714285714285 24.0\n"
]
}
],
"source": [
"print(df['用藥時間'].mean())\n",
"print(df['用藥時間'].median(), df['用藥時間'].min(), df['用藥時間'].max())"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"antiresorptives = {\n",
" 'Prolia': 'RANKL inhibitor',\n",
" 'Evista': 'SERM',\n",
" 'Fosamax': 'Bisphosphonate',\n",
" 'Aclasta': 'Bisphosphonate',\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"countDrug = Counter()\n",
"\n",
"column_ar = []\n",
"\n",
"for index, row in df.iterrows():\n",
" tmp_ar = None\n",
" post = posts.find_one({\"_id\": row['病歷號']})\n",
" if post is None:\n",
" continue\n",
" print(index, row['病歷號'], post)\n",
"\n",
"# print(index, row['病歷號'])\n",
" drug_set = set()\n",
" if post['drug']:\n",
" \n",
" for drugs in post['drug']:\n",
"# print(drugs)\n",
" for tr in drugs['Drug']:\n",
" pqtr = pq(tr)\n",
" drugname = pqtr('td')[0].text\n",
" drugname = drugname.replace('(管4) ', '')\n",
" drug_set.add(drugname)\n",
"# countDrug[pqtr('td')[0].text] += 1\n",
"# print(pqtr('td')[0].text)\n",
"# break\n",
"# print(drug_set)\n",
" if tmp_ar is None:\n",
" for ar in antiresorptives:\n",
" if drugname.startswith(ar):\n",
" tmp_ar = ar\n",
"\n",
" for d in drug_set:\n",
" countDrug[d] += 1\n",
" \n",
" column_ar.append(tmp_ar)\n",
"# break\n",
"# print(countDrug)\n",
"# row['AR'] = column_ar\n",
" df.loc[index, 'AR'] = tmp_ar\n",
" if tmp_ar:\n",
" df.loc[index, 'AR2'] = antiresorptives[tmp_ar]\n",
" df.loc[index, 'antiresorptives'] = tmp_ar if tmp_ar == 'Prolia' else ' Others'\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cDrug = countDrug\n",
"del cDrug['Forteo Prefilled Inj 600 mcg/2.4 mL /pen']\n",
"del cDrug['(4mm) Micro-Fine Insulin Pen Needle 32G /set']\n",
"del cDrug['(8mm) Micro-Fine Insulin Pen Needle 31G /set']\n",
"labels, values = zip(*countDrug.most_common(10))\n",
"# plt.rcParams['font.sans-serif']=['Arial Unicode MS'] #用来正常显示中文标签\n",
"plt.pie(values, labels=labels)\n",
"plt.savefig('drug.png', dpi=400)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"antiresorptives = {\n",
" 'Prolia': 'RANKL inhibitor',\n",
" 'Evista': 'SERM',\n",
" 'Fosamax': 'Bisphosphonate',\n",
" 'Aclasta': 'Bisphosphonate',\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Counter({'Prolia': 30, 'Evista': 10, 'Fosamax': 6, 'Aclasta': 5})\n",
"Counter({'RANKL inhibitor': 30, 'Bisphosphonate': 11, 'SERM': 10})\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cAR = Counter()\n",
"ccAR = Counter()\n",
"\n",
"for c in countDrug:\n",
" for ar in antiresorptives:\n",
" if c.startswith(ar):\n",
" cAR[ar]+=countDrug[c]\n",
" ccAR[antiresorptives[ar]]+=countDrug[c]\n",
" \n",
"print(cAR)\n",
"print(ccAR)\n",
"labels, values = zip(*cAR.most_common())\n",
"plt.pie(values, labels=labels, autopct='%.2f')\n",
"plt.savefig('cAR.png', dpi=400)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"PATTERNS = (\n",
" 'T-\\s*score\\s*=\\s*([-+]?\\d*\\.\\d+)',\n",
" 'T-\\s*score\\s*=\\s*(- \\d*\\.\\d+)',\n",
" 'T-score is\\s*([-+]?\\d*\\.\\d+)',\n",
" 'T score =\\s*([-+]?\\d*\\.\\d+)',\n",
")\n",
"def T_score(html):\n",
" min = None\n",
" for pattern in PATTERNS:\n",
" for m in re.findall(pattern, html):\n",
"# print(m)\n",
" t = float(m.replace(' ', ''))\n",
"# print (t)\n",
" if min and t > min:\n",
" continue\n",
" min = t \n",
" return min \n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PRE = []\n",
"POST =[]\n",
"\n",
"for index, row in df.iterrows():\n",
" post = posts.find_one({\"_id\": row['病歷號']})\n",
" if post is None:\n",
" continue\n",
" print(index, row['病歷號'], post)\n",
"\n",
"# print(index, row['病歷號'])\n",
"# print(post)\n",
" if post['report']:\n",
" BMD = {}\n",
" for r in post['report']:\n",
"# print(r)\n",
"\n",
" r_class = r['報告類別'].upper()\n",
" r_date = r['檢查日期']\n",
" if 'BMD' in r_class:\n",
"# print(r_date, r_class)\n",
"# print(r)\n",
"# print(row['病歷號'], r_date, r_class)\n",
" t_score = T_score(r['html'])\n",
" if t_score is None:\n",
"# # No T score in report\n",
"# print(row['病歷號'], r_date, t_score, r_class)\n",
" continue\n",
" \n",
" if r_date not in BMD or t_score < BMD[r_date]:\n",
" BMD[r_date] = t_score\n",
" \n",
"# print(row['簽署日'], row['流失/停藥日期'])\n",
"# print(type(row['簽署日']), type(row['流失/停藥日期']))\n",
" \n",
" if type(row['簽署日']) is not str and math.isnan(row['簽署日']):\n",
" dStart = row['流失/停藥日期']\n",
" else:\n",
" dStart = row['簽署日']\n",
" if BMD: \n",
"# print(row['病歷號'], dStart, BMD)\n",
" \n",
" pre = None\n",
" post = None\n",
" \n",
" for d, b in BMD.items():\n",
" if d > dStart:\n",
" post = b\n",
" else:\n",
" pre = b\n",
" \n",
" if pre and post:\n",
" PRE.append(pre)\n",
" POST.append(post)\n",
"# print(row['病歷號'], dStart, pre, post)\n",
" df.loc[index, 'BMD Change'] = post-pre\n",
"\n",
"df.to_excel('concat3.xls')\n",
" \n",
"D=df.boxplot(column='BMD Change',by='antiresorptives') \n",
"D.get_figure().savefig('cAR3.png', dpi=400)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"d = {\n",
" 'bmd_before': PRE, \n",
" 'bmd_after': POST,\n",
"}\n",
"\n",
"df2 = pd.DataFrame(data=d)\n",
"df2.describe() \n",
"df2.plot(kind='box') \n",
"# plt.savefig('boxplot_outliers.png')\n",
" \n",
"# print(stats.ttest_rel(df2['bmd_before'], df2['bmd_after']))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}