Patient Matching Middleware API
收藏Patient Matching Middleware API 数据集概述
基本信息
- API名称: Patient Matching Middleware API
- 提供商: everonu
- 类别: Medical
- 当前版本: v1
- 基础URL:
https://matchpulse.p.rapidapi.com/v1 - 认证方式: 在请求头中提供
x-rapidapi-key: YOUR_RAPIDAPI_KEY和Content-Type: application/json
核心功能描述
Patient Matching Middleware API 是一个确定性的、可解释的患者匹配引擎,用于健康IT工作流。它仅使用人口统计数据(无需外部数据源,非黑盒机器学习)来匹配、聚类和去重患者记录。
核心能力包括:
- 单次与批量匹配:将候选者与名册或存储的索引进行评分。每个结果都包含每字段因素、冲突和推荐操作(链接、审查或创建新记录)。
- 聚类检测:提交患者列表并获取分组的重复项及其置信度分数。
- 合并建议:提供两条记录,接收包含冲突解决和风险说明的逐字段合并计划。
- 标准化:在匹配前清理和标准化姓名、电话号码和地址。
- 租户索引:可选择存储患者以进行跨会话的索引匹配,默认情况下为脱敏存储。
- 审计日志:每个API调用都记录有元数据(无PHI)以供合规。
匹配工作原理:跨名字、姓氏、出生日期、电话、电子邮件、地址和标识符使用加权Jaro-Winkler相似度。分数映射到四个确定性决策:no_match、possible_match、likely_match、exact_match。支持每个请求自定义阈值。
默认隐私设计:
no_store: true— 除非您选择加入,否则不会持久化任何内容。redact_output: true— 默认情况下从响应中剥离PII。- 审计事件不包含任何PHI。
集成构建:可与任何FHIR、HL7或自定义EHR管道协同工作。您提供患者数据;MatchPulse处理匹配逻辑。适用于中间件层、数据迁移工具和MPI实现。
定价层级
| 功能 | 免费 ($0/月) | 专业版 ($25/月) | 超值版 ($75/月) | 超级版 ($150/月) |
|---|---|---|---|---|
| 请求数/月 | 200 | 25,000 | 100,000 | 5,500,000 |
| 速率限制 | 10 请求/分钟 | 60 请求/分钟 | 240 请求/分钟 | 600 请求/分钟 |
| 索引模式 | — | 25K 患者 | 500K 患者 | 5M 患者 |
| 审计保留 | — | 30 天 | 90 天 | 180 天 |
所有计划均通过RapidAPI计费。所有匹配端点默认 no_store=true — 除非您明确启用保留,否则不会持久化PHI。
患者对象模式
json { "patient_id": "string (optional)", "first_name": "string (required)", "last_name": "string (required)", "dob": "YYYY-MM-DD (required)", "sex": "M | F | X | U (optional)", "phone": "string (optional)", "email": "string (optional)", "address": { "line1": "string", "city": "string", "state": "string", "postal": "string", "country": "string" }, "identifiers": { "mrn": "string", "external_id": "string" } }
评分与决策
引擎使用跨人口统计数据的加权Jaro-Winkler相似度,默认阈值如下:
| 决策 | 分数范围 | 推荐操作 |
|---|---|---|
no_match |
< 0.65 | create_new |
possible_match |
0.65 – 0.79 | human_review |
likely_match |
0.80 – 0.92 | human_review |
exact_match |
≥ 0.93 | merge_candidate |
字段权重:dob 25%、last_name 20%、first_name 15%、phone 15%、address 10%、email 8%、identifiers 5%、sex 2%。阈值可通过 options.thresholds 对象在每个请求中自定义。
端点列表
健康检查
- 端点:
GET /health - 描述: 健康检查。无需认证。
- 请求示例:
curl https://matchpulse.p.rapidapi.com/v1/health - 成功响应 (200): json { "ok": true, "service": "matchpulse", "version": "1.0.0", "timestamp": "2026-04-13T12:00:00.000Z" }
患者匹配
-
端点:
POST /patient/match -
描述: 将单个候选者与患者名册进行匹配。返回最佳匹配项,包含可解释的分数、因素、冲突和推荐操作。
-
模式:
inline— 您在请求中提供名册。indexed— 与您预上传的患者索引匹配(需要专业版及以上层级并启用保留)。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/patient/match -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "candidate": { "first_name": "Jane", "last_name": "Smith", "dob": "1985-03-15", "phone": "555-0142" }, "mode": "inline", "roster": [ { "patient_id": "p1", "first_name": "Janet", "last_name": "Smith", "dob": "1985-03-15", "phone": "5550142" }, { "patient_id": "p2", "first_name": "Jane", "last_name": "Smyth", "dob": "1985-03-15" } ], "options": { "max_results": 5, "no_store": true } }
-
成功响应 (200): json { "decision": "likely_match", "match_score": 0.8721, "best_matches": [ { "patient_id": "p1", "score": 0.8721, "decision": "likely_match", "factors": [ { "field": "dob", "contribution": 0.25, "evidence": "exact" }, { "field": "last_name", "contribution": 0.20, "evidence": "exact" }, { "field": "phone", "contribution": 0.15, "evidence": "normalized exact" }, { "field": "first_name", "contribution": 0.1388, "evidence": "JaroWinkler 0.926" } ], "conflicts": [], "recommended_action": "human_review" } ], "request_id": "a1b2c3d4-..." }
批量患者匹配
-
端点:
POST /patient/match/bulk -
描述: 在单个调用中将多个候选者与共享名册进行匹配。每个候选者独立评分。最多200个候选者,最多2000条名册记录。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/patient/match/bulk -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "candidates": [ { "first_name": "Jane", "last_name": "Smith", "dob": "1985-03-15" }, { "first_name": "Robert", "last_name": "Johnson", "dob": "1972-08-22" } ], "roster": [ { "patient_id": "p1", "first_name": "Janet", "last_name": "Smith", "dob": "1985-03-15" }, { "patient_id": "p2", "first_name": "Bob", "last_name": "Johnson", "dob": "1972-08-22" } ] }
-
成功响应 (200): json { "results": [ { "candidate_index": 0, "decision": "likely_match", "match_score": 0.87, "best_matches": [ ... ] }, { "candidate_index": 1, "decision": "possible_match", "match_score": 0.72, "best_matches": [ ... ] } ], "request_id": "b2c3d4e5-..." }
患者聚类
-
端点:
POST /patient/cluster -
描述: 使用不相交集检测患者列表中的重复聚类。将可能指向同一个人的患者分组。最多2000名患者。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/patient/cluster -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "patients": [ { "patient_id": "p1", "first_name": "John", "last_name": "Doe", "dob": "1990-01-01" }, { "patient_id": "p2", "first_name": "Jon", "last_name": "Doe", "dob": "1990-01-01" }, { "patient_id": "p3", "first_name": "Jane", "last_name": "Smith", "dob": "1985-05-20" } ], "options": { "threshold": 0.80 } }
-
成功响应 (200): json { "clusters": [ { "cluster_id": "c1", "members": ["p1", "p2"], "confidence": 0.91, "summary": "last_name: exact + dob: exact + first_name: JaroWinkler 0.933" } ], "request_id": "c3d4e5f6-..." }
合并建议
-
端点:
POST /patient/merge/suggest -
描述: 为两个被识别为重复的患者生成合并计划。返回要保留的字段、要合并的字段、任何需要手动审查的冲突以及风险说明。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/patient/merge/suggest -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "primary": { "first_name": "John", "last_name": "Doe", "dob": "1990-01-01", "phone": "555-1234", "email": "john@example.com", "identifiers": { "mrn": "MRN001" } }, "duplicate": { "first_name": "Jon", "last_name": "Doe", "dob": "1990-01-01", "phone": "555-5678", "email": "jdoe@example.com" } }
-
成功响应 (200): json { "merge_plan": { "keep_fields": { "dob": "1990-01-01", "first_name": "John", "last_name": "Doe", "mrn": "MRN001" }, "merge_fields": { "phones": ["5551234", "5555678"], "emails": ["john@example.com", "jdoe@example.com"] }, "conflicts": [ { "field": "email", "primary": "john@example.com", "duplicate": "jdoe@example.com", "resolution": "manual_review" } ] }, "risk_notes": [ "Identity resolution aid; human review recommended for ambiguous matches." ], "request_id": "d4e5f6g7-..." }
姓名标准化
-
端点:
POST /normalize/name -
描述: 标准化患者姓名 — 转换为小写,去除特殊字符,压缩空白。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/normalize/name -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "value": " OBrien-Smith " }
-
成功响应 (200): json { "original": " OBrien-Smith ", "normalized": "obrien-smith", "type": "name", "request_id": "e5f6g7h8-..." }
电话标准化
-
端点:
POST /normalize/phone -
描述: 标准化电话号码 — 去除格式,移除国家代码前缀
1。 -
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/normalize/phone -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "value": "+1 (555) 014-2000" }
-
成功响应 (200): json { "original": "+1 (555) 014-2000", "normalized": "5550142000", "type": "phone", "request_id": "f6g7h8i9-..." }
地址标准化
-
端点:
POST /normalize/address -
描述: 标准化地址 — 转换为小写,缩写街道类型(Street→st, Avenue→ave等),去除标点,分词以便比较。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/normalize/address -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "address": { "line1": "123 North Main Street, Apt. 4B", "city": "Springfield", "state": "IL", "postal": "62704" } }
-
成功响应 (200): json { "original": { "line1": "123 North Main Street, Apt. 4B", "city": "Springfield", "state": "IL", "postal": "62704" }, "normalized": { "tokens": ["123", "n", "main", "st", "apt", "4b"], "city": "springfield", "state": "il", "postal": "62704" }, "type": "address", "request_id": "g7h8i9j0-..." }
索引更新/插入
-
端点:
POST /index/upsert -
描述: 将患者上传到您的租户索引,以便与
indexed匹配模式一起使用。需要专业版及以上层级和retention: true。 -
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/index/upsert -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "patients": [ { "patient_id": "p100", "first_name": "Alice", "last_name": "Wong", "dob": "1992-07-14", "phone": "555-9999" } ], "options": { "retention": true } }
-
成功响应 (200): json { "upserted": 1, "request_id": "h8i9j0k1-..." }
索引删除
-
端点:
POST /index/delete -
描述: 按ID从您的租户索引中移除患者。
-
请求示例: bash curl -X POST https://matchpulse.p.rapidapi.com/v1/index/delete -H "x-rapidapi-key: YOUR_KEY" -H "Content-Type: application/json" -d { "action": "delete", "patient_ids": ["p100"] }
-
成功响应 (200): json { "deleted": 1, "request_id": "i9j0k1l2-..." }
索引统计
- 端点:
GET /index/stats - 描述: 获取您的租户患者索引的统计信息。
- 请求示例:
curl https://matchpulse.p.rapidapi.com/v1/index/stats -H "x-rapidapi-key: YOUR_KEY" - 成功响应 (200): json { "total_patients": 1, "last_updated": "2026-04-13T12:00:00.000Z", "request_id": "j0k1l2m3-..."



