Limour

Limour

临床医学在读。

【呼吸】動脈血氣&肺功能報告簡單判讀

動脈血氣#

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 * age ± 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';支氣管舒張實驗{支氣管舒張實驗}'
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。