news 2026/5/1 10:25:59

录入个人疫苗接种记录,自动标注疫苗种类,接种时间,提醒后续加强针接种时间,适配老人,小孩疫苗管理。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
录入个人疫苗接种记录,自动标注疫苗种类,接种时间,提醒后续加强针接种时间,适配老人,小孩疫苗管理。

设计一个 基于 Python 的个人疫苗接种记录管理与提醒系统,满足你的要求,并特别考虑老人和小孩的疫苗管理需求。

1. 实际应用场景描述

场景:

家庭中有老人、小孩和成人,需要管理多种疫苗的接种记录,包括:

- 新冠疫苗(多针次,有加强针)

- 儿童免疫规划疫苗(如百白破、麻腮风等)

- 流感疫苗(每年接种)

- 老人肺炎疫苗、带状疱疹疫苗等

痛点:

- 疫苗种类多,容易混淆

- 接种时间记录分散,容易遗忘

- 加强针时间需要精确计算

- 老人和小孩的疫苗计划不同,管理复杂

- 错过接种时间可能影响健康

解决方案:

开发一个 疫苗接种记录与提醒工具,支持:

- 录入接种记录(疫苗种类、接种时间、剂次)

- 自动识别疫苗类型

- 计算并提醒后续接种时间

- 按人群(老人/小孩/成人)分类管理

- 生成接种计划表

2. 核心逻辑讲解

1. 数据录入

- 姓名、年龄、关系(老人/小孩/成人)

- 疫苗名称、接种日期、剂次

2. 疫苗种类自动识别

- 通过关键词匹配(如“新冠”、“百白破”、“流感”)

3. 接种计划计算

- 根据疫苗类型和剂次,计算下一针时间

- 加强针根据上次接种时间 + 间隔天数

4. 提醒功能

- 列出近期需要接种的疫苗

5. 分类管理

- 按人群分组显示记录

6. 数据存储

- SQLite 本地数据库

7. 输出计划

- 打印接种计划表

3. 代码模块化实现

目录结构

vaccine_manager/

├── main.py

├── database.py

├── vaccine_classifier.py

├── reminder.py

└── README.md

"database.py" - 数据库操作

import sqlite3

from datetime import datetime

DB_NAME = "vaccine_records.db"

def init_db():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS records

