python - 症例報告のテーブルを csv から自動作成

(2024-11-16)

医学論文の症例報告をもっとわかりやすい方法で表示したいと考えました。

患者:66 歳,女性。
主訴:意識障害。
既往歴:パーキンソン病,糖尿病。
服薬歴:酸化マグネシウム1g/日,センノシド 12mg/日,抗パーキンソン病薬,糖尿病薬。
現病歴:便秘と肛門痛のためバリウム注腸検査を予定して、前処置としてクエン酸Mg 34g(マグコロール P;Mg 含有量 2.7g)を内服し,その翌日に意識障害が出現したため救急搬送となった。
来院時現症:意識障害(JCS 200)、血 清 Mg 15.5mg/dL。
経過:腹部CTで糞便性腸閉塞症と診断された。高マグネシウム血症に対して血液透析がおこなわれ、腸閉塞に対しては人工肛門造設術が施行された。 排便により高マグネシウム血症は改善した。

これでは今ひとつ見にくい感じがします。

python で csv から html を作成するプログラムは以前書きましたが、それを使うと、

患者 66 歳,女性。
主訴 意識障害。
既往歴 パーキンソン病,糖尿病。
服薬歴 酸化マグネシウム1g/日,センノシド 12mg/日,抗パーキンソン病薬,糖尿病薬。
現病歴 便秘と肛門痛のためバリウム注腸検査を予定して、前処置としてクエン酸Mg 34g(マグコロール P;Mg 含有量 2.7g)を内服し,その翌日に意識障害が出現したため救急搬送となった。
来院時現症 意識障害(JCS 200)、血 清 Mg 15.5mg/dL。
経過 腹部CTで糞便性腸閉塞症と診断された。高マグネシウム血症に対して血液透析がおこなわれ、腸閉塞に対しては人工肛門造設術が施行された。 排便により高マグネシウム血症は改善した。

この方が見やすい気がします。

python プログラム

import os
class createTbl:
def __init__(self):
self.csv = "/home/mituo/aaa.csv"
self.allarr = []
self.table_class = 'my-8'
self.th_row = False
self.th_col = True
self.th_row_class = "bg-blue-50 px-4 py-2 border border-solid border-gray-300 whitespace-nowrap"
self.th_col_class = 'bg-orange-50 px-4 py-2 border border-solid border-gray-300'
self.td_row_class = 'bg-amber-50 px-4 py-2 border border-solid border-gray-300'
def readCSV(self):
with open(self.csv, 'r', encoding='utf-8') as f1:
allcsv = f1.read()
alldata = allcsv.strip().split("\n")
for ev in range(len(alldata)):
alldata[ev] = alldata[ev].split(",")
self.allarr = alldata
def generate_table(self):
html_table = f'<table class="{self.table_class}">\n'
for i, row in enumerate(self.allarr):
html_table += ' <tr>\n'
for j, cell in enumerate(row):
if (i == 0 and self.th_row) or (j == 0 and self.th_col):
html_table += f' <th class="{self.th_row_class}">{cell}</th>\n'
else:
html_table += f' <td class="{self.td_row_class}">{cell}</td>\n'
html_table += ' </tr>\n'
html_table += '</table>'
return html_table
def write_html(self, file_path):
html_content = self.generate_table()
with open(file_path, 'w', encoding='utf-8') as f:
f.write(html_content)
if __name__ == '__main__':
crTbl = createTbl() # 最初の行は<th>、最初の列は<td>にする場合
crTbl.readCSV()
html_file_path = '/home/mituo/file.html'
crTbl.write_html(html_file_path)