目录
一、适用场景
二、业务需求
三、Python 文件
(1)创建文件
(2)代码示例
四、csv 文件
一、适用场景
实战场景:
- 问卷全部为单选题
- 问卷问题全部为必填
- 问题之间无关联关系
- 每个问题的答案分数不同
- 根据问卷全部问题得分生成总分数
- 根据问卷总分数生成对应判断文案结果
- 生成 csv 文件表格需要设置固定表头
- 表格内容需要根据总分从小到大排列
二、业务需求
日常生活活动评估表
1. 进食 | □ 分 | 10 分,可独立进食:(1)可以正常使用餐具,独立完成进食过程;(2)留置胃管或造瘘管者,可以自行注食 |
5 分,需部分帮助:能使用餐具,可以完成将食物送入口中的动作,但是动作缓慢欠协调。 | ||
0 分,需极大帮助或完全,或有留置营养管:(1)不能使用餐具完成将食物送入口中的动作。(2)留置胃管或造瘘管者,不能自行注食。 | ||
2. 洗澡 | □ 分 | 5 分,独立完成:可以独立完成清洁、冲洗、以及擦干由颈到脚的所有动作 |
0 分,需要帮助:无法独立完成清洁、冲洗、以及擦干由颈到脚的所有动作 | ||
3. 个人卫生 | □ 分 | 5 分,可独立完成:可以独立完成洗脸、洗手、梳头、刷牙/漱口(包括清洁假牙)、剃须(仅限于男士)的全部动作 |
0 分,需他人帮助:无法完成洗脸、洗手、梳头、刷牙/漱口(包括清洁假牙)、剃须(仅限于男士)的部分或全部动作 | ||
4. 穿衣 | □ 分 | 10 分,独立完成:独立完成穿脱衣物的全部动作 |
5 分,需部分帮助:能够完成穿脱衣物的大部分动作,需要他人协助 | ||
0 分,依赖他人:无法完成穿脱衣物的大部分或全部动作 | ||
5. 大便控制 | □ 分 | 10 分,完全控制:可以自行控制肛门括约肌 |
5 分,偶尔失控:大部分时间可以控制肛门括约肌,偶尔发生大便失禁 | ||
0 分,完全失控:不能控制肛门括约肌 | ||
6. 小便控制 | □ 分 | 10 分,完全控制:可以自行控制膀胱和尿道括约肌 |
5 分,偶尔失控或部分失控:大部分时间可以控制,偶尔发生小便失禁。 | ||
0 分,完全失控或留置导尿管:不能控制膀胱和尿道括约肌 | ||
7. 如厕 | □ 分 | 10 分,可独立完成:独立完成用厕或床上使用便器/更换纸尿片/尿套的全部动作。 |
5 分,需部分帮助:(1)坐厕/坐便器:可以完成坐厕/坐便器上的大部分动作;(2)床上使用便器/纸尿片或尿套:可以完成床上使用便器或更换纸尿片/尿套的大部分动作。 | ||
0 分,需极大帮助或完全依赖他人:不能独立完成安全用厕的全部动作 | ||
8. 床-椅转移 | □ 分 | 15 分,可独立完成:可以自行完成床与轮椅/椅子之间双向转移的全部动作 |
10 分,需部分帮助:可以自行从床上坐起,可以依靠自身的力量完成床与轮椅/椅子之间双向转移的动作,但是需要他人协助 | ||
5 分,需极大帮助:可以自行从床上坐起,但自身无足够的力量完成床与轮椅/椅子之间双向转移的动作。 | ||
0 分,完全依赖他人:不能自行从床上坐起 | ||
9. 平地行走/使用轮椅 | □ 分 | 15 分,平地行走独立完成:可独立在平地上行走45m |
10 分,平地行走需要帮助:(1)可以独立行走一小段距离,但是不能完成45米。(2)在他人搀扶下可以依靠自己的力量行走。 | ||
5 分,轮椅使用独立完成:不能行走,但是可以操作轮椅达到45米 | ||
0 分,轮椅使用需要帮助:不能行走且不能操作轮椅 | ||
10. 上下楼梯 | □ 分 | 10 分,独立完成:独立或借助楼梯扶手(或其他辅助工具)上下一层楼梯 |
5 分,需部分帮助:在他人的帮助下,或扶着楼梯、使用拐杖等,至少上下一层楼梯 | ||
0 分,依赖他人:在他人的帮助下仍然无法完成上下楼梯的过程 | ||
日常生活活动总分 | □ 分 | 上述 10 个项目得分之和 |
日常生活活动分级 | □ 级 | 0 能力完好:总分 100 分 1 轻度受损:总分 65-95 分 2 中度受损:总分 45-60 分 3 重度受损:总分 ≤40 分 |
日常生活活动分级标准
分级 | 分级名称 | 分级标准 |
0 | 能力完好 | Barthel 指数总分为 100 分 |
1 | 轻度受损 | Barthel 指数总分为 65~95 分 |
2 | 中度受损 | Barthel 指数总分为 45~60 分 |
3 | 重度受损 | Barthel 指数总分为 ≤40 分 |
三、Python 文件
(1)创建文件
RegularActivitiesForm.py
(2)代码示例
以下代码是用来生成⽇常⽣活活动评估表的所有可能性分数组合,并且根据分数组合来判断风险等级。
- 导入必要的模块:os、csv、product(笛卡尔积生成器),用于生成多个序列的笛卡尔积。
- 定义 10 个列表,分别存储 10 个问题的评分选项。
- 对 10 个问题的评分选项进行详细描述,以及每个选项对应的评分标准。
- 配置 CSV 文件的基本参数:文件路径和文件名、表头。
- 检查是否已存在该 CSV 文件,如已存在则先删除。
- 接下来,使用 for 循环遍历所有可能的分数组合,计算分数总和,并根据总分来判断风险等级。
- 生成 CSV 文件,表格内容未排序。根据 10 个问题的评分选项,生成笛卡尔积,并计算出总分和风险等级,将结果写入CSV文件。其中,使用了 with open 语句来打开文件,并使用 newline='' '' 参数来避免写入 csv 文件时出现空行的问题。
- 编辑已存在的 CSV 文件,按表格第 2 列从小到大排序内容。
- 最后,关闭文件。
import os
import csv
from itertools import product
# ⽇常⽣活活动评估表
Score_1 = [10, 5, 0]
Score_2 = [5, 0]
Score_3 = [5, 0]
Score_4 = [10, 5, 0]
Score_5 = [10, 5, 0]
Score_6 = [10, 5, 0]
Score_7 = [10, 5, 0]
Score_8 = [15, 10, 5, 0]
Score_9 = [15, 10, 5, 0]
Score_10 = [10, 5, 0]
'''
[日常生活活动评估表问卷问题及答案(得分)]
-- Score_1:第 1 题评分
-- Score_2:第 2 题评分
-- Score_3:第 3 题评分
-- Score_4:第 4 题评分
-- Score_5:第 5 题评分
-- Score_6:第 6 题评分
-- Score_7:第 7 题评分
-- Score_8:第 8 题评分
-- Score_9:第 9 题评分
-- Score_10:第 10 题评分
第 1 题:进食()
a.可独立进食:(1)可以正常使用餐具,独立完成进食过程;(2)留置胃管或造瘘管者,可以自行注食
b.需部分帮助:能使用餐具,可以完成将食物送入口中的动作,但是动作缓慢欠协调
c.需极大帮助或完全,或有留置营养管:(1)不能使用餐具完成将食物送入口中的动作;(2)留置胃管或造瘘管者,不能自行注食
-- 评分标准
a.10 分
b.5 分
c.0 分
第 2 题:洗澡()
a.独立完成:可以独立完成清洁、冲洗、以及擦干由颈到脚的所有动作
b.需要帮助:无法独立完成清洁、冲洗、以及擦干由颈到脚的所有动作
-- 评分标准
a.5 分
b.0 分
第 3 题:个人卫生()
a.可独立完成:可以独立完成洗脸、洗手、梳头、刷牙/漱口(包括清洁假牙)、剃须(仅限于男士)的全部动作
b.需他人帮助:无法完成洗脸、洗手、梳头、刷牙/漱口(包括清洁假牙)、剃须(仅限于男士)的部分或全部动作
-- 评分标准
a.5 分
b.0 分
第 4 题:穿衣()
a.独立完成:独立完成穿脱衣物的全部动作
b.需部分帮助:能够完成穿脱衣物的大部分动作,需要他人协助
c.依赖他人:无法完成穿脱衣物的大部分或全部动作
-- 评分标准
a.10 分
b.5 分
c.0 分
第 5 题:大便控制()
a.完全控制:可以自行控制肛门括约肌
b.偶尔失控:大部分时间可以控制肛门括约肌,偶尔发生大便失禁
c.完全失控:不能控制肛门括约肌
-- 评分标准
a.10 分
b.5 分
c.0 分
第 6 题:小便控制()
a.完全控制:可以自行控制膀胱和尿道括约肌
b.偶尔失控或部分失控:大部分时间可以控制,偶尔发生小便失禁
c.完全失控或留置导尿管:不能控制膀胱和尿道括约肌
-- 评分标准
a.10 分
b.5 分
c.0 分
第 7 题:如厕()
a.可独立完成:独立完成用厕或床上使用便器/更换纸尿片/尿套的全部动作
b.需部分帮助:(1)坐厕/坐便器:可以完成坐厕/坐便器上的大部分动作;(2)床上使用便器/纸尿片或尿套:可以完成床上使用便器或更换纸尿片/尿套的大部分动作
c.需极大帮助或完全依赖他人:不能独立完成安全用厕的全部动作
-- 评分标准
a.10 分
b.5 分
c.0 分
第 8 题:床-椅转移()
a.可独立完成:可以自行完成床与轮椅/椅子之间双向转移的全部动作
b.需部分帮助:可以自行从床上坐起,可以依靠自身的力量完成床与轮椅/椅子之间双向转移的动作,但是需要他人协助
c.需极大帮助:可以自行从床上坐起,但自身无足够的力量完成床与轮椅/椅子之间双向转移的动作
d.完全依赖他人:不能自行从床上坐起
-- 评分标准
a.15 分
b.10 分
c.5 分
d.0 分
第 9 题:平地行走/使用轮椅()
a.平地行走独立完成:可独立在平地上行走45m
b.平地行走需要帮助:(1)可以独立行走一小段距离,但是不能完成45米;(2)在他人搀扶下可以依靠自己的力量行走
c.轮椅使用独立完成:不能行走,但是可以操作轮椅达到45米
d.轮椅使用需要帮助:不能行走且不能操作轮椅
-- 评分标准
a.15 分
b.10 分
c.5 分
d.0 分
第 10 题:上下楼梯()
a.独立完成:独立或借助楼梯扶手(或其他辅助工具)上下一层楼梯
b.需部分帮助:在他人的帮助下,或扶着楼梯、使用拐杖等,至少上下一层楼梯
c.依赖他人:在他人的帮助下仍然无法完成上下楼梯的过程
-- 评分标准
a.10 分
b.5 分
c.0 分
'''
'''
[日常生活活动总分]
-- 评分标准:以上 10 个问题评分之和
'''
'''
[日常生活活动分级标准]
-- 等级标准:根据日常生活活动总分分级
0 能力完好:总分 100 分
1 轻度受损:总分 65 - 95 分
2 中度受损:总分 45 - 60 分
3 重度受损:总分 ≤ 40 分
'''
# 配置文件:配置csv文件表格基本参数
# 文件路径和文件名称
filename = r'E:\ScoreGradeForm\CSVFiles\日常生活活动评估表.csv'
# 表头
csvheader = ['日常生活活动分级', '日常生活活动总分', '问题 1 评分[进食]', '问题 2 评分[洗澡]', '问题 3 评分[个人卫生]',
'问题 4 评分[穿衣]', '问题 5 评分[大便控制]', '问题 6 评分[小便控制]', '问题 7 评分[如厕]', '问题 8 评分[床-椅转移]',
'问题 9 评分[平地行走/使用轮椅]', '问题 10 评分[个人卫生]']
# 删除文件:检查是否已存在该csv文件,如已存在则先删除
if os.path.exists(filename):
os.remove(filename)
# 新建文件:生成csv文件,表格内容未排序
with open(filename, 'a+', encoding='utf-8-sig', newline='') as csvfile_0:
# 生成表头
header = csvheader
writer = csv.writer(csvfile_0)
writer.writerow(header)
# 生成表格内容
for scoreGroup in product(Score_1, Score_2, Score_3, Score_4, Score_5, Score_6, Score_7, Score_8, Score_9, Score_10):
if sum(scoreGroup) == 100:
grade = '能力完好'
elif 65 <= sum(scoreGroup) <= 95:
grade = '轻度受损'
elif 45 <= sum(scoreGroup) <= 60:
grade = '中度受损'
elif sum(scoreGroup) <= 40:
grade = '重度受损'
else:
grade = '其他等级'
writer.writerow([grade, sum(scoreGroup), scoreGroup[0], scoreGroup[1], scoreGroup[2], scoreGroup[3],
scoreGroup[4], scoreGroup[5], scoreGroup[6], scoreGroup[7], scoreGroup[8], scoreGroup[9]])
# 编辑文件:将已存在的csv文件进行调整,按表格第2列从小到大排序内容
with open(filename, 'r', encoding='utf-8-sig') as csvfile_1:
rows = list(csv.reader(csvfile_1))
rows[1:] = sorted(rows[1:], key=lambda x: int(x[1]))
with open(filename, 'w', encoding='utf-8-sig', newline='') as csvfile_2:
writer = csv.writer(csvfile_2)
writer.writerows(rows)
四、csv 文件
生成如下结果表格:
示例表格结果如下,因篇幅限制展示不全,完整表格请用代码生成:
日常生活活动分级 | 日常生活活动总分 | 问题 1 评分[进食] | 问题 2 评分[洗澡] | 问题 3 评分[个人卫生] | 问题 4 评分[穿衣] | 问题 5 评分[大便控制] | 问题 6 评分[小便控制] | 问题 7 评分[如厕] | 问题 8 评分[床-椅转移] | 问题 9 评分[平地行走/使用轮椅] | 问题 10 评分[个人卫生] |
重度受损 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 |
重度受损 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
重度受损 | 10 | 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 |
重度受损 | 10 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
重度受损 | 10 | 0 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 |
重度受损 | 10 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
重度受损 | 10 | 0 | 0 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 0 | 5 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 5 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 |
重度受损 | 10 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
重度受损 | 10 | 0 | 0 | 0 | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 0 | 5 | 5 | 0 | 0 | 0 | 0 | 0 |
重度受损 | 10 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 |