治疗膳食如何与医嘱打通,落到工程层面,核心就两件事:HIS 医嘱的可靠同步,以及基于医嘱的自动配餐。本文从技术视角拆解医院营养膳食系统的实现思路,并给出两段可参考的核心代码。
一、HIS 医嘱同步:幂等 + 去重是关键
HIS 对接同步住院病人基础信息与饮食医嘱两类数据。医生改医嘱会触发重复推送,如果同步端不做幂等,食堂就可能重复配餐。下面是医嘱同步的幂等处理示例:
import hashlib
def build_order_key(hospital_id, patient_id, diet_type, order_time):
"""根据医嘱唯一要素生成幂等键,重复推送只落地一次"""
raw = f"{hospital_id}|{patient_id}|{diet_type}|{order_time}"
return hashlib.md5(raw.encode("utf-8")).hexdigest()
class DietOrderSyncer:
def __init__(self):
self.seen = set() # 已处理的医嘱幂等键
def sync(self, order):
key = build_order_key(
order.hospital_id, order.patient_id,
order.diet_type, order.order_time
)
if key in self.seen:
return None # 重复推送,直接忽略
self.seen.add(key)
# 落地到营养膳食库,触发后续配餐流程
return self.persist(order)
这样,同一医嘱无论推送多少次,只会在营养膳食侧落地一次,从源头避免"改一次医嘱配两份餐"的问题。

二、自动配餐:医嘱驱动 + 自主预订跳过
医嘱同步落地后,系统依据饮食医嘱定时自动配餐;若病人已自主预订,则跳过该餐次,避免重复与浪费。下面是自动配餐的匹配逻辑示例:
def match_diet_plan(patient, diet_order):
"""按饮食医嘱匹配治疗/疗程膳食方案,支持营养筛查与评估"""
if patient.has_self_booking():
return None # 已自主预订,自动跳过
# NRS2002 营养筛查 / SGA 评估结果决定方案强度
plan = select_plan(
disease=patient.disease,
indicators=patient.indicators,
diet_type=diet_order.diet_type,
screening=patient.nrs2002_score,
assessment=patient.sga_grade,
)
return plan.schedule(period=diet_order.period)
配餐结果会精确对到床位,形成"谁的医嘱、谁的餐、送到哪张床"的完整链路,并可回传数据支撑临床营养质控。

三、落地效果
这套实现跑通后,广州某三甲医院的治疗膳食执行规范率从约 60% 提升到 98% 以上;在政策端也契合《三级医院评审标准(2025 年版)》对临床营养质控与 HIS 对接数据闭环的要求。
常见问题
Q:为什么医嘱同步一定要做幂等?
A:医生修改医嘱会触发重复推送,不做幂等就会重复配餐,造成食材浪费和发餐混乱,所以同步端必须去重。
Q:自动配餐怎么处理病人自主订餐?
A:配餐前判断病人是否已自主预订,已预订则自动跳过该餐次,既保证医嘱执行,又避免重复配餐。
Q:医院营养膳食系统对接对 HIS 有侵入吗?
A:没有,采用标准接口只读同步,不反向写入,HIS 运行稳定性和数据安全都有保障。
治疗膳食如何与医嘱打通,工程上就是"可靠同步 + 精准配餐"这两件事。把幂等和跳过逻辑做扎实,医院营养膳食系统的医嘱闭环就立住了。