def 小児科医():

かけだし小児科医が仕事の合間にプログラミングを勉強するブログです。

機械はパニックにならない、という話。

昨日Twitterを眺めていたら、こんな記事を見つけました。

qiita.com

これを作られた竹村先生は僕よりも遥かに上の先生なので、なんか記事にしてしまうのも申し訳ないのですが、

即時型アレルギー反応が出た時に、その対処法を教えてくれるアプリ。

アナフィラキシー既往がある子はエピペン (アドレナリン筋注)のキットを持っていたりするが、意外と使わずに症状が悪くなって救急外来受診、ということがたまにあります。

 

もちろん普段の外来でどういう時に使うか、というのは指導するのだが

こういう場合は子供本人はもちろん家族も、

どういう症状がでたら打ったらいいかの判断がつかないorパニクってわけわかんなくなってることが多いです。

後は学校の先生とか友達の家に行った時とか、周りの大人がエピペンの使い方を理解していなかったりするとどうしようもなかったりする。

 

ちなみにエピペンは医師免許だけでは処方できず講習を受けないと処方できなかったりします(でも20分くらいで取れる)。

www.epipen.jp

このアプリもそうですが、緊急時はパニックになることが想定されるので、

今後は機械に任せていく方がミスがなくなるのかなぁとか思ったりします。

 

んで、自分もそういうの作成中のWebアプリに追加するか?と思って遊びで作ってたプログラムを引っ張ってみた。

小児科のCPA(心肺機能停止)時の対応のコード(医療者用)。

まず一つ言えるのはCPAの時にスマホを開いている時間は多分ない笑

でも挿管チューブのサイズとかはいいかもしれん。

#緊急時お助けプログラム
print('緊急時お助けプログラムです')
while True:
try:
a = input('何歳ですか?')
w = input('体重は何kgですか?')
Help = input('蘇生が必要ですか?はい:1/いいえ:2')
A = float(a)
W = float(w)
H = float(Help)
if (H == 1) or (H == 2): break
print('入力ミスです')
except :
print('入力ミスです')
#CPR処置
i = 0
while H==1:
if i > 3: break
import datetime
t = datetime.datetime.now()
print('\n' + t.strftime("%Y/%m/%d %H:%M:%S"))
print('2:15で胸骨圧迫を開始してください\n新生児の場合は1:3です')
ad=lambda W: W*0.01
print('ボスミンの投与量は' +str(ad(W))+ 'mgです')
Help2 = input('波形はpulselessVT/VFですか?はい:1/いいえ:2')
H2 = float(Help2)
if H2 == 1:
sh = lambda W: W * 4
print('\n電気ショックは' + str(sh(W)) + 'Jです(非同期)')
i += 1
else:
i += 1

#挿管
if A < 0.1:
de = lambda W: W+6
print('\n挿管チューブは3.5mm、深さは' + str(de(W)) + 'cmです')
else:
In = lambda A: A / 4 + 4
de = lambda A: (A / 4 + 4) * 3
print('挿管チューブは' +str(In(A)) + 'mm、深さは' + str(de(A)) + 'cmです')

なんかすごい見にくい、、、作ってる時は何も思わないんだけどなぁ。

でもっと探してたらデスクトップアプリにしようとした形跡があった。

import tkinter
import tkinter.messagebox as mb
import tkinter.simpledialog as sd
ans= mb.askyesno("質問", "緊急お助けシステムを使いますか?")
if ans == True:
a = sd.askfloat('入力', '年齢を入力してください')
w = sd.askfloat('入力', '体重を入力してください')
A = float(a)
W = float(w)
if A < 0.1:
de = lambda W: W + 6
mb.showinfo('緊急お助けシステム', '挿管チューブは3.5mm、深さは' + str(de(W)) + 'cmです')
else:
In = lambda A: A / 4 + 4
de = lambda A: In(A) * 3
mb.showinfo('緊急お助けシステム', '挿管チューブは' + str(In(A)) + 'mm、深さは' + str(de(A)) + 'cmです')
else:
mb.showinfo('緊急お助けシステム', '終了します')

途中で挫折してたw

しかも乳児は0.1ヶ月とか入力しないとうまくいかない感じになっている。

 そしてわかりずらい、、

本格的に治す時間がなかったので下のコードだけchatGPTに修正してもらった。

import tkinter as tk
import tkinter.messagebox as mb
import tkinter.simpledialog as sd

# 質問ダイアログを表示し、Yes/No の回答を受け取る
ans = mb.askyesno("質問", "緊急お助けシステムを使いますか?")

if ans:
# 年齢と体重を入力するダイアログを表示し、受け取った値を変数に代入する
a = sd.askfloat('入力', '年齢を入力してください')
w = sd.askfloat('入力', '体重を入力してください')

# 年齢と体重を数値に変換する
a = float(a)
w = float(w)

if a < 0.1:
# 年齢が 0.1 未満の場合
# 挿管チューブの深さを計算し、結果をダイアログに表示する
de = lambda W: W + 6
tube_size = 3.5
tube_depth = de(w)
message = f'挿管チューブは{tube_size}mm、深さは{tube_depth}cmです'
mb.showinfo('緊急お助けシステム', message)
else:
# 年齢が 0.1 以上の場合
# 挿管チューブのサイズと深さを計算し、結果をダイアログに表示する
inner_diameter = lambda A: A / 4 + 4
tube_size = inner_diameter(a)
tube_depth = inner_diameter(a) * 3
message = f'挿管チューブは{tube_size}mm、深さは{tube_depth}cmです'
mb.showinfo('緊急お助けシステム', message)
else:
# No を選択した場合、プログラムを終了する
mb.showinfo('緊急お助けシステム', '終了します')

ちょっとわかりやすくなった。chatGPTさんありがとう。

 

もうちょっと修正したらWebアプリにして追加したいです。

 

 

 

参考文献:実践力を身につける Pythonの教科書

参考文献というか、僕が初めて買ったプログラミングの本。上のコードはこの本を読みながら作った。初心者にもわかりやすくてとても良い。