我构建了一个免费合成数据生成器——使用方法(React + Tailwind)
Source: Dev.to

概述
我们都有过这种经历——需要 10,000 条真实的用户记录来测试你的应用,或者一批用于演示的假医疗数据,亦或是用来压力测试仪表盘的交易日志。于是你要么:
- 编写一个蹩脚的脚本生成 “User_1, User_2, User_3…”
- 花 30 分钟配置 CLI 工具
- 使用 SaaS 工具,而免费层只能生成 100 行
我对这种情况感到厌倦,于是构建了 DataForge —— 一个免费、基于浏览器的合成数据生成器,能够即时创建逼真的假数据。无需注册、无需服务器、无限制。


功能概述
DataForge 在两个类别中生成 9 种数据类型 的逼真假数据。
📊 通用数据
- 用户 – 姓名、电子邮件、电话、出生日期、公司、职位
- 地址 – 街道、城市、州、邮编、坐标
- 交易 – 金额、商户、类别、状态
🏥 医疗保健 / HIPAA‑安全
- 患者 – MRN、血型、过敏史、疾病、保险
- 医疗记录 – ICD‑10 代码、生命体征、就诊类型、临床笔记
- 处方 – 真正的药物、剂量、DEA 编号、NDC 代码
- 实验室结果 – 26 项真实实验室检测,含参考范围和标记
- 保险理赔 – 收费/允许/已付金额,理赔状态
- 医疗提供者 – NPI 编号、专科、资质
所有数据均为 100 % 合成 — 不包含真实患者信息,无 HIPAA 风险。
关键特性
⚡ 即时生成多达 50,000 条记录
所有操作均在客户端运行。无需 API 调用,也不需要服务器。您的数据永不离开浏览器。
🎬 自定义场景
预设场景
- 🧓 老年患者群体(年龄 65+)
- 👶 儿童群体(年龄 0‑17)
- 🚨 关键实验室数值
- 💰 高价值交易($5K+)
- 🕵️ 欺诈模式
- ❌ 拒绝理赔批次
- 🗑️ 脏/混乱数据(包含空值和错误)
自定义构建器
- 设置每个字段的空值率(0‑80 %)
- 定义数值范围(例如,年龄 65‑95,金额 $10K+)
- 强制特定值(例如
status = "Denied") - 添加自定义值池
- 控制重复率和错误注入
📤 导出格式
- JSON – 标准结构化数据
- CSV – 用于电子表格和数据库
- SQL – 可直接运行的 INSERT 语句
- HL7 FHIR – 医疗互操作性标准
🌱 可通过种子复现
设置种子值即可每次获得 完全相同的数据。非常适合一致的测试套件。
我的构建过程
技术栈
- React 18 + TypeScript
- Tailwind CSS – 暗色高清界面
- Vite – 快速构建
- 自定义种子 PRNG – 无需外部 faker 库
种子随机数生成器
与其使用不可设种的 Math.random(),我基于一个简单的线性同余生成器实现了自定义 PRNG:
class SeededRandom {
private seed: number;
constructor(seed: number) {
this.seed = seed;
}
next(): number {
this.seed = (this.seed * 16807 + 0) % 2147483647;
return this.seed / 2147483647;
}
nextInt(min: number, max: number): number {
return Math.floor(this.next() * (max - min + 1)) + min;
}
pick<T>(array: T[]): T {
return array[this.nextInt(0, array.length - 1)];
}
}
如果你从事健康信息技术(Health IT),一定了解以下痛点:
- ❌ 不能使用真实患者数据进行测试(受 HIPAA 限制)
- ❌ Epic/Cerner 沙盒中的测试患者数量有限
- ❌ Synthea 功能强大,但需要 Java + CLI 环境配置
- ❌ 大多数在线生成器不了解医疗数据
DataForge 填补了这一空白:
- ✅ FHIR 原生导出 — 生成符合规范的 FHIR Bundle
- ✅ 真正的 ICD‑10 与 CPT 编码 — 不再是随机字符串
- ✅ 临床场景 — 老年人群、关键实验室指标、拒付理赔等
- ✅ 在浏览器中运行 — 可将 URL 分享给 QA 团队
- ✅ 5 万条记录 — 足以进行负载测试
接下来
- 自定义模式构建器(定义您自己的数据类型)
- API 端点模式(用作模拟 API)
- 表之间的关系(外键)
- 更多医疗保健标准(HL7v2 消息,C‑CDA)
- 本地化(非美国名称、地址、电话格式)
如果此工具为您节省了时间,请在仓库上点个 ⭐ 或留下评论。我很想了解您是如何使用它的!