vrdr-dotnet是一个.NET (C#)代码仓库,主要用于处理生死记录报告(VRDR)相关的Health Level 7 (HL7) Fast Healthcare Interoperability Resources (FHIR)标准。其核心用途包括:生成和消费VRDR FHIR文档、处理VRDR文档交换的FHIR消息,以及在VRDR FHIR记录与跨辖区交换(IJE)Mortality格式之间进行转换,并提供配套的转换微服务。
| VRDR IG | FHIR | 版本 | VRDR.dotnet | VRDR.Messaging |
|---|---|---|---|---|
| STU1 | R4 | V3.1.1 | nuget https://github.com/nightingaleproject/vrdr-dotnet/releases/tag/v3.1.1 | nuget https://github.com/nightingaleproject/vital_records_fhir_messaging/releases/download/v3.1.0/fhir_messaging_for_nvss.pdf |
开发与CLI要求
库使用要求
VRDR库
用途:提供FHIR生死记录库,支持VRDR FHIR的生成、消费及与IJE Mortality格式的转换。
安装:通过NuGet引用:
xml<ItemGroup> ... <PackageReference Include="VRDR" Version="3.1.1" /> ... </ItemGroup>
或本地引用项目文件:
xml<Project Sdk="Microsoft.NET.Sdk"> ... <ItemGroup> <ProjectReference Include="..\VRDR\DeathRecord.csproj" /> ... </ItemGroup> </Project>
生成VRDR FHIR记录示例:
csusing VRDR; DeathRecord deathRecord = new DeathRecord(); deathRecord.Identifier = "42"; // 设置记录ID deathRecord.GivenNames = new string[] { "First", "Middle" }; // 死者名 deathRecord.FamilyName = "Last"; // 死者姓 deathRecord.COD1A = "Rupture of myocardium"; // 死因第一部分a行 deathRecord.INTERVAL1A = "Minutes"; // 死因间隔 // 设置死因编码 Dictionary<string, string> exampleCode = new Dictionary<string, string>(); exampleCode.Add("code", "I21.0"); exampleCode.Add("system", "ICD-10"); exampleCode.Add("display", "Acute transmural myocardial infarction of anterior wall"); deathRecord.CODE1A = exampleCode; // 设置怀孕状态 Dictionary<string, string> code = new Dictionary<string, string>(); code.Add("code", "PHC1260"); code.Add("system", "urn:oid:2.16.840.1.114222.4.5.274"); code.Add("display", "Not pregnant within past year"); deathRecord.PregnancyStatus = code; deathRecord.ExaminerContacted = false; // 检查者是否联系 deathRecord.DateOfDeath = "2018-07-10T10:04:00+00:00"; // 死亡日期时间 Console.WriteLine(deathRecord.ToJSON()); // 输出JSON格式记录
消费VRDR FHIR记录示例:
csusing VRDR; // 读取FHIR XML文件 string xml = File.ReadAllText("./example_vrdr_fhir_record.xml"); // 从XML构造DeathRecord对象 DeathRecord deathRecord = new DeathRecord(xml); // 输出记录详情 Console.WriteLine($"死者姓: {deathRecord.FamilyName}"); Console.WriteLine($"死亡日期时间: {deathRecord.DateOfDeath}"); Console.WriteLine($"死因第一部分a行: {deathRecord.COD1A}"); Console.WriteLine($"死因间隔a行: {deathRecord.INTERVAL1A}"); Console.WriteLine($"死因编码a行: {String.Join(", ", deathRecord.CODE1A.Select(x => x.Key + "=" + x.Value).ToArray())}");
FHIR与IJE格式转换示例:
csusing VRDR; string xml = File.ReadAllText("./example_vrdr_fhir_record.xml"); DeathRecord deathRecord = new DeathRecord(xml); IJEMortality ije = new IJEMortality(deathRecord); string ijeString = ije.ToString(); // 转换为IJE字符串 Console.WriteLine(ijeString);
csusing VRDR; IJEMortality ije = new IJEMortality("..."); // 从IJE字符串构造 DeathRecord deathRecord = ije.ToDeathRecord(); Console.WriteLine(deathRecord.ToJSON()); // 输出JSON格式FHIR记录
VRDR.Messaging库
用途:提供创建和解析VRDR文档交换FHIR消息的类。
安装:通过NuGet引用(自动包含VRDR库):
xml<ItemGroup> ... <PackageReference Include="VRDR.Messaging" Version="3.1.1" /> ... </ItemGroup>
或本地引用项目文件:
xml<Project Sdk="Microsoft.NET.Sdk"> ... <ItemGroup> <ProjectReference Include="..\VRDR.Messaging\VRDRMessaging.csproj" /> ... </ItemGroup> </Project>
消息处理示例(编码响应消息):
csusing VRDR; // 创建编码响应消息 CodingResponseMessage message = new CodingResponseMessage("https://example.org/jurisdiction/endpoint"); // 设置业务标识符 message.CertificateNumber = "..."; message.StateAuxiliaryIdentifier = "..."; message.NCHSIdentifier = "..."; // 设置根本死因编码 message.UnderlyingCauseOfDeath = "<icd code>"; // 设置记录轴编码 var recordAxisCodes = new List<string> { "<icd code>", "<icd code>", "<icd code>", "<icd code>" }; message.CauseOfDeathRecordAxis = recordAxisCodes; // 设置实体轴编码 var builder = new CauseOfDeathEntityAxisBuilder(); builder.Add(<lineNumber>, <positionInLine>, <icd code>); // 添加实体轴编码 message.CauseOfDeathEntityAxis = builder.ToCauseOfDeathEntityAxis(); string jsonMessage = message.ToJSON(); // 转换为JSON消息
VRDR.CLI工具
用途:命令行工具,支持FHIR与IJE格式转换、文档验证等操作。
使用示例(.NET Core 3.1):
bash# 生成示例FHIR记录并输出XML和JSON dotnet run # FHIR XML转IJE dotnet run 2ije 1.xml # IJE转FHIR XML dotnet run ije2xml 1.MOR # IJE转FHIR JSON dotnet run ije2json 1.MOR # FHIR XML转JSON dotnet run xml2json 1.xml # FHIR JSON转XML dotnet run json2xml 1.json # 验证FHIR XML dotnet run checkXml 1.xml
注:使用.NET Core 2.1时,需在命令后添加--framework netcoreapp2.1
VRDR.HTTP微服务
用途:提供HTTP端点,支持IJE与FHIR(XML/JSON)格式的转换。
端点:
http://<server>:8080/xml:请求FHIR XML格式记录http://<server>:8080/json:请求FHIR JSON格式记录http://<server>:8080/ije:请求IJE格式记录请求头:需包含Content-Type,指定请求体格式(application/fhir+json、application/fhir+xml或application/ije)。
Docker部署:
bash# 构建Docker镜像 dotnet publish docker build -t vrdr-microservice -f ./VRDR.HTTP/Dockerfile . # 运行容器 docker run -p 8080:8080 vrdr-microservice
本地运行(不使用Docker):
bashdotnet run
服务将监听http://localhost:8080。
Copyright 2018, 2019, 2020 The MITRE Corporation
基于Apache License 2.0许可。详情参见[***]
如有问题或反馈,请发送邮件至:***
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务