У меня есть две проблемы, связанные с созданием сообщений CCD для раковых регистров. У меня уже есть класс CCD, сгенерированный из XML-схемы CCD (XSD).
Во-первых, это старая схема. Кажется, он полностью совместим, но я хотел бы иметь возможность создать новый класс на основе самой последней схемы CDA. Всякий раз, когда я использую класс, сгенерированный из новой схемы, и заменяю исходный класс, возникает исключение
serializer.Serialize(textWriterObj, cdaObj);
Я использую MS XSD.exe для создания класса. Я использую VS 2012, и версия XSD.exe кажется специфичной для .Net Framework 4.0, но проект, над которым я работаю, застрял в версии 2.0. Сгенерированные классы в основном идентичны, за исключением тега, указывающего, что он был создан в версии FW 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"]
Это странная ошибка, потому что я компенсировал это, и в выводе сообщения появляются правильные поля. Обратите внимание, что ему нужен определенный идентификатор шаблона для действия, EntryRelationship в соответствии с действием, который имеет определенное значение TypeCode и InversionInd, а также другой идентификатор шаблона в EntryRelationship.
Я компенсирую это на занятиях по построению сообщений.
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";
Мне удалось удалить большинство ошибок (и разделов ошибок), но этот вид остался. Я бы перечислил остальные, но у меня закончились символы. Я предполагаю, что если я могу исправить это, я могу довольно легко исправить остальные.