当前位置: 首页 > news >正文

Project NOMAD按症状找药:从烧伤、发热到腹泻的OTC匹配完全指南

Project NOMAD按症状找药:从烧伤、发热到腹泻的OTC匹配完全指南

【免费下载链接】project-nomadProject NOMAD is an offline-first knowledge and education server. Wikipedia, thousands of books, courses, maps, and optional local AI, all running on hardware you own with no internet required.项目地址: https://gitcode.com/GitHub_Trending/pr/project-nomad

Project NOMAD是一个离线优先的知识与教育服务器,其中的药品参考(Drug Reference)模块支持按症状找药:从烧伤、发热到腹泻,它会根据 FDA 官方药品标签,帮你匹配出对应的非处方药(OTC)。无需联网、无需搜索网站,所有数据都跑在你自己的硬件上。本文带你走通从安装数据到按症状搜索的完整流程,并拆解它背后的 OTC 匹配逻辑。

为什么需要"按症状找药"?

平时我们在网上找药,往往要先知道药名。但真实的场景常常相反:你知道自己哪里不舒服,却不知道该用什么药

Project NOMAD 的药品参考把这两个方向都做好了:

  • 按药名搜索:输入品牌名或通用名,查看适应症、剂量、警告和成分。
  • 按症状搜索(By situation):从问题出发,选择"烧伤""发热""腹泻"等症状,列出 FDA 标签覆盖这些症状的药品。
  • 反向链接:在药品详情页,还能看到该药"常用于哪些情况",形成症状 ↔ 药品双向互链。

官方文档中对此的原文描述是:"Start from the problem instead of the product"(从问题出发,而不是从产品出发)。详见 drug-reference.md。

⚠️重要提示:这是健康信息,不是医疗建议。Project NOMAD 展示的是制造商的 FDA 标签原文和 OTC 匹配结果,不能替代医生、药师或护士。请始终遵循你手中实际产品的说明。

第一步:安装 FDA 药品数据(约需 8-10 GB)

药品参考是可选组件,默认不安装,因为数据集较大。有两种安装入口,最终效果相同:

  1. 从主界面进入Content Explorer,选择Medicine分类;
  2. 选中Standard层级(其中包含 FDA Drug Reference);
  3. 确认下载。

也可以在 Drug Reference 页面直接点Download FDA drug data按钮。整个过程分两个阶段在后台进行:

阶段内容大小
⬇️ Download拉取 openFDA 药品标签数据集(支持断点续传)约 1.7 GB(压缩)
📇 Indexing将标签导入离线全文搜索数据库解压后约 8-10 GB

你不需要守在页面旁——离开后下载和索引会继续,索引完成后搜索功能自动开启。开启"自动内容更新"后,NOMAD 还会定期检查 openFDA 是否发布了新数据集并自动刷新。

按症状搜索 OTC 药品的操作步骤

数据装好后,Drug Reference 页面有三个标签页,其中"By situation"就是按症状找药的主入口:

  1. 在症状选择器中点选一个或多个症状(如烧伤、发热、腹泻);
  2. 页面列出所有 FDA 标签覆盖该症状的药品,并按相关度排序;
  3. 每个结果按"品牌名 + 通用名"折叠为一行,避免同一成分出现几十个近似的商品;
  4. 结果中OTC 药品永远排在最前面,方便直接购买使用。

💡 多选症状时,NOMAD 会优先查找同时覆盖所有症状的药品,找不到再按每个症状分别展示——这在多种症状并存、想找"一款产品搞定"时特别实用。

匹配逻辑拆解:从"burns"到搜索结果

按症状搜索的核心是一套精心策划的症状骨架(condition spine),其唯一数据源是 conditions.json,构建时生成到 conditions.ts:

{ "slug": "burns", "label": "Burns", "category": "Skin & wounds", "searchTerms": ["burns", "minor burns", "sunburn", "scald", "minor burn"] }

每个症状包含一组同义词(searchTerms),覆盖用户可能的各种表达。以烧伤为例,burnssunburn(晒伤)、scald(烫伤)都能命中同一组药品。内置症状按四大类别组织:

类别代表症状
Pain, fever & inflammation(疼痛、发热与炎症)头痛、肌肉关节痛、发热、痛经
Cold, cough & allergy(感冒、咳嗽与过敏)咳嗽、鼻塞、喉咙痛、过敏
Stomach & digestion(胃与消化)胃灼热、腹泻、便秘、恶心呕吐、晕车
Skin & wounds(皮肤与伤口)烧伤、擦伤割伤、蚊虫叮咬

查询是如何构建的

匹配逻辑实现在 condition_service.ts 中,关键点:

  1. 同义词 OR 扩展:buildIndicationQuery 把 searchTerms 拼成一条 MySQL 全文检索查询。多词短语(如sore throat)会被加双引号按短语匹配,牺牲少量召回换取精度;单词直接通过。NATURAL LANGUAGE MODE 把它们当作 OR 式相关度查询——任一同义词命中即可,按相关度排序。
  2. 全文检索 + LIKE 兜底:查询词中最长 token ≥ 3 个字符时走 FULLTEXT 索引ft_drug_labels_name_indications;太短或索引异常时自动降级为LIKE '%term%',保证搜索永远可用。
  3. OTC 强过滤:SQL 中固定product_type = 'HUMAN OTC DRUG'(见 orderOtcFirst),确保按症状浏览时只出现非处方药——这是面向消费者的场景,处方药不该抢镜。

自由文本:不选症状,直接输入描述

