動脈血液ガス#
def arterialBloodGasAnalysis(pH:float, PaCO2:float, SB:float, AB:float, PaO2:float, age:int):
'''
pH:酸塩基度、正常値 7.35~7.45
PaCO2:動脈血二酸化炭素圧、正常値 35~45 mmHg
HCO3-:SB 標準炭酸水素塩、AB 実際の炭酸水素塩、正常値 SB = AB 22~27 mmol/L
PaO2:動脈血酸素圧、正常値 100 - 0.33 * 年齢 ± 5 mmHg
age: 年齢
'''
result = ''
# 低酸素血症
goal_PaO2 = 100 - 0.33 * age - 5
if PaO2 > goal_PaO2:
pass
elif PaO2 <= 40:
result += '重度低酸素血症;'
elif PaO2 <= 60:
result += '中度低酸素血症;'
elif PaO2 <= 95:
result += '軽度低酸素血症;'
if PaO2 < 60:
if PaCO2 <= 45:
result += 'I型呼吸不全;'
elif PaCO2 > 50:
result += 'II型呼吸不全;'
else:
result += '呼吸不全;'
# 酸塩基平衡
goal_pH = 7.4 + (40 - PaCO2) / 10 * 0.08
if pH > 7.45:
if PaCO2 > 40:
result += '代謝性アルカローシス;' # SB > 24
else:
if goal_pH + 0.02 < pH:
result += '呼吸性アルカローシスと代謝性アルカローシスの併発;' # 発熱 + 嘔吐
elif goal_pH - 0.02 <= pH:
result += '単純呼吸性アルカローシス;'
else:
result += '呼吸性アルカローシスと代謝性アシドーシスの併発;' # 発熱 + 下痢
elif pH < 7.35:
if PaCO2 < 40:
result += '代謝性アシドーシス;' # SB < 24
else:
if goal_pH + 0.02 < pH:
result += '呼吸性アシドーシスと代謝性アルカローシスの併発;' # 肺心病 + 利尿
elif goal_pH - 0.02 <= pH:
result += '単純呼吸性アシドーシス;'
else:
result += '呼吸性アシドーシスと代謝性アシドーシスの併発;' # COPD + ショック
else:
if SB > 27:
if PaCO2 - 40 > 0.7 * (AB - 24) + 5:
result += '代謝性アルカローシスと呼吸性アシドーシスの併発;'
else:
result += '代償性代謝性アルカローシス;'
elif SB < 22:
if 40 - PaCO2 < 1.2 * (24 - AB) + 2:
result += '代謝性アシドーシスと呼吸性アルカローシスの併発;'
else:
result += '代償性代謝性アシドーシス;'
else:
if (22 < AB < 27) and (35 < PaCO2 < 45):
result += '代謝性アルカローシスと代謝性アシドーシスまたは正常;' # 尿毒症 + 嘔吐
return result if result else '結果正常'
肺機能#
def pulmonaryFunctionTest(FEV1_R_VC:float, FEV1_R_VC_R:float, FEV1_R:float,
FEF25_R:float, FEF50_R:float, FEF75_R:float,
FVC_R:float,
DLNO_SB_R:float,
FEV1_CHG:float, FEV1_CHG_R:float):
'''
FEV1_R_VC:FEV1/VC パーセンテージ
FEV1_R_VC_R:FEV1/VC % Pred パーセンテージ:
FEV1_R:第一秒力性呼気量 FEV1 % Pred パーセンテージ
FEF25_R:FEF25 % Pred パーセンテージ
FEF50_R:FEF50 % Pred パーセンテージ
FEF75_R:FEF75 % Pred パーセンテージ
FVC_R:力性肺活量 FVC % Pred パーセンテージ
DLNOc_SB_R:校正後の一気呼気法DLNO % Pred パーセンテージ
FEV1_CHG:気管支拡張実験 FEV1 増加値 L
FEV1_CHG_R:FEV1_CHG % Pred パーセンテージ
'''
if FEV1_R >= 80:
通気分度 = '正常'
elif FEV1_R >= 70:
通気分度 = '軽度'
elif FEV1_R >= 60:
通気分度 = '中度'
elif FEV1_R >= 50:
通気分度 = '中重度'
elif FEV1_R >= 35:
通気分度 = '重度'
else:
通気分度 = '極重度'
阻害性通気機能障害 = (FEV1_R_VC < 70) or (FEV1_R_VC_R < 92)
if not 阻害性通気機能障害:
小気道機能障害 = ((FEF25_R < 65) + (FEF50_R < 65) + (FEF75_R < 65)) >= 2
else:
小気道機能障害 = 0 # 無意味
制限性通気機能障害 = FVC_R < 80
拡散機能障害 = DLNO_SB_R < 80
if 拡散機能障害:
if DLNO_SB_R >= 60:
拡散分度 = '軽度'
elif DLNO_SB_R >= 40:
拡散分度 = '中度'
else:
拡散分度 = '重度'
if (FEV1_CHG_R >= 12) and (FEV1_CHG >= 0.2):
気管支拡張実験 = '陽性'
elif (FEV1_CHG_R >= 12) or (FEV1_CHG >= 0.2):
気管支拡張実験 = '可疑陽性'
else:
気管支拡張実験 = '陰性'
result = 通気分度
if 阻害性通気機能障害 and 制限性通気機能障害:
result += '混合性通気機能障害'
elif 阻害性通気機能障害:
result += '阻害性通気機能障害'
elif 制限性通気機能障害:
result += '制限性通気機能障害'
else:
result = ''
if (小気道機能障害 or 拡散機能障害) and result:
result += '伴う'
if 小気道機能障害 and 拡散機能障害:
result += f'小気道機能障害、{拡散分度}拡散機能障害'
elif 小気道機能障害:
result += '小気道機能障害'
elif 拡散機能障害:
result += f'{拡散分度}拡散機能障害'
if not result:
result = "肺通気、拡散機能正常"
return result + f';気管支拡張実験{気管支拡張実験}'