目录
一、适用场景
二、业务需求
三、Python 文件
(1)创建文件
(2)代码示例
四、csv 文件
一、适用场景
实战场景:
- 问卷全部为单选题
- 问卷问题全部为必填
- 问题之间无关联关系
- 每个问题的答案分数不同
- 根据问卷全部问题得分生成总分数
- 根据问卷总分数生成对应判断文案结果
- 生成 csv 文件表格需要设置固定表头
- 表格内容需要根据总分从小到大排列
二、业务需求
Morse 跌倒风险评估量表
1. 曾有跌倒记录 | □ 分 | 0 分:无 |
25 分:有 | ||
2. 多于一项医疗诊断 | □ 分 | 0 分:无 |
15 分:有 | ||
3. 步行辅助器 | □ 分 | 0 分:无/长期卧床/轮椅活动 |
15 分:步行辅助器具/步行需协助 | ||
30 分:依靠家具作支持 | ||
4. 药物注射 | □ 分 | 0 分:无 |
20 分:有 | ||
5. 步态 | □ 分 | 0 分:正常/长期卧床/轮椅 |
10 分:身体软弱 | ||
20 分:受损 | ||
备注: 长期卧床者 —— 不能自助活动,例如:四肢瘫痪、昏迷。 坐轮椅的长者如能自助由轮椅过椅或过床,“步态” 的评分便以他由轮椅过椅或过床的能力/步态来评定。 | ||
6. 精神状态 | □ 分 | 0 分:了解自我能力 |
15 分:自我评估过高或忽略自我能力限制 | ||
跌倒风险总分 | □ 分 | 上述 6 项得分之和 |
跌倒风险分级 | □ 级 | 0 低风险:总分 <25 分 1 中度风险:总分 25-45 分 2 高风险:总分 >45 分 |
跌倒风险分级标准
分级 | 分级名称 | 分级标准 |
0 | 低风险 | 总分<25分 |
1 | 中风险 | 总分25-45分 |
2 | 高风险 | 总分>45分 |
三、Python 文件
(1)创建文件
MorseFallRiskForm.py
(2)代码示例
以下代码的作用是生成一个跌倒风险评估量表的 csv 文件,其中包括了 6 个问题的评分标准、跌倒风险总分和风险分级标准。具体实现过程如下:
1. 导入所需的模块:os、csv、itertools 的 product 函数。
2. 定义 6 个问题的评分标准,分别为 Score_1 - Score_6。
3. 定义跌倒风险总分和风险分级标准。
4. 配置 csv 文件表格基本参数,包括文件路径和文件名称、表头。
5. 检查是否已存在该 csv 文件,如已存在则先删除。
6. 生成 csv 文件,表格内容未排序。通过 itertools 中的 product 函数生成所有问题的评分组合,根据跌倒风险总分分级标准,将评分组合分为低、中、高三个风险等级,并将结果写入csv 文件中。
7. 将已存在的 csv 文件进行调整,按表格第 2 列从小到大排序内容。首先读取 csv 文件中的所有行,然后使用 sorted 函数按照第 2 列的数值大小进行排序,最后将排序后的结果写回到csv 文件中。
import os
import csv
from itertools import product
# 跌倒⻛险评估量表
Score_1 = [0, 25]
Score_2 = [0, 15]
Score_3 = [0, 15, 30]
Score_4 = [0, 20]
Score_5 = [0, 10, 20]
Score_6 = [0, 15]
'''
[跌倒⻛险评估量表问卷问题及答案(得分)]
-- Score_1:第 1 题评分
-- Score_2:第 2 题评分
-- Score_3:第 3 题评分
-- Score_4:第 4 题评分
-- Score_5:第 5 题评分
-- Score_6:第 6 题评分
第 1 题:曾有跌倒记录()
a.无
b.有
-- 评分标准
a.0 分
b.25 分
第 2 题:多于一项医疗诊断()
a.无
b.有
-- 评分标准
a.0 分
b.15 分
第 3 题:步行辅助器()
a.无/长期卧床/轮椅活动
b.步行辅助器具/步行需协助
c.依靠家具作支持
-- 评分标准
a.0 分
b.15 分
c.30 分
第 4 题:药物注射()
a.无
b.有
-- 评分标准
a.0 分
b.20 分
第 5 题:步态()
a.正常/长期卧床/轮椅
b.身体软弱
c.受损
-- 评分标准
a.0 分
b.10 分
c.20 分
-- 备注
① 长期卧床者 —— 不能自助活动,例如:四肢瘫痪、昏迷。
② 坐轮椅的长者如能自助由轮椅过椅或过床,“步态” 的评分便以他由轮椅过椅或过床的能力/步态来评定。
第 6 题:精神状态()
a.了解自我能力
b.自我评估过高或忽略自我能力限制
-- 评分标准
a.0 分
b.15 分
'''
'''
[跌倒风险总分]
-- 评分标准:以上 6 个问题评分之和
'''
'''
[跌倒风险分级标准]
-- 等级标准:根据跌倒风险总分分级
0 低风险:总分 <25 分
1 中风险:总分 25 - 45 分
2 高风险:总分 >45 分
'''
# 配置文件:配置csv文件表格基本参数
# 文件路径和文件名称
filename = r'E:\ScoreGradeForm\CSVFiles\跌倒风险评估量表.csv'
# 表头
csvheader = ['跌倒风险分级', '跌倒风险总分', '问题 1 评分[曾有跌倒记录]', '问题 2 评分[多于一项医疗诊断]',
'问题 3 评分[步行辅助器]', '问题 4 评分[药物注射]', '问题 5 评分[步态]', '问题 6 评分[精神状态]']
# 删除文件:检查是否已存在该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):
if sum(scoreGroup) < 25:
grade = '低风险'
elif 25 <= sum(scoreGroup) <= 45:
grade = '中风险'
elif sum(scoreGroup) > 45:
grade = '高风险'
else:
grade = '其他等级'
writer.writerow([grade, sum(scoreGroup), scoreGroup[0], scoreGroup[1], scoreGroup[2], scoreGroup[3],
scoreGroup[4], scoreGroup[5]])
# 编辑文件:将已存在的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 评分[精神状态] |
低风险 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
低风险 | 10 | 0 | 0 | 0 | 0 | 10 | 0 |
低风险 | 15 | 0 | 0 | 0 | 0 | 0 | 15 |
低风险 | 15 | 0 | 0 | 15 | 0 | 0 | 0 |
低风险 | 15 | 0 | 15 | 0 | 0 | 0 | 0 |
低风险 | 20 | 0 | 0 | 0 | 0 | 20 | 0 |
低风险 | 20 | 0 | 0 | 0 | 20 | 0 | 0 |
中风险 | 25 | 0 | 0 | 0 | 0 | 10 | 15 |
中风险 | 25 | 0 | 0 | 15 | 0 | 10 | 0 |
中风险 | 25 | 0 | 15 | 0 | 0 | 10 | 0 |
中风险 | 25 | 25 | 0 | 0 | 0 | 0 | 0 |
中风险 | 30 | 0 | 0 | 0 | 20 | 10 | 0 |
中风险 | 30 | 0 | 0 | 15 | 0 | 0 | 15 |
中风险 | 30 | 0 | 0 | 30 | 0 | 0 | 0 |
中风险 | 30 | 0 | 15 | 0 | 0 | 0 | 15 |
中风险 | 30 | 0 | 15 | 15 | 0 | 0 | 0 |
中风险 | 35 | 0 | 0 | 0 | 0 | 20 | 15 |
中风险 | 35 | 0 | 0 | 0 | 20 | 0 | 15 |
中风险 | 35 | 0 | 0 | 15 | 0 | 20 | 0 |
中风险 | 35 | 0 | 0 | 15 | 20 | 0 | 0 |
中风险 | 35 | 0 | 15 | 0 | 0 | 20 | 0 |
中风险 | 35 | 0 | 15 | 0 | 20 | 0 | 0 |
中风险 | 35 | 25 | 0 | 0 | 0 | 10 | 0 |
中风险 | 40 | 0 | 0 | 0 | 20 | 20 | 0 |
中风险 | 40 | 0 | 0 | 15 | 0 | 10 | 15 |
中风险 | 40 | 0 | 0 | 30 | 0 | 10 | 0 |
中风险 | 40 | 0 | 15 | 0 | 0 | 10 | 15 |
中风险 | 40 | 0 | 15 | 15 | 0 | 10 | 0 |
中风险 | 40 | 25 | 0 | 0 | 0 | 0 | 15 |
中风险 | 40 | 25 | 0 | 15 | 0 | 0 | 0 |
中风险 | 40 | 25 | 15 | 0 | 0 | 0 | 0 |
中风险 | 45 | 0 | 0 | 0 | 20 | 10 | 15 |
中风险 | 45 | 0 | 0 | 15 | 20 | 10 | 0 |
中风险 | 45 | 0 | 0 | 30 | 0 | 0 | 15 |
中风险 | 45 | 0 | 15 | 0 | 20 | 10 | 0 |
中风险 | 45 | 0 | 15 | 15 | 0 | 0 | 15 |
中风险 | 45 | 0 | 15 | 30 | 0 | 0 | 0 |
中风险 | 45 | 25 | 0 | 0 | 0 | 20 | 0 |
中风险 | 45 | 25 | 0 | 0 | 20 | 0 | 0 |
高风险 | 50 | 0 | 0 | 15 | 0 | 20 | 15 |
高风险 | 50 | 0 | 0 | 15 | 20 | 0 | 15 |
高风险 | 50 | 0 | 0 | 30 | 0 | 20 | 0 |
高风险 | 50 | 0 | 0 | 30 | 20 | 0 | 0 |
高风险 | 50 | 0 | 15 | 0 | 0 | 20 | 15 |
高风险 | 50 | 0 | 15 | 0 | 20 | 0 | 15 |
高风险 | 50 | 0 | 15 | 15 | 0 | 20 | 0 |
高风险 | 50 | 0 | 15 | 15 | 20 | 0 | 0 |
高风险 | 50 | 25 | 0 | 0 | 0 | 10 | 15 |
高风险 | 50 | 25 | 0 | 15 | 0 | 10 | 0 |
高风险 | 50 | 25 | 15 | 0 | 0 | 10 | 0 |
高风险 | 55 | 0 | 0 | 0 | 20 | 20 | 15 |
高风险 | 55 | 0 | 0 | 15 | 20 | 20 | 0 |
高风险 | 55 | 0 | 0 | 30 | 0 | 10 | 15 |
高风险 | 55 | 0 | 15 | 0 | 20 | 20 | 0 |
高风险 | 55 | 0 | 15 | 15 | 0 | 10 | 15 |
高风险 | 55 | 0 | 15 | 30 | 0 | 10 | 0 |
高风险 | 55 | 25 | 0 | 0 | 20 | 10 | 0 |
高风险 | 55 | 25 | 0 | 15 | 0 | 0 | 15 |
高风险 | 55 | 25 | 0 | 30 | 0 | 0 | 0 |
高风险 | 55 | 25 | 15 | 0 | 0 | 0 | 15 |
高风险 | 55 | 25 | 15 | 15 | 0 | 0 | 0 |
高风险 | 60 | 0 | 0 | 15 | 20 | 10 | 15 |
高风险 | 60 | 0 | 0 | 30 | 20 | 10 | 0 |
高风险 | 60 | 0 | 15 | 0 | 20 | 10 | 15 |
高风险 | 60 | 0 | 15 | 15 | 20 | 10 | 0 |
高风险 | 60 | 0 | 15 | 30 | 0 | 0 | 15 |
高风险 | 60 | 25 | 0 | 0 | 0 | 20 | 15 |
高风险 | 60 | 25 | 0 | 0 | 20 | 0 | 15 |
高风险 | 60 | 25 | 0 | 15 | 0 | 20 | 0 |
高风险 | 60 | 25 | 0 | 15 | 20 | 0 | 0 |
高风险 | 60 | 25 | 15 | 0 | 0 | 20 | 0 |
高风险 | 60 | 25 | 15 | 0 | 20 | 0 | 0 |
高风险 | 65 | 0 | 0 | 30 | 0 | 20 | 15 |
高风险 | 65 | 0 | 0 | 30 | 20 | 0 | 15 |
高风险 | 65 | 0 | 15 | 15 | 0 | 20 | 15 |
高风险 | 65 | 0 | 15 | 15 | 20 | 0 | 15 |
高风险 | 65 | 0 | 15 | 30 | 0 | 20 | 0 |
高风险 | 65 | 0 | 15 | 30 | 20 | 0 | 0 |
高风险 | 65 | 25 | 0 | 0 | 20 | 20 | 0 |
高风险 | 65 | 25 | 0 | 15 | 0 | 10 | 15 |
高风险 | 65 | 25 | 0 | 30 | 0 | 10 | 0 |
高风险 | 65 | 25 | 15 | 0 | 0 | 10 | 15 |
高风险 | 65 | 25 | 15 | 15 | 0 | 10 | 0 |
高风险 | 70 | 0 | 0 | 15 | 20 | 20 | 15 |
高风险 | 70 | 0 | 0 | 30 | 20 | 20 | 0 |
高风险 | 70 | 0 | 15 | 0 | 20 | 20 | 15 |
高风险 | 70 | 0 | 15 | 15 | 20 | 20 | 0 |
高风险 | 70 | 0 | 15 | 30 | 0 | 10 | 15 |
高风险 | 70 | 25 | 0 | 0 | 20 | 10 | 15 |
高风险 | 70 | 25 | 0 | 15 | 20 | 10 | 0 |
高风险 | 70 | 25 | 0 | 30 | 0 | 0 | 15 |
高风险 | 70 | 25 | 15 | 0 | 20 | 10 | 0 |
高风险 | 70 | 25 | 15 | 15 | 0 | 0 | 15 |
高风险 | 70 | 25 | 15 | 30 | 0 | 0 | 0 |
高风险 | 75 | 0 | 0 | 30 | 20 | 10 | 15 |
高风险 | 75 | 0 | 15 | 15 | 20 | 10 | 15 |
高风险 | 75 | 0 | 15 | 30 | 20 | 10 | 0 |
高风险 | 75 | 25 | 0 | 15 | 0 | 20 | 15 |
高风险 | 75 | 25 | 0 | 15 | 20 | 0 | 15 |
高风险 | 75 | 25 | 0 | 30 | 0 | 20 | 0 |
高风险 | 75 | 25 | 0 | 30 | 20 | 0 | 0 |
高风险 | 75 | 25 | 15 | 0 | 0 | 20 | 15 |
高风险 | 75 | 25 | 15 | 0 | 20 | 0 | 15 |
高风险 | 75 | 25 | 15 | 15 | 0 | 20 | 0 |
高风险 | 75 | 25 | 15 | 15 | 20 | 0 | 0 |
高风险 | 80 | 0 | 15 | 30 | 0 | 20 | 15 |
高风险 | 80 | 0 | 15 | 30 | 20 | 0 | 15 |
高风险 | 80 | 25 | 0 | 0 | 20 | 20 | 15 |
高风险 | 80 | 25 | 0 | 15 | 20 | 20 | 0 |
高风险 | 80 | 25 | 0 | 30 | 0 | 10 | 15 |
高风险 | 80 | 25 | 15 | 0 | 20 | 20 | 0 |
高风险 | 80 | 25 | 15 | 15 | 0 | 10 | 15 |
高风险 | 80 | 25 | 15 | 30 | 0 | 10 | 0 |
高风险 | 85 | 0 | 0 | 30 | 20 | 20 | 15 |
高风险 | 85 | 0 | 15 | 15 | 20 | 20 | 15 |
高风险 | 85 | 0 | 15 | 30 | 20 | 20 | 0 |
高风险 | 85 | 25 | 0 | 15 | 20 | 10 | 15 |
高风险 | 85 | 25 | 0 | 30 | 20 | 10 | 0 |
高风险 | 85 | 25 | 15 | 0 | 20 | 10 | 15 |
高风险 | 85 | 25 | 15 | 15 | 20 | 10 | 0 |
高风险 | 85 | 25 | 15 | 30 | 0 | 0 | 15 |
高风险 | 90 | 0 | 15 | 30 | 20 | 10 | 15 |
高风险 | 90 | 25 | 0 | 30 | 0 | 20 | 15 |
高风险 | 90 | 25 | 0 | 30 | 20 | 0 | 15 |
高风险 | 90 | 25 | 15 | 15 | 0 | 20 | 15 |
高风险 | 90 | 25 | 15 | 15 | 20 | 0 | 15 |
高风险 | 90 | 25 | 15 | 30 | 0 | 20 | 0 |
高风险 | 90 | 25 | 15 | 30 | 20 | 0 | 0 |
高风险 | 95 | 25 | 0 | 15 | 20 | 20 | 15 |
高风险 | 95 | 25 | 0 | 30 | 20 | 20 | 0 |
高风险 | 95 | 25 | 15 | 0 | 20 | 20 | 15 |
高风险 | 95 | 25 | 15 | 15 | 20 | 20 | 0 |
高风险 | 95 | 25 | 15 | 30 | 0 | 10 | 15 |
高风险 | 100 | 0 | 15 | 30 | 20 | 20 | 15 |
高风险 | 100 | 25 | 0 | 30 | 20 | 10 | 15 |
高风险 | 100 | 25 | 15 | 15 | 20 | 10 | 15 |
高风险 | 100 | 25 | 15 | 30 | 20 | 10 | 0 |
高风险 | 105 | 25 | 15 | 30 | 0 | 20 | 15 |
高风险 | 105 | 25 | 15 | 30 | 20 | 0 | 15 |
高风险 | 110 | 25 | 0 | 30 | 20 | 20 | 15 |
高风险 | 110 | 25 | 15 | 15 | 20 | 20 | 15 |
高风险 | 110 | 25 | 15 | 30 | 20 | 20 | 0 |
高风险 | 115 | 25 | 15 | 30 | 20 | 10 | 15 |
高风险 | 125 | 25 | 15 | 30 | 20 | 20 | 15 |