说实话这个项目名字一开始看起来有点“混搭”——短信计费是典型的通信业务问题甲流病人初筛是医疗信息化场景两个领域八竿子打不着。但做基层诊所信息化系统时这两个需求偏偏撞到了一起发热诊室的医生需要登记甲流初筛信息就诊家属需要收到结果通知短信而我作为系统落地的人还得时刻盯着短信账单别超预算。真做下来才发现“短信计费”这几个字背后藏的坑比初筛流程本身多得多。这篇内容适合正在做诊所SaaS、公共卫生随访系统、或者任何带短信通知功能的医疗/服务类项目的人参考。我会把这个项目拆成两部分来讲一部分是怎么把甲流初筛流程变成系统里的数据模型另一部分是短信计费的选型、计费规则和对账经验。两者不是割裂的通知场景直接决定计费模式初筛数据又会反过来影响短信模板的内容设计所以放在一起聊反而是最合理的打开方式。1. 项目概述与需求拆解1.1 这个需求是怎么来的项目背景是一家连锁社区诊所的信息化改造。当时诊所接到上级单位通知要求在流感季加强发热病人的初筛登记尤其要对甲流疑似患者做到“可追溯、可统计、可通知”。这意味着诊所需要在极短时间内上线一套初筛登记系统同时给患者或其家属发送筛查结果短信。听起来像两件事实际落地时是一件事。因为医生在诊室里登记完初筛信息后下一步自然就是告诉患者“结果出来了阴性/阳性”。如果靠人工打电话20个患者就能占满护士一下午。用短信通知3秒钟发完还能留记录。所以系统的第一个需求是初筛登记表单要做得足够快第二个需求是短信通知要发得足够稳第三个隐藏需求则是短信不能发超预算。前两个需求写进PRD很容易第三个需求往往被忽略。大多数开发者在做短信功能时只关心“接口能不能调通用户能不能收到”很少会去想“这一条短信到底扣了多少钱、扣得对不对、下个月预算还剩多少”。等项目跑起来账单出来的时候再算账已经晚了。这是我在这个项目里印象最深的一点短信计费不是一个财务问题而是一个技术问题。1.2 初筛场景的核心诉求甲流初筛在诊所场景里有一个特点它不是确诊而是“筛”。医生通过流行病学史问询、体温测量、症状评分、快速抗原检测这几个步骤把患者分为“疑似”“观察”“基本排除”几类。系统的核心价值不是替代医生判断而是把整个过程数字化形成一份完整的记录。所以初筛模块的设计目标有三个。第一录入快。候诊区坐着一排发热病人护士不可能花5分钟填一张复杂表单字段必须控制在15个以内而且体温、症状要是点选式不是打字式。第二分级明确。根据评分规则自动给出风险等级辅助医生决定是做抗原检测、安排留观还是建议回家观察。第三可追溯。每个患者的初筛时间、操作护士、检测结果、通知状态都要留痕方便后续统计和回访。这些需求决定了表单字段设计和后续的短信通知策略。比如一个体温39℃、咳嗽、头痛的患者评分算出来是高度疑似系统会建议立刻做甲流抗原检测此时短信通知的内容就会改成“检测结果待出请留观等候”而不是“检测阴性”。换句话说短信内容不是固定不变的它是由初筛结果实时驱动的。1.3 短信在这个项目里的角色如果只做初筛登记不上短信通知项目的完整度会大打折扣。短信在这里承担了三层角色一是结果告知二是复诊提醒三是健康宣教。而这三类消息的频率和内容完全不同对应的成本也不一样。结果告知是刚需每个做抗原检测的患者都必须收到复诊提醒是针对“观察”等级的患者在24小时后发送二次提醒健康宣教则是在流感高峰期向历史患者批量推送防护知识。前两种是事务型通知必须发、按条计费、送达率要求高最后一种是营销型推送可发可不发单价低但容易被拦截。把这三类短信混在一个套餐里管理项目的短信预算一定会失控后面对账也会一团乱麻。在这个项目里我把这三类短信分开处理事务型用通知通道营销型用专用推广通道且单独设预算线。这个决策在后来的成本核算中被证明是完全正确的因为通知通道的单价虽然高一点但送达率稳定营销通道的短信再便宜发出去收不到等于浪费钱。2. 甲流初筛流程的信息化建模2.1 初筛指标字段设计初筛表单的设计不能拍脑袋得从医生的实际操作习惯出发。我对照流感诊疗相关指引和一线医生的反馈最终把字段分成四组基本信息姓名、年龄、性别、联系电话、就诊时间。电话这个字段是短信通知的关键后面所有计费逻辑都建立在它准确的基础上。流行病学史是否接触过发热患者、是否处于集体单位、近期是否去过人群密集场所。用三个开关控件表示不增加录入负担。症状与体征体温手动输入、咳嗽、咽痛、头痛、乏力、肌肉酸痛。这些症状全部用勾选方式体温单独填数值。初步处理是否做抗原检测、检测结果、初筛分级、处理意见。这里有个容易被忽略的细节联系电话的格式校验。很多系统只做“11位数字”的简单校验但实际场景中经常出现座机号、区号加号码、或者中间带横杠的情况。我在项目里统一采用“11位手机号优先非11位转人工登记”的策略因为短信下发依赖手机号号码错了不仅白扣短信费还可能导致隐私信息泄露给错误的号码这是很严重的合规问题。2.2 初筛分级与后续动作绑定初筛分级不是让系统替医生做诊断而是做风险提示。我参考临床常用的简易评分思路把症状和流行病学史量化为评分项体温≥38℃计2分咳嗽计1分咽痛计1分乏力计1分有流行病学史计2分。总分0-2分为低风险3-4分为观察5分及以上为疑似。评分结果决定系统推荐的后续动作也决定短信通知的触发时间初筛等级评分区间自动动作短信触发时机低风险0-2分症状较轻建议常规就诊不主动触发仅记录观察3-4分建议做血常规/抗原检测检测结果回填后立即通知疑似5分以上建议隔离留观必须做抗原检测登记完成即通知留观结果回填后再通知一次这个设计解决了两个问题。第一现场录入完成后护士不用思考“下一步该干嘛”系统已经把路径指出来了。第二短信触发规则被明确绑定了业务动作“什么时候发短信”不再依赖人工记忆而是由系统状态自动驱动。这在冬季流感高峰期门诊量一天两三百人的情况下效率提升特别明显。2.3 抗原结果回填与闭环抗原检测结果通常15-20分钟出中间患者可能留在留观区也可能回家等通知。系统里我设计了一个“待回填”状态检测样本送检后记录进入等待队列检验人员拿到结果后在系统里选择“阳性”或“阴性”点击保存系统自动完成两件事更新初筛记录状态触发对应短信。闭环的关键在于状态机设计。我定义了几个状态已登记、待检测、检测中、结果阴性、结果阳性、已通知、已完成。短信发送有单独的“通知状态”字段避免和业务流程状态耦合。比如一名患者结果已经回填为“阳性”但短信发送失败这个记录必须被筛选出来走人工电话通知流程不能因为“检查结果已出”就认为整个流程走完了。这个状态机的价值在项目上线第三周就体现出来了。某天短信通道故障持续了40分钟积压了30多条待发送通知恢复后系统自动重发一条没丢。如果没有这个待发送队列这30个患者的结果通知就无声无息地消失了事后根本没法追溯。3. 短信计费服务商选型与计费规则3.1 选服务商时真正该看的指标做短信功能之前我在服务商选型上花了三天时间。市面上主流的云通信平台很多价格看起来也差不多。真到签合同的时候才发现交付文档里的计费条款有各种学问。我总结出四个核心指标到达率不是看服务商宣传的“99.9%”而是看是否有历史对账数据。我让每家服务商提供同一个行业近30天的送达回执统计取中位数作为参考。计费点是“提交成功算钱”还是“运营商回执送达才算钱”。大部分服务商按提交成功计费这意味着用户手机没收到短信钱照样扣只是后续会以“退费”形式返还失败条数。通道类型通知通道和营销通道是分开的。通知通道单价高但关键词屏蔽少、到达率稳定营销通道便宜但带推广性质的内容很容易被运营商拦截。模板审核速度流感季的短信模板可能一周要改三四次如果服务商审核要半天业务方等不起。我最后选了支持线上提交、平均审模板1小时出结果的平台这个速度在后续迭代中帮了大忙。3.2 计费模式拆解短信计费的说到底就是“单条价格 × 成功数量”但具体项目里价格构成比想象的复杂。以我最终选定的方案为例通知类短信单价约0.045元/条营销类约0.028元/条首次开户要预付2000元。我还做了一个成本测算。按一家诊所日均门诊100人、其中发热初筛30人、需要发短信的约18人计算每人平均1.5条短信初筛通知结果通知日均短信量约27条。淡季和旺季摊平月均短信量约1200条。加上高峰期批量宣教短信2000条/月总费用大约为月成本 1200 × 0.045 2000 × 0.028 54 56 110元是不是觉得很少没错单家诊所的短信成本确实不高。但这个数字有两个前提一是所有短信都走模板二是没有重复发送。一旦模板内容违规导致被运营商拦截系统会自动重发短信量翻3倍都是正常的。我见过一个同行项目单月实际短信费是预算的4倍就是因为忽略了对回执状态的监控。3.3 重复计费与失败重发的坑短信计费最容易出现的问题不是单价贵而是重复发送。我在项目里专门做了重发控制同一患者同一通知场景5分钟内不允许重复触发。短信回执状态为“发送失败”的进入重试队列最多重试2次每次间隔60秒超过2次的转人工电话通知。每日发送量超过预设阈值时系统自动冻结营销类短信只保留事务型通知。这个限制规则在开发时看着是“多此一举”实际上线后才明白它的必要性。有一次门诊工作人员误点了“批量通知全部患者”系统直接触发了1200条短信要不是阈值拦截当天短信账单就得多个几百块。误操作不是假设场景而是实际会发生的所以技术层面必须兜底。4. 通知场景与模板设计实操4.1 初筛结果通知模板短信模板是最容易被低估的环节。很多人觉得模板就是“文字变量”随便写写就能过审。但医疗类短信的模板审核和普通行业不同涉及检验结果的内容运营商审核非常敏感稍有不慎就会以“涉嫌疾病诊断/治疗”为由驳回。我第一版模板用了“检测结果为阳性”这种表述被驳回了。后来和有经验的同事讨论把措辞调整成“检测结果已出请点击链接或到院详询”这种相对保守的表达才顺利过审。这是实际用过的版本【XX社区卫生服务中心】您好患者XXX于2025年1月15日在本中心完成甲流快速抗原检测。检测结果已出请本人或家属凭登记信息通过本中心在线查询或到院咨询获取详细解读。感谢配合祝您健康。这个模板有几个设计点不直接在短信里给出阳性/阴性结论避免审核风险和隐私泄露写明检测项目和时间让接收者知道是哪次检测提供获取结果的路径避免患者收到短信却不知道下一步怎么办。4.2 复诊提醒与宣教短信复诊提醒模板解决的是“观察”等级患者的管理。这类患者初筛时症状不重但存在病情进展的可能需要24-48小时内回访。系统会在登记后24小时自动发送【XX社区卫生服务中心】您好您于昨日在我中心就诊初筛结果提示需要关注体温变化。如体温持续超过38℃或出现呼吸困难、胸闷等症状请及时到中心发热门诊就诊。祝早日康复。这种模板的重点是给出明确的动作指引而不是简单地说“请复诊”。患者收到短信后知道做什么、什么情况下需要再来这个闭环才有意义。宣教短信则完全是另一套逻辑。它的内容是流感季防护知识比如“勤洗手、多通风、避免去人群密集场所”带科普性质。这类短信走营销通道发送时间避开午休和深夜每天上午10点或下午3点发到达率更高。不过营销通道的内容限制比通知通道严格得多不能出现“免费”“优惠”“立即购买”这类营销词否则连模板都过不了审。医疗机构的科普短信要特别注意不要把宣传写成广告。4.3 模板变量、签名和长度控制短信模板里的变量要提前规划。服务商的模板系统会把${name}、${date}这类变量转成可替换字段变量过多或变量值过长会导致短信超长产生多条计费。这里有一个非常容易踩坑的规则一条短信的计费上限是70个汉字67字符超过就会按两条甚至三条计费单价直接翻倍。所以在设计模板时我严格控制了变量长度患者名不超过4个字日期固定用“XXXX年XX月XX日”格式结果查询链接使用短链接服务压缩。签名也要提前准备。短信签名是“【】”里的部分需要向运营商报备。医疗机构的签名报备要提供营业执照和医疗机构执业许可证审批周期一般2-3个工作日建议项目启动第一天就提交不要等模板都写好了再补签名会拖慢整个上线进度。5. 对账机制与成本管控5.1 每日发送量与扣费核对短信平台会提供每天的发送明细但明细里有成功、失败、发送中三种状态。最怕的是平台显示成功运营商也计费了但用户实际上没收到。这种“假成功”问题必须靠用户反馈才能发现。我在项目里建立了一个每日对账流程每天早上10点拉取前一天的发送记录按时间、模板、状态三个维度统计和诊疗系统里记录的业务消息做比对。比如诊疗系统显示昨天有35个抗原结果需要通知短信平台却只发了33条那差的2条就要查原因。这样的核对只花5分钟却能防止计费错误长期积累。5.2 回执状态的三种处理策略短信平台会返回状态回执常见的三种处理方式DELIVERD已送达正常终态不用操作。但要注意“已送达”指的是到达运营商网关不是用户手机一定收到。覆盖率再高的平台也没法保证用户手机关机、停机时还能送达。UNDELIV未送达进入重试队列。重试前先检查号码格式和接收状态如果用户已经回复“T”退订就不能再发了再发就是骚扰还可能导致签名被投诉关停。UNKNOWN未知/超时这种最麻烦运营商没有返回明确结果。我的策略是等30分钟后查询一次仍无结果的按失败处理转人工电话通知。5.3 预算告警与成本分摊预算告警是我坚持加的功能。诊所负责人是典型的不看合同、只看“还剩多少钱”的人。我在系统设置里加了三个告警阈值当日发送量超过200条、月度费用超过500元、剩余金额低于100元。任一条件触发系统自动给管理员发提醒通知。成本分摊的逻辑也提前说清楚。事务型通知初筛结果、复诊提醒是业务必需成本算在诊所运营费用里宣教短信流感防护知识是运营活动按条数单独核算由市场部负责。如果不分摊月底账单来了诊所和运营方会因为费用归属吵起来。6. 常见问题与排查技巧实录6.1 短信显示“已发送”但患者家属没收到这类问题在项目上线第一周出现过几次排查路径是这样的先看状态回执。如果回执是“已送达”再看号码是否准确尤其注意老年患者留的是不是子女号码。有几个“没收到”的案例最后查出来是患者留了停机号码这种属于“登记错误”不是通道问题。查号码时如果发现手机号是座机或位数不对系统应提示护士当场核对而不是默默保存。再看手机终端。部分手机自带骚扰拦截功能短信会被静默拦截。通知类短信因为带有“检测”“就诊”等词被某些拦截App识别为“医疗推广”进了垃圾箱。解决办法是在诊所宣传区域提示患者查看短信拦截列表同时短信内容里尽量少出现高频营销词。6.2 通知类短信被拦截这是最棘手的问题因为短信内容是合规的、模板也过了审但用户收不到。我遇到的情况是某运营商对包含“发热门诊”关键词的短信风控较严即使模板过审实际下发时仍可能被延迟或拦截。后来找到的解法是“通道冗余”。项目同时接了两家服务商主通道发送失败率达到5%以上时自动切换到备用通道重发。这个决策看似增加了成本实际上一年下来短信费只多了几十块但每个患者都收到了通知这个价值远超过那点切换成本。日常运营中还要注意维护短信签名投诉率。单个签名被用户投诉超过一定比例一般万分之三运营商就会限制该签名的短信下发。所以模板里的退订提示语“回复T退订”不能省这是一道保险虽然大部分患者不会回复但它能降低被恶意投诉的概率。6.3 高峰期发送耗时过长流感季每天下午3点到5点初筛登记量会突然增大短信发送队列积压明显。服务商接口每秒能处理的请求量有限诊所的网络带宽也不支持几百条短信同时瞬时提交。解决办法是把同步发送改成异步批处理。前端在登记完成后只提示“短信正在发送”实际发送任务放入消息队列由后台按每秒10-20条的速率平滑下发。这个改动上线后同时100人登记时也不会出现系统卡死或短信丢失的情况。还有一个经验是患者的初筛结果回填高峰是上午10点-11点和下午4点-5点这两个时段尽量别发宣教短信否则会抢占事务型短信的通道资源导致结果通知变慢。写在最后的一点体会做这个项目最深的感受是短信计费看似是个边缘技术话题实际上和业务绑定极深。你在设计初筛流程时就得想清楚“结果谁来通知、怎么通知、通知多少次”而不是等流程跑通了再回头补短信功能。计费对账的规则也要趁早定拖到月底出账单再排查不仅成本高而且根本无法恢复到当时的现场状态。个人建议任何带短信通知功能的系统在上线前先花一小时做三件事把短信模板涉及的变量和长度算清楚把计费点和重试策略写进技术文档把对账流程固定成每天的例行任务。这三件事做扎实后面能省下的不只是钱还有大量的排查时间。项目本身不复杂但细节决定体验短信这条链路尤其如此。