宠物医疗记录程序,病史,用药上链,避免过度医疗,误诊。
一、实际应用场景描述在宠物医疗场景中宠物主通常面临以下情况- 宠物在不同医院就诊- 过往病史、用药记录不连续- 新医生无法全面了解历史治疗方案- 出现重复检查、重复用药或过度医疗典型流程包括- 初诊、检查、开药- 复诊、换药、调整剂量- 转诊至其他医院由于缺乏统一、可信的医疗档案宠物主往往处于信息弱势。本示例程序旨在构建一个教学级、可验证的宠物医疗记录上链系统通过 Python 将病史与关键用药信息上链为跨机构诊疗提供可信参考数据辅助降低误诊与过度医疗风险。二、引入痛点Why Blockchain传统方式 存在问题纸质病历 易丢失、难跨院共享医院内部系统 数据孤岛、不互通口头描述 不准确、不完整重复检查 增加负担与风险区块链在该场景中的核心价值不是“去中心化医疗”而是- 病史不可篡改就诊即上链- 跨机构可核验授权后可查询- 用药连续性避免重复/冲突用药- 责任清晰医生、医院、时间均可追溯三、核心逻辑讲解简化模型1️⃣ 基本对象- Pet宠物- 宠物ID- MedicalRecord就诊记录- 诊断结果- 用药清单- 医生ID- Medication用药- 药品名称- 剂量- 频次2️⃣ 上链内容宠物ID就诊时间诊断摘要用药摘要医生ID哈希值3️⃣ 业务流程宠物就诊 → 医生录入病史与用药 → 上链存储 → 下次就诊授权查询 → 辅助决策四、代码模块化设计 项目结构pet_medical_chain/│├── blockchain.py # 区块链结构├── models.py # 数据模型├── medical_service.py # 医疗记录├── medication_checker.py # 用药冲突检测├── verification.py # 记录核验├── cli.py # 命令行入口├── utils.py # 工具函数└── README.md五、核心代码示例Python✅ 仅用于教学与原型验证✅ 不上链完整隐私数据仅上链摘要与哈希✅ 注释清晰便于理解1️⃣ models.py数据模型from dataclasses import dataclassfrom datetime import datetimeimport hashlibdataclassclass Medication:drug_name: strdosage: strfrequency: strdataclassclass MedicalRecord:pet_id: strdiagnosis: strmedications: list[Medication]doctor_id: strvisit_time: datetimedef medication_summary(self) - str:return ,.join(f{m.drug_name}({m.dosage},{m.frequency})for m in self.medications)def compute_hash(self) - str:content (f{self.pet_id}f{self.diagnosis}f{self.medication_summary()}f{self.doctor_id}f{self.visit_time.isoformat()})return hashlib.sha256(content.encode()).hexdigest()2️⃣ blockchain.py简化区块链from typing import Listimport hashlibimport jsonclass Block:def __init__(self, index: int, record: dict, previous_hash: str):self.index indexself.record recordself.previous_hash previous_hashself.timestamp Noneself.hash self.compute_hash()def compute_hash(self) - str:block_string json.dumps(self.record, sort_keysTrue)return hashlib.sha256(block_string.encode()).hexdigest()class MedicalChain:def __init__(self):self.chain: List[Block] []self.create_genesis_block()def create_genesis_block(self):genesis Block(0, {info: genesis}, 0)self.chain.append(genesis)def add_record(self, record: dict):last_block self.chain[-1]new_block Block(indexlast_block.index 1,recordrecord,previous_hashlast_block.hash)self.chain.append(new_block)3️⃣ medical_service.py医疗记录from blockchain import MedicalChainfrom models import MedicalRecordclass MedicalService:def __init__(self):self.chain MedicalChain()def record_visit(self, record: MedicalRecord):data {pet_id: record.pet_id,diagnosis: record.diagnosis,medications: record.medication_summary(),doctor_id: record.doctor_id,visit_time: record.visit_time.isoformat(),hash: record.compute_hash()}self.chain.add_record(data)return data[hash]4️⃣ medication_checker.py用药冲突检测from models import Medicationclass MedicationChecker:def check_duplication(self, existing: list[Medication], new: Medication) - bool:简化示例检测是否重复开具相同药物return any(e.drug_name new.drug_name for e in existing)5️⃣ cli.py命令行入口from models import MedicalRecord, Medicationfrom medical_service import MedicalServicefrom medication_checker import MedicationCheckerfrom datetime import datetimemedical_service MedicalService()checker MedicationChecker()record MedicalRecord(pet_idPET001,diagnosis皮肤过敏,medications[Medication(氯雷他定, 5mg, 每日一次)],doctor_idDOC003,visit_timedatetime.now())tx medical_service.record_visit(record)print(就诊记录上链哈希:, tx)new_med Medication(氯雷他定, 5mg, 每日一次)is_duplicate checker.check_duplication(record.medications, new_med)print(是否重复用药:, 是 if is_duplicate else 否)六、README 文件示例# 宠物医疗记录上链系统教学原型## 项目简介本项目为课程示例展示如何利用 Python 构建简化区块链结构实现宠物病史与用药记录的上链与核验。## 运行环境- Python 3.9## 运行方式bashpython cli.py## 注意事项- 本系统仅用于教学与实验- 不涉及真实医疗诊断与治疗- 不上链完整病历隐私数据七、使用说明面向学生/开发者1. 阅读models.py 理解医疗记录结构2. 修改cli.py 模拟不同宠物与就诊记录3. 可扩展- 增加“跨机构授权查询”- 增加“过敏史提示”- 改为 Web API 供医院系统调用八、核心知识点卡片课程向模块 关键知识点区块链 哈希锚定、不可篡改医疗信息 病史连续性、用药安全隐私保护 摘要存证 vs 原始病历软件工程 模块化、单一职责Python 实践 dataclass、CLI、列表处理九、总结本方案从宠物医疗中“信息孤岛与过度医疗”问题出发剥离商业与营销色彩仅从技术视角展示- 区块链如何作为“跨机构可信病历见证人”- 如何通过“摘要 哈希”兼顾隐私与安全- 如何在课程中讨论技术与医疗伦理的平衡它不是一个完整的医疗系统而是一个可用于课堂讨论、兽医教育、创新实验的教学原型。如果你愿意下一步可以- 改造成 Web APIFastAPI- 设计 宠物主授权与隐私控制- 或结合 智能合约 权限管理利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