为癌症登记处建立HL7 CCD(基于CDA)(有意义的使用Lvl 2)

时间:2013-06-26 14:59:42

标签: c# xml-serialization hl7 hl7-cda hl7-v3

我有两个关于为癌症登记处生成CCD信息的问题。我已经有了一个CCD类,它是从CCD XML模式(XSD)生成的。

首先,这是一个较旧的架构。它似乎完全兼容,但我希望能够基于最新的CDA架构生成一个新类。每当我使用从新模式生成的类并替换原始类时,就会抛出异常

serializer.Serialize(textWriterObj, cdaObj);

我正在使用MS的XSD.exe来生成该类。我正在运行VS 2012,而XSD.exe版本似乎特定于.Net Framework 4.0,但我正在研究的项目停留在2.0。生成的类基本相同,除了标签声明它是在FSD 4.0版本的XSD.exe中生成。

另一个问题是我在生成消息并使用官方muCrValidation工具验证消息后得到的一组错误。

ERROR: In IHE PCC Cancer Diagnosis Section (1.3.6.1.4.1.19376.1.7.3.1.3.14.1), a Cancer Diagnosis must contain a Problem Concern Entry (1.3.6.1.4.1.19376.1.5.3.1.4.5.2) that contains a Cancer Diagnosis Entry (1.3.6.1.4.1.19376.1.7.3.1.4.14.1). See Section 2.5.3.2.
LOCATION: /ClinicalDocument[1]/component[1]/structuredBody[1]/component[1]/section[1]
TEST : cda:entry/cda:act[cda:templateId[@root = "1.3.6.1.4.1.19376.1.5.3.1.4.5.2"]]//cda:entryRelationship[@typeCode="SUBJ" and @inversionInd="false"]//cda:templateId[@root = "1.3.6.1.4.1.19376.1.7.3.1.4.14.1"]

这是一个奇怪的错误,因为我已经对此进行了补偿,并且正确的字段显示在消息输出中。请注意,它需要Act的特定模板ID,Act下的EntryRelationship,它具有特定的TypeCode和InversionInd值,以及EntryRelationship下的另一个模板ID。

我在消息构建类中补偿了这一点。

act.templateId = new II[3];
for (int i = 0; i < act.templateId.Length; i++)
act.templateId[i] = new II();
act.templateId[0].root = "1.3.6.1.4.1.19376.1.5.3.1.4.5.2";
act.templateId[1].root = "1.3.6.1.4.1.19376.1.5.3.1.4.5.1";
act.templateId[2].root = "2.16.840.1.113883.10.20.1.27";
...
act.entryRelationship[0].typeCode = x_ActRelationshipEntryRelationship.SUBJ;
act.entryRelationship[0].inversionInd = false;
act.entryRelationship[0].templateId = new II[1];
act.entryRelationship[0].templateId[0] = new II();
act.entryRelationship[0].templateId[0].root = @"1.3.6.1.4.1.19376.1.7.3.1.4.14.1";

我已经能够完成大部分错误(以及错误部分),但这种情况仍然存在。我列出其余的,但我没有人物。我假设如果能解决这个问题,我可以很容易地解决其余问题。

2 个答案:

答案 0 :(得分:2)

你看过珠穆朗玛峰(http://everest.marc-hi.ca)了吗?它是一个更通用的HL7v3框架,但它能够构建CDA实例。它还有一些更好的功能,如处理CDA数据类型,如本机.NET数据类型:

ClinicalDocument doc = new ClinicalDocument();
doc.Title = "My CDA";
doc.EffectiveTime = DateTime.Now;

还有一本综合性电子书,涵盖了许多与使用框架相关的主题(主要适用于v3消息,但它也适用于CDA)。 http://www.lulu.com/shop/justin-fyfe/advanced-everest-developers-handbook-ebook/ebook/product-21278619.html

答案 1 :(得分:0)

您是否为XmlSerializer设置了默认命名空间?

XmlSerializer ser = new XmlSerializer(typeof(POCD_MT000040ClinicalDocument), "urn:hl7-org:v3");