Search code examples
c#xmlserializationxsd.exehl7-v3

deserializing HL7 CCD.xml file to native ClinicalDocument Class object


i'm new to hl7 healthcare domain and was assigned a task of serializing and deserializing CCD.xml file.i have successfully generated the ClinicalDocument class from CDA.xsd schema file using xda.exe tool.But as i tried something like

XmlSerializer superCereal = new XmlSerializer(typeof(POCD_MT000040ClinicalDocument), xRoot);
StreamReader sr = new StreamReader(path);
POCD_MT000040ClinicalDocument doc = (POCD_MT000040ClinicalDocument)superCereal.Deserialize(sr);
sr.Close();

it give an error like "There is an error in XML document (4, 2)." "ClinicalDocument xmlns='urn:hl7-org:v3' was not expected."

Here is my ClinicalDocument Class that is generated using xsd.exe tool

using System.Xml.Serialization;


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(TypeName = "POCD_MT000040.ClinicalDocument", Namespace = "urn:hl7-org:v3")]
[System.Xml.Serialization.XmlRootAttribute("ClinicalDocument", Namespace = "urn:hl7-org:v3", IsNullable = false)]
public partial class POCD_MT000040ClinicalDocument
{

private CS[] realmCodeField;

private POCD_MT000040InfrastructureRoottypeId typeIdField;

private II[] templateIdField;

private II idField;

private CE codeField;

private ST titleField;

private TS effectiveTimeField;

private CE confidentialityCodeField;

private CS languageCodeField;

private II setIdField;

private INT versionNumberField;

private TS copyTimeField;

private POCD_MT000040RecordTarget[] recordTargetField;

private POCD_MT000040Author[] authorField;

private POCD_MT000040DataEnterer dataEntererField;

private POCD_MT000040Informant12[] informantField;

private POCD_MT000040Custodian custodianField;

private POCD_MT000040InformationRecipient[] informationRecipientField;

private POCD_MT000040LegalAuthenticator legalAuthenticatorField;

private POCD_MT000040Authenticator[] authenticatorField;

private POCD_MT000040Participant1[] participantField;

private POCD_MT000040InFulfillmentOf[] inFulfillmentOfField;

private POCD_MT000040DocumentationOf[] documentationOfField;

private POCD_MT000040RelatedDocument[] relatedDocumentField;

private POCD_MT000040Authorization[] authorizationField;

private POCD_MT000040Component1 componentOfField;

private POCD_MT000040Component2 componentField;

private string nullFlavorField;

private ActClinicalDocument classCodeField;

private bool classCodeFieldSpecified;

private string moodCodeField;

public POCD_MT000040ClinicalDocument()
{
    this.classCodeField = ActClinicalDocument.DOCCLIN;
    this.moodCodeField = "EVN";
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("realmCode")]
public CS[] realmCode
{
    get
    {
        return this.realmCodeField;
    }
    set
    {
        this.realmCodeField = value;
    }
}

/// <remarks/>
public POCD_MT000040InfrastructureRoottypeId typeId
{
    get
    {
        return this.typeIdField;
    }
    set
    {
        this.typeIdField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("templateId")]
public II[] templateId
{
    get
    {
        return this.templateIdField;
    }
    set
    {
        this.templateIdField = value;
    }
}

/// <remarks/>
public II id
{
    get
    {
        return this.idField;
    }
    set
    {
        this.idField = value;
    }
}

/// <remarks/>
public CE code
{
    get
    {
        return this.codeField;
    }
    set
    {
        this.codeField = value;
    }
}

/// <remarks/>
public ST title
{
    get
    {
        return this.titleField;
    }
    set
    {
        this.titleField = value;
    }
}

/// <remarks/>
public TS effectiveTime
{
    get
    {
        return this.effectiveTimeField;
    }
    set
    {
        this.effectiveTimeField = value;
    }
}

/// <remarks/>
public CE confidentialityCode
{
    get
    {
        return this.confidentialityCodeField;
    }
    set
    {
        this.confidentialityCodeField = value;
    }
}

/// <remarks/>
public CS languageCode
{
    get
    {
        return this.languageCodeField;
    }
    set
    {
        this.languageCodeField = value;
    }
}

/// <remarks/>
public II setId
{
    get
    {
        return this.setIdField;
    }
    set
    {
        this.setIdField = value;
    }
}

/// <remarks/>
public INT versionNumber
{
    get
    {
        return this.versionNumberField;
    }
    set
    {
        this.versionNumberField = value;
    }
}

/// <remarks/>
public TS copyTime
{
    get
    {
        return this.copyTimeField;
    }
    set
    {
        this.copyTimeField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("recordTarget")]
public POCD_MT000040RecordTarget[] recordTarget
{
    get
    {
        return this.recordTargetField;
    }
    set
    {
        this.recordTargetField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("author")]
public POCD_MT000040Author[] author
{
    get
    {
        return this.authorField;
    }
    set
    {
        this.authorField = value;
    }
}

/// <remarks/>
public POCD_MT000040DataEnterer dataEnterer
{
    get
    {
        return this.dataEntererField;
    }
    set
    {
        this.dataEntererField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("informant")]
public POCD_MT000040Informant12[] informant
{
    get
    {
        return this.informantField;
    }
    set
    {
        this.informantField = value;
    }
}

/// <remarks/>
public POCD_MT000040Custodian custodian
{
    get
    {
        return this.custodianField;
    }
    set
    {
        this.custodianField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("informationRecipient")]
public POCD_MT000040InformationRecipient[] informationRecipient
{
    get
    {
        return this.informationRecipientField;
    }
    set
    {
        this.informationRecipientField = value;
    }
}

/// <remarks/>
public POCD_MT000040LegalAuthenticator legalAuthenticator
{
    get
    {
        return this.legalAuthenticatorField;
    }
    set
    {
        this.legalAuthenticatorField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("authenticator")]
public POCD_MT000040Authenticator[] authenticator
{
    get
    {
        return this.authenticatorField;
    }
    set
    {
        this.authenticatorField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("participant")]
public POCD_MT000040Participant1[] participant
{
    get
    {
        return this.participantField;
    }
    set
    {
        this.participantField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("inFulfillmentOf")]
public POCD_MT000040InFulfillmentOf[] inFulfillmentOf
{
    get
    {
        return this.inFulfillmentOfField;
    }
    set
    {
        this.inFulfillmentOfField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("documentationOf")]
public POCD_MT000040DocumentationOf[] documentationOf
{
    get
    {
        return this.documentationOfField;
    }
    set
    {
        this.documentationOfField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("relatedDocument")]
public POCD_MT000040RelatedDocument[] relatedDocument
{
    get
    {
        return this.relatedDocumentField;
    }
    set
    {
        this.relatedDocumentField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("authorization")]
public POCD_MT000040Authorization[] authorization
{
    get
    {
        return this.authorizationField;
    }
    set
    {
        this.authorizationField = value;
    }
}

/// <remarks/>
public POCD_MT000040Component1 componentOf
{
    get
    {
        return this.componentOfField;
    }
    set
    {
        this.componentOfField = value;
    }
}

/// <remarks/>
public POCD_MT000040Component2 component
{
    get
    {
        return this.componentField;
    }
    set
    {
        this.componentField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string nullFlavor
{
    get
    {
        return this.nullFlavorField;
    }
    set
    {
        this.nullFlavorField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public ActClinicalDocument classCode
{
    get
    {
        return this.classCodeField;
    }
    set
    {
        this.classCodeField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool classCodeSpecified
{
    get
    {
        return this.classCodeFieldSpecified;
    }
    set
    {
        this.classCodeFieldSpecified = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string moodCode
{
    get
    {
        return this.moodCodeField;
    }
    set
    {
        this.moodCodeField = value;
    }
}
}

please help Thanks in advance


Solution

  • i got it working by removing the comment nodes with in the CCD