(id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT,

age INTEGER,

relation TEXT, -- 老人/小孩/成人

vaccine_name TEXT,

dose_number INTEGER,

date TEXT)''')

conn.commit()

conn.close()

def add_record(name, age, relation, vaccine_name, dose_number, date):

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute("INSERT INTO records (name, age, relation, vaccine_name, dose_number, date) VALUES (?, ?, ?, ?, ?, ?)",

(name, age, relation, vaccine_name, dose_number, date))

conn.commit()

conn.close()

def get_all_records():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute("SELECT * FROM records")

rows = c.fetchall()

conn.close()

return rows

"vaccine_classifier.py" - 疫苗分类与计划计算

from datetime import datetime, timedelta

VACCINE_RULES = {

"新冠疫苗": {"interval_days": 180, "max_dose": 3},

"百白破": {"interval_days": 60, "max_dose": 4},

"麻腮风": {"interval_days": 90, "max_dose": 2},

"流感": {"interval_days": 365, "max_dose": 1},

"肺炎": {"interval_days": 365*5, "max_dose": 1},

"带状疱疹": {"interval_days": 365*10, "max_dose": 1}

}

def classify_vaccine(name):

for key in VACCINE_RULES:

if key in name:

return key

return "其他"

def next_due_date(last_date_str, vaccine_type, current_dose):

rules = VACCINE_RULES.get(vaccine_type, {"interval_days": 365, "max_dose": 1})

if current_dose >= rules["max_dose"]:

return None

last_date = datetime.strptime(last_date_str, "%Y-%m-%d")

return (last_date + timedelta(days=rules["interval_days"])).strftime("%Y-%m-%d")

"reminder.py" - 提醒功能

from datetime import datetime

def check_upcoming_vaccines(records):

today = datetime.today()

upcoming = []

for r in records:

vaccine_type = classify_vaccine(r[4])

next_date = next_due_date(r[6], vaccine_type, r[5])

if next_date:

next_dt = datetime.strptime(next_date, "%Y-%m-%d")

if 0 <= (next_dt - today).days <= 30:

upcoming.append({

"name": r[1],

"relation": r[3],

"vaccine": r[4],

"next_date": next_date

})

return upcoming

"main.py" - 主程序

from database import init_db, add_record, get_all_records

from vaccine_classifier import classify_vaccine, next_due_date

from reminder import check_upcoming_vaccines

def main():

init_db()

while True:

print("\n1. 添加接种记录\n2. 查看所有记录\n3. 查看近期需接种\n4. 退出")

choice = input("选择操作: ")

if choice == "1":

name = input("姓名: ")

age = int(input("年龄: "))

relation = input("关系(老人/小孩/成人): ")

vaccine = input("疫苗名称: ")

dose = int(input("剂次: "))

date = input("接种日期(YYYY-MM-DD): ")

add_record(name, age, relation, vaccine, dose, date)

print("记录已添加")

elif choice == "2":

records = get_all_records()

for r in records:

print(f"{r[1]}({r[3]}) - {r[4]} 第{r[5]}针 {r[6]}")

elif choice == "3":

records = get_all_records()

upcoming = check_upcoming_vaccines(records)

if not upcoming:

print("近期无需接种")

else:

print("近期需接种:")

for u in upcoming:

print(f"{u['name']}({u['relation']}) - {u['vaccine']} 预计 {u['next_date']}")

elif choice == "4":

break

else:

print("无效选择")

if __name__ == "__main__":

main()

4. README.md

# 疫苗接种记录与提醒系统 Vaccine Manager

一个基于 Python 的工具,录入个人疫苗接种记录,自动标注疫苗种类,计算并提醒后续接种时间,适配老人、小孩和成人。

## 功能

- 录入接种记录

- 自动识别疫苗类型

- 计算下一针时间

- 提醒近期需接种的疫苗

- 按人群分类管理

## 使用方法

bash

python main.py

## 数据表结构

- name: 姓名

- age: 年龄

- relation: 关系(老人/小孩/成人)

- vaccine_name: 疫苗名称

- dose_number: 剂次

- date: 接种日期

5. 使用说明

1. 运行

"main.py"

2. 选择

"1" 添加接种记录

3. 选择

"2" 查看所有记录

4. 选择

"3" 查看近期需接种的疫苗

5. 数据保存在

"vaccine_records.db" 中

6. 核心知识点卡片

知识点 说明

SQLite 轻量级数据库,适合本地存储

日期计算

"datetime" 与

"timedelta" 计算间隔

关键词匹配 识别疫苗类型

模块化设计 分离数据库、逻辑、提醒功能

用户分类 按老人/小孩/成人管理

7. 总结

本项目通过 记录录入 → 疫苗分类 → 时间计算 → 提醒 的流程,实现了家庭疫苗管理的自动化,特别适合:

- 老人:长期疫苗计划(肺炎、带状疱疹)

- 小孩:免疫规划疫苗多剂次管理

- 成人:新冠、流感等年度疫苗

后续可扩展:

- 增加图形界面(Tkinter/PyQt)

- 接入短信/邮件提醒

- 支持多用户家庭管理

- 导出接种证明 PDF

如果你需要,还可以增加图形界面版本,让老人和小孩也能轻松使用,并支持日历视图显示接种计划。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 11:26:32

新手入门必看:cv_unet_image-matting WebUI界面功能详解

新手入门必看&#xff1a;cv_unet_image-matting WebUI界面功能详解 1. 引言&#xff1a;为什么你需要这款智能抠图工具&#xff1f; 你是不是也遇到过这些情况&#xff1a;想做个电商主图&#xff0c;但模特背景太杂乱&#xff1b;想换个证件照底色&#xff0c;却不会用PS&a…

作者头像 李华
网站建设 2026/4/12 2:15:01

Paraformer-large能否替代商业ASR?成本效益全面对比

Paraformer-large能否替代商业ASR&#xff1f;成本效益全面对比 1. 引言&#xff1a;我们为什么需要离线语音识别&#xff1f; 你有没有遇到过这种情况&#xff1a;手头有一段两小时的会议录音&#xff0c;想转成文字整理纪要&#xff0c;但市面上的在线语音识别工具要么按分…

作者头像 李华
网站建设 2026/5/1 8:11:43

为什么顶尖团队都在用Python处理Dify中的JSON?真相令人震惊

第一章&#xff1a;Python在Dify工作流中的核心价值 Python作为现代AI应用开发的核心语言&#xff0c;在Dify工作流中扮演着关键角色。其简洁的语法、丰富的库生态以及强大的异步处理能力&#xff0c;使得开发者能够高效构建、调试和扩展复杂的AI驱动流程。 灵活的数据处理与集…

作者头像 李华
网站建设 2026/4/16 16:15:56

为什么你的MCP Server路径总被忽略?Claude Desktop配置避坑指南

第一章&#xff1a;Claude Desktop 无法识别自定义 mcp server 路径 当在本地开发环境中运行自定义的 MCP&#xff08;Model Control Plane&#xff09;服务时&#xff0c;Claude Desktop 客户端可能无法正确识别用户指定的服务地址。该问题通常表现为客户端仍尝试连接默认远程…

作者头像 李华
网站建设 2026/5/1 5:21:57

电转气技术与MATLAB程序分析

电转气 电–气综合能源 优化 调度 P2G 日前调度 MATLAB程序 内容&#xff1a;电转气技术使电力网络与天然气网络双向耦合&#xff0c; 为风电消纳提供了有效途径。 程序建立了电转气的天然气系统优化运行模型&#xff1b; 以天然气系统优化调度为上层模型&#xff0c;以电力系统…

作者头像 李华
网站建设 2026/5/1 5:24:12

大模型无法获取实时数据?MCP协议的3个关键突破你必须知道

第一章&#xff1a;MCP 协议如何解决大模型无法访问实时数据的问题 大语言模型在处理任务时通常依赖静态训练数据&#xff0c;难以获取和响应实时动态信息。MCP&#xff08;Model Communication Protocol&#xff09;协议通过标准化接口与外部数据源建立双向通信&#xff0c;有…

作者头像 李华