求问:是否有可存储X12 837数据的现成关系型数据库架构?
存储X12 837数据的现成关系型数据库架构方案
确实存在可复用的X12 837数据库架构,无需完全从零搭建,以下是实用的方向和示例:
一、开源医疗/EDI工具自带的成熟架构
很多开源医疗系统或EDI集成工具已经内置了适配X12 837(尤其是主流的5010版本)的关系型表结构,比如:
- Mirth Connect:作为主流EDI集成工具,它的数据库包含专门存储837索赔数据的核心表,比如
edi_837_claim(索赔主信息)、edi_837_service_line(服务行明细)、edi_837_diagnosis(诊断码)等,可直接导出这些表的SQL结构复用。 - OpenEMR:开源电子病历系统,其
claim和service_line系列表完全贴合837的索赔数据模型,涵盖患者、提供者、保险、服务明细等核心字段。
二、可直接参考的手动编写SQL架构
如果需要自定义基础架构,以下是适配X12 837核心逻辑的关系型表SQL示例(基于MySQL):
1. 索赔主表(存储837的ISA/GS/ST段及索赔头核心信息)
CREATE TABLE edi_837_claim_header ( claim_id INT PRIMARY KEY AUTO_INCREMENT, transaction_control_number VARCHAR(10) NOT NULL UNIQUE, -- X12交易控制号 sender_id VARCHAR(15) NOT NULL, -- 发送方ID(ISA段) receiver_id VARCHAR(15) NOT NULL, -- 接收方ID(ISA段) claim_filing_ind VARCHAR(2) NOT NULL, -- 索赔提交类型(如"CI"代表专业索赔) patient_id VARCHAR(20) NOT NULL, patient_full_name VARCHAR(100) NOT NULL, patient_dob DATE NOT NULL, claim_effective_date DATE NOT NULL, total_claim_amount DECIMAL(12,2) NOT NULL, x12_version VARCHAR(15) NOT NULL DEFAULT '005010X222A1' -- 837版本标识 );
2. 服务行明细表(对应837的LX/SV1段)
CREATE TABLE edi_837_service_lines ( service_line_id INT PRIMARY KEY AUTO_INCREMENT, claim_id INT NOT NULL, line_number INT NOT NULL, -- 服务行序号 cpt_hcpcs_code VARCHAR(10) NOT NULL, -- 服务代码 service_date_from DATE NOT NULL, service_date_to DATE, unit_quantity DECIMAL(6,2) NOT NULL, line_charge_amount DECIMAL(10,2) NOT NULL, modifier_1 VARCHAR(2), modifier_2 VARCHAR(2), FOREIGN KEY (claim_id) REFERENCES edi_837_claim_header(claim_id) );
3. 诊断码表(对应837的HI段)
CREATE TABLE edi_837_diagnoses ( diagnosis_id INT PRIMARY KEY AUTO_INCREMENT, claim_id INT NOT NULL, diagnosis_code VARCHAR(10) NOT NULL, -- ICD-10/ICD-9诊断码 diagnosis_poa_ind VARCHAR(1) NOT NULL, -- 入院时是否存在标志 sequence_order INT NOT NULL, -- 诊断码排序 FOREIGN KEY (claim_id) REFERENCES edi_837_claim_header(claim_id) );
4. 可选扩展表
根据业务需求,还可以添加提供者信息表edi_837_providers、保险信息表edi_837_insurance等,通过claim_id与主表关联即可。
三、注意事项
- 需匹配你使用的X12 837版本(如4010 vs 5010),不同版本的字段要求和段结构存在差异,需对应调整表字段。
- X12 837存在重复组结构(如多个服务行、多个诊断码),必须采用主表+子表的关联存储方式,避免数据冗余。
内容的提问来源于stack exchange,提问作者labnoa
相关产品推荐
相关产品推荐