如果症状列表里没有你想要的那一项,可以直接输入自由文本(如 "athlete's foot")。处理逻辑在 drugsForFreeText:

  • 主路径:把输入解析回策划症状的 slug(大小写不敏感的精确/子串匹配),例如手输 "burns" 依然会命中策划条目,走与点选完全相同的匹配;
  • 兜底路径:解析不到时,对药品适应症文本做直接匹配。

附加层:天然疗法与自然补救

每个症状页除了 OTC 药品,还会尝试展示天然疗法(草药 + 居家护理措施),数据来自 natural_remedies.json 与 home_remedies.json,来源为 NCCIH、CDC、FDA 等美国公共领域资料。

比如选择"burns"时,芦荟胶(Aloe vera)、茶树油(Tea tree oil)等条目会因conditions数组包含burns而被 remediesForCondition 精确过滤出来。

需要注意的是,这部分"肯定性内容"目前默认关闭(由 affirmative_remedies.ts 的门控控制),默认体验只包含受监管的 FDA 标签匹配——这也是它保持严谨的原因之一。

反向链接与结果页结构

药品详情页上还有一个"常用于(Commonly used for)"区块:反向查找 situationsForIndications 会把药品标签的适应症文本与所有症状的 searchTerms 做子串匹配,告诉你这款药还能应对哪些情况,点一下即可跳转回症状页(通过/drug-reference?situation=<slug>深链)。

单个症状详情页(conditions/show.tsx)的呈现层次也很清晰:

  • 顶部常驻安全横幅(SafetyBanner),不可绕过;
  • 药品列表区:区分"还没装数据"(引导去 Drug Reference)和"有数据但无匹配"两种空状态;
  • 每条结果行(DrugResultRow)链接到完整标签详情,可进一步并排对比两款药的警告章节

对比功能只做"警告并排展示",不计算药物相互作用——两种药能否同服,请交给药师或医生。

关键文件导航

模块路径
症状数据源conditions.json
症状骨架(生成文件)admin/app/data/conditions.ts
匹配服务层admin/app/services/condition_service.ts
纯函数工具(查询构建/排序)admin/util/conditions.ts
HTTP 路由层admin/app/controllers/conditions_controller.ts
症状详情前端页admin/inertia/pages/conditions/show.tsx
按症状搜索 UIadmin/inertia/pages/drug-reference/index.tsx
官方使用文档admin/docs/drug-reference.md

总结

Project NOMAD 的按症状找药,本质上是把"症状 → 同义词 → FDA 标签适应症全文匹配"串成一条离线流水线,并用 OTC 强过滤和稳定排序保证结果对普通人友好。当你下一次在野外或断网环境下遇到烧伤、发热或腹泻时,这套逻辑能让你在没有互联网的情况下,依然拿到基于官方标签的可靠 OTC 参考——当然,紧急情况请优先寻求专业医疗帮助。

【免费下载链接】project-nomadProject NOMAD is an offline-first knowledge and education server. Wikipedia, thousands of books, courses, maps, and optional local AI, all running on hardware you own with no internet required.项目地址: https://gitcode.com/GitHub_Trending/pr/project-nomad

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4306763.html

相关文章:

  • 复盘2017腾讯校招笔试题:考点、陷阱与底层能力解析
  • STM32H7R7编译报错排查实战:从环境配置到链接脚本
  • VLA时间建模:从固定窗口到流式状态,解锁实时控制
  • STM32CubeIDE与CubeProgrammer协同调试全攻略
  • 从研发笔试题看视频平台技术岗:C++内存、TCP与高并发考点全拆解
  • Windows下MySQL下载安装与配置详解:Installer与ZIP双方案
  • 基于Flink构建电商实时分析平台:从用户行为到实时画像的完整实践
  • 数字生命线网络复原力搭建实战|通信基建、AI自愈、应急组网全方案
  • 搜狐2017秋招研发笔试题解析:校招笔试考点与复习策略
  • 基于SpringBoot的智慧课堂管理系统的设计与实现(毕设源码+文档)
  • USB PD EPR与Sink控制器:从100W到240W的硬件设计实战
  • 运放选型到调试:误差预算、经典电路与增益调整实战指南
  • 揭秘Anthropic-Cybersecurity-Skills:817个AI网络安全技能如何重塑安全分析工作流
  • 心智世界建模MWM:从预测下一帧到推断他人意图
  • LLM显著性偏差:为什么模型总被显眼信息带偏?
  • 许昌空调维修正规服务怎么选?欧米到家全区域及代码故障检修
  • oh-my-pi /review 代码审查完整指南:P0 到 P3 优先级排序,一键裁决代码能否发布
  • 工程流程自动化的实施边界
  • STM32H7 SAI到DTCM数据搬运失败?HPDMA配置与MPU排查指南
  • 音游进阶:别再靠感觉,用数据评估你离“W5”还差什么
  • OpenCV+PyQt5实现课堂抬头率检测系统:从人脸检测到姿态估计
  • LX Music 桌面版:一个免费聚合多音源的音乐搜索播放器
  • Docling 文档解析:让 200 份 PDF 变 RAG 就绪只需 3 行代码
  • 旅行者1号FDS模拟器:探秘老式航天计算机的指令级仿真
  • S2-LP驱动外部PA:从14dBm到27dBm的射频设计实战
  • vLLM的C++实现:从PagedAttention到KV Cache管理实战
  • K3I-Core:从内核隔离到硬件级否决开关的安全架构解析
  • 大厂AI工程师被裁背后:可迁移的AI工程化能力才是护城河
  • 在 Docker 容器中运行 Windows 完整指南:从零部署到调优
  • AI课程热潮背后:博主从内容生产者到课程经销商的信任博弈