How-toSelected

Mirobody Open-Source Tool Standardises Health Checkup Data for AI

Why we picked it

The non-obvious point is that entity resolution at the data layer, not model capability, is the bottleneck for personal health analytics — Mirobody solves the unit-and-naming mismatch that makes LLM analyses of medical reports unreliable. Developers building health or quantified-self applications can self-host it locally under Apache-2.0 with no API key required for the mapping step. Anyone who has lab reports from different hospitals or countries, including the many cross-border professionals in Singapore and ASEAN, can use it to build a unified longitudinal health record before handing data to any model.

Theta Health has open-sourced Mirobody under the Apache-2.0 licence, a tool that unifies lab reports from different hospitals and countries into standardised medical coding so large language models can analyse them correctly. The author tested it with virtual data and found that 193 mg/dL of Total Cholesterol was locally converted to 4.99 mmol/L and mapped to the international LOINC code 2093-3, without any model call or API key.

Body

In the Chinese demo, after importing one PDF checkup report and one CSV lab sheet, the question "how has my cholesterol changed" produced a trend line of 4.60, 4.45 and 4.38 mmol/L, even though the two reports used different English labels ("Total Cholesterol-TC" and "Cholesterol, Total"). Each reading could be clicked open to view the original file. When given the vague term "blood lipids 5.0 mmol/L", the system declined to assign a code because it refers to a category of tests rather than one measurement. The author re-ran the repo's public name-recognition test cases on version 1.6.0, with all 347 cases passing.

The post points out that people meticulously manage token budgets and IP health for Claude Code and Codex but neglect their own health data: reports from different hospitals use different indicator names and units, and feeding them raw to a model yields plausible but potentially wrong interpretations. The author has not yet tested the fully local deployment on a 16 GB machine lacking Docker and disk space.

Original · shao__meng

各位 Vibe Coder 们,咱们天天看自己的 token 额度还剩多少,天天担心 Claude Code、Codex 的 IP 健不健康、会不会被封号,把这些 Coding Agent 伺候得妥妥帖帖。可有多久,咱们没真正关心过自己的健康了? 你上次体检是几年前?我是 3 年前,前公司的入职体检 🤦🏻‍♀️ 更扎心的是:就算现在去补一次,新报告和 3 年前那份也很难放在一起看。换了医院,指标名就变了;在国外做的化验,单位都不一样。一份写 Total Cholesterol 193 mg/dL,一份写 总胆固醇 5.0 mmol/L,数字看着差了几十倍,其实几乎是同一个值。 我们给 agent 喂代码,都知道上下文没对齐就会出错。那健康数据呢?很少有人管。把两份报告一起丢给大模型,它能讲得头头是道,却未必知道这两个数说的是同一件事。数据层不先统一,模型再强也画不出一条对的趋势。 所以今天我拿 Theta Health 开源的 Mirobody(Apache-2.0)认真试了一遍,我只关注一个点:它能不能把同一项认成同一项。全程用的都是虚拟数据。 1. 在本地换算 193 mg/dL,结果是 4.99 mmol/L。「总胆固醇」和「total cholesterol」对到了同一个国际化验编码(LOINC 2093-3)。这一步没调模型,也没用 API Key。 2. 中文 demo 里,一开始只有一份报告。我问「我的胆固醇有什么变化?」,它老实说只有一个时间点:4.60 mmol/L。我又导入了一份 PDF 体检报告和一份 CSV 化验单,同样的问题,这次画出了一条趋势:4.60、4.45、4.38。两份报告的英文写法一份是「Total Cholesterol-TC」,一份是「Cholesterol, Total」,它都认成了同一项。每个读数都能点开原文件看。 3. 最让我放心的是:我输入「血脂 5.0 mmol/L」,它并没有硬猜,只是不给编码,因为「血脂」是一类检查,不是一项读数。写过代码的都懂,知道什么时候不该答,比什么都答更难得。 我还用 1.6.0 版本复跑了它仓库里公开的名称识别用例,347 项全部通过。这只说明公开用例在这个版本上的表现,不代表临床准确率。 没跑完的也照实说:16 GB 电脑上的全本地部署我还没试,这台机器上没装 Docker,磁盘空间也不够。下一篇补上实测。 给自己的 agent 做了那么多配置,也花一个周末给自己的健康数据搭个底子吧: 1. 先看中文 demo,里面是两位虚拟成员的数 chat.mirobody.cn/demo PZ 2. 给 Claude Code 接上(官方提供的命令,不用部署,也不要 Key): claude mcp add mirobody -- uvx --python 3.12 mirobody mcp 提醒一句:接 Claude Code 这类云端工具时,记录会发给对应的模型公司。 截至 11 月 9 日,它是 GitHub digital-health 话题下星标第 1 的项目。觉得有用,欢迎点个星,或者提 issue、PR github.com/thetahealth/mi… Bp (然后,真的该去体检了啊。。。)📊 2 ⚡

Industry Coordinates & Source Verification

This report is categorized under AITOP's "How-to" desk, focusing on China's AI industry and domestic foundation model ecosystem. Within our cross-regional analytical framework, it directly maps to AI developer toolchains, coding agents, and engineering workflows and US-China foundation model benchmarks and commercialization comparison. Key entities and technical topics under continuous tracking include Mirobody, Theta Health, LOINC, health data.

Source attribution: curated from shao__meng (@shao__meng).