public static void Export(XmlWriter xmlWriter, IEnumerable <Organization> organizations, IEnumerable <Registry> registries, Lpp.Dns.Portal.IPluginService plugins) { try { xmlWriter.WriteStartDocument(true); xmlWriter.WriteStartElement("organizations", "urn://popmednet/organizations/metadata"); xmlWriter.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); xmlWriter.WriteAttributeString("xmlns", "xs", null, "http://www.w3.org/2001/XMLSchema"); foreach (Organization o in organizations) { Organization org = o; xmlWriter.WriteStartElement("organization"); #region Organization Header xmlWriter.WriteStartElement("header"); InsertStringValue(xmlWriter, "id", org.ID.ToString()); InsertStringValue(xmlWriter, "name", org.Name); InsertStringValue(xmlWriter, "acronym", org.Acronym); InsertStringValue(xmlWriter, "parentorganization", org.ParentOrganization != null ? org.ParentOrganization.Name : string.Empty); InsertStringValue(xmlWriter, "contactfullname", org.ContactFirstName + " " + org.ContactLastName); InsertStringValue(xmlWriter, "contactemail", org.ContactEmail); InsertStringValue(xmlWriter, "description", org.OrganizationDescription); InsertStringValue(xmlWriter, "collabrequest", org.SpecialRequirements); InsertStringValue(xmlWriter, "researchcapabilities", org.ObservationClinicalExperience); xmlWriter.WriteEndElement(); // end header element #endregion // There are a number of ways to represent these values. I've chosen to write each of them out, howver another // approach is the have a string enumeration similar to request status where we'd repeat the element, something // like "<participation>clinicaltrials</participation><participation>pragmaticclinicaltrials</participation> ..." xmlWriter.WriteStartElement("participation"); InsertStringValue(xmlWriter, "observationalresearch", org.ObservationalParticipation.ToString()); InsertStringValue(xmlWriter, "clinicaltrials", org.ProspectiveTrials.ToString()); InsertStringValue(xmlWriter, "pragmaticclinicaltrials", org.PragmaticClinicalTrials.ToString()); xmlWriter.WriteEndElement(); // end participation xmlWriter.WriteStartElement("typedatacollected"); InsertStringValue(xmlWriter, "inpatient", org.InpatientClaims.ToString()); InsertStringValue(xmlWriter, "outpatient", org.OutpatientClaims.ToString()); InsertStringValue(xmlWriter, "pharmacydispensings", org.OutpatientClaims.ToString()); InsertStringValue(xmlWriter, "enrollment", org.EnrollmentClaims.ToString()); InsertStringValue(xmlWriter, "demographics", org.DemographicsClaims.ToString()); InsertStringValue(xmlWriter, "laboratoryresults", org.LaboratoryResultsClaims.ToString()); InsertStringValue(xmlWriter, "vitalsigns", org.VitalSignsClaims.ToString()); InsertStringValue(xmlWriter, "biorepositories", org.Biorepositories.ToString()); InsertStringValue(xmlWriter, "patientreportedoutcomes", org.PatientReportedOutcomes.ToString()); InsertStringValue(xmlWriter, "patientreportedbehaviors", org.PatientReportedBehaviors.ToString()); InsertStringValue(xmlWriter, "prescriptionorders", org.PrescriptionOrders.ToString()); InsertStringValue(xmlWriter, "Other", org.OtherClaims.ToString()); InsertStringValue(xmlWriter, "Other", org.OtherClaimsText); xmlWriter.WriteEndElement(); // end typedatacollected xmlWriter.WriteStartElement("datamodels"); InsertStringValue(xmlWriter, "mscdm", org.DataModelMSCDM.ToString()); InsertStringValue(xmlWriter, "hmornvdw", org.DataModelHMORNVDW.ToString()); InsertStringValue(xmlWriter, "esp", org.DataModelESP.ToString()); InsertStringValue(xmlWriter, "i2b2", org.DataModelI2B2.ToString()); InsertStringValue(xmlWriter, "omop", org.DataModelOMOP.ToString()); InsertStringValue(xmlWriter, "other", org.DataModelOther.ToString()); InsertStringValue(xmlWriter, "otherText", org.DataModelOtherText); xmlWriter.WriteEndElement(); // end datamodels xmlWriter.WriteStartElement("electronichealthrecordssystems"); foreach (var e in org.EHRSes) { xmlWriter.WriteStartElement("ehr"); InsertStringValue(xmlWriter, "type", e.Type.ToString()); InsertStringValue(xmlWriter, "system", e.System.ToString()); InsertStringValue(xmlWriter, "startyear", e.StartYear.HasValue ? e.StartYear.Value.ToString() : null); InsertStringValue(xmlWriter, "endyear", e.EndYear.HasValue ? e.EndYear.Value.ToString() : null); xmlWriter.WriteEndElement(); // end ehr } ; xmlWriter.WriteEndElement(); // end electronichealthrecordssystems xmlWriter.WriteStartElement("registries"); foreach (var regOrg in org.Registries) { Registry registry = registries.Single(rr => rr.ID == regOrg.RegistryID); xmlWriter.WriteStartElement("registry"); InsertStringValue(xmlWriter, "type", registry.Type.ToString()); InsertStringValue(xmlWriter, "id", registry.ID.ToString()); InsertStringValue(xmlWriter, "name", registry.Name); InsertStringValue(xmlWriter, "description", registry.Description); InsertStringValue(xmlWriter, "RoPRUrl", registry.RoPRUrl); InsertStringValue(xmlWriter, "memberdescription", regOrg.Description); xmlWriter.WriteStartElement("classification"); foreach (var item in registry.Items.Where(i => i.Category == "Classification")) { InsertStringValue(xmlWriter, "item", item.Title); } ; xmlWriter.WriteEndElement(); // end classification xmlWriter.WriteStartElement("purpose"); foreach (var item in registry.Items.Where(i => i.Category == "Purpose")) { InsertStringValue(xmlWriter, "item", item.Title); } ; xmlWriter.WriteEndElement(); // end purpose xmlWriter.WriteStartElement("conditionofinterest"); foreach (var item in registry.Items.Where(i => i.Category == "Condition of Interest")) { InsertStringValue(xmlWriter, "item", item.Title); } ; xmlWriter.WriteEndElement(); // end purpose xmlWriter.WriteEndElement(); // end registry } ; xmlWriter.WriteEndElement(); // end registries element xmlWriter.WriteEndElement(); // end organization element xmlWriter.Flush(); } ; xmlWriter.WriteEndElement(); // end organizations element xmlWriter.WriteEndDocument(); } catch (Exception ex) { throw ex; } finally { //xmlWriter.Close(); } }
public static void Export(XmlWriter xmlWriter, IEnumerable <DataMart> dataMarts, Lpp.Dns.Portal.IPluginService plugins) { try { xmlWriter.WriteStartDocument(true); xmlWriter.WriteStartElement("datamarts", "urn://popmednet/datamarts/metadata"); xmlWriter.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); xmlWriter.WriteAttributeString("xmlns", "xs", null, "http://www.w3.org/2001/XMLSchema"); foreach (var d in dataMarts) { DataMart dm = d; xmlWriter.WriteStartElement("datamart"); #region DataMart Header xmlWriter.WriteStartElement("header"); InsertStringValue(xmlWriter, "id", dm.ID.ToString()); InsertStringValue(xmlWriter, "name", dm.Name); InsertStringValue(xmlWriter, "acronym", dm.Acronym); InsertStringValue(xmlWriter, "organization", dm.Organization.Name); InsertStringValue(xmlWriter, "contactfullname", dm.ContactFirstName + " " + dm.ContactLastName); InsertStringValue(xmlWriter, "contactemail", dm.ContactEmail); InsertStringValue(xmlWriter, "healthplandescription", dm.HealthPlanDescription); InsertStringValue(xmlWriter, "collabrequest", dm.SpecialRequirements); InsertStringValue(xmlWriter, "datamodel", dm.DataModel); InsertStringValue(xmlWriter, "datamodelother", dm.OtherDataModel); InsertStringValue(xmlWriter, "dataperiodstartyear", dm.StartDate.HasValue ? dm.StartDate.Value.ToShortDateString() : ""); InsertStringValue(xmlWriter, "dataperiodendyear", dm.EndDate.HasValue ? dm.EndDate.Value.ToShortDateString() : ""); InsertStringValue(xmlWriter, "dataupdatefrequency", dm.DataUpdateFrequency); xmlWriter.WriteEndElement(); // end header element #endregion #region Data Domains xmlWriter.WriteStartElement("datadomains"); //InPatient Encounters xmlWriter.WriteStartElement("inpatientencounters"); InsertStringValue(xmlWriter, "value", dm.InpatientEncountersAny.ToString()); InsertStringValue(xmlWriter, "encounterid", dm.InpatientEncountersEncounterID.ToString()); InsertStringValue(xmlWriter, "dateofservice", dm.InpatientDatesOfService.ToString()); InsertStringValue(xmlWriter, "providerfacilityid", dm.InpatientEncountersProviderIdentifier.ToString()); InsertStringValue(xmlWriter, "icd9diagnosis", dm.InpatientICD9Diagnosis.ToString()); InsertStringValue(xmlWriter, "icd10diagnosis", dm.InpatientICD10Diagnosis.ToString()); InsertStringValue(xmlWriter, "icd9procedure", dm.InpatientICD9Procedures.ToString()); InsertStringValue(xmlWriter, "icd10procedure", dm.InpatientICD10Procedures.ToString()); InsertStringValue(xmlWriter, "dischargestatus", dm.InpatientDischargeStatus.ToString()); InsertStringValue(xmlWriter, "disposition", dm.InpatientDisposition.ToString()); InsertStringValue(xmlWriter, "hphcs", dm.InpatientHPHCS.ToString()); InsertStringValue(xmlWriter, "snomed", dm.InpatientSNOMED.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.InpatientOther.ToString(), "name", dm.InpatientOtherText); xmlWriter.WriteEndElement(); // end inpatientencounters element //outpatient Encounters xmlWriter.WriteStartElement("outpatientencounters"); InsertStringValue(xmlWriter, "value", dm.OutpatientEncountersAny.ToString()); InsertStringValue(xmlWriter, "encounterid", dm.OutpatientEncountersEncounterID.ToString()); InsertStringValue(xmlWriter, "dateofservice", dm.OutpatientDatesOfService.ToString()); InsertStringValue(xmlWriter, "providerfacilityid", dm.OutpatientEncountersProviderIdentifier.ToString()); InsertStringValue(xmlWriter, "icd9diagnosis", dm.OutpatientICD9Diagnosis.ToString()); InsertStringValue(xmlWriter, "icd10diagnosis", dm.OutpatientICD10Diagnosis.ToString()); InsertStringValue(xmlWriter, "icd9procedure", dm.OutpatientICD9Procedures.ToString()); InsertStringValue(xmlWriter, "icd10procedure", dm.OutpatientICD10Procedures.ToString()); InsertStringValue(xmlWriter, "hphcs", dm.OutpatientHPHCS.ToString()); InsertStringValue(xmlWriter, "snomed", dm.OutpatientSNOMED.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.OutpatientOther.ToString(), "name", dm.OutpatientOtherText); xmlWriter.WriteEndElement(); // end outpatientencounters element //enrollment Encounters //xmlWriter.WriteStartElement("enrollmentencounters"); //InsertStringValue(xmlWriter, "patientid", dm.ERPatientID.ToString()); //InsertStringValue(xmlWriter, "encounterid", dm.EREncounterID.ToString()); //InsertStringValue(xmlWriter, "enrollmentdates", dm.ERICD9Diagnosis.ToString()); //InsertStringValue(xmlWriter, "encounterdates", dm.ERICD10Diagnosis.ToString()); //InsertStringValue(xmlWriter, "clinicalsettings", dm.ERClinicalSetting.ToString()); //InsertStringValue(xmlWriter, "icd9diagnosis", dm.ERICD9Diagnosis.ToString()); //InsertStringValue(xmlWriter, "icd10diagnosis", dm.ERICD10Diagnosis.ToString()); //InsertStringValue(xmlWriter, "hphcs", dm.ERHPHCS.ToString()); //InsertStringValue(xmlWriter, "ndc", dm.ERNDC.ToString()); //InsertStringValue(xmlWriter, "snomed", dm.ERSNOMED.ToString()); //InsertStringValue(xmlWriter, "provideridentiier", dm.ERProviderIdentifier.ToString()); //InsertStringValue(xmlWriter, "providerfacility", dm.ERProviderFacility.ToString()); //InsertStringValue(xmlWriter, "encountertype", dm.EREncounterType.ToString()); //InsertStringValue(xmlWriter, "drg", dm.ERDRG.ToString()); //InsertStringValue(xmlWriter, "drgtype", dm.ERDRGType.ToString()); //InsertStringValueWithAttribute(xmlWriter, "other", dm.EROther.ToString(), "name", dm.EROtherText); //xmlWriter.WriteEndElement(); // end enrollmentencounters element //Laboratory Results xmlWriter.WriteStartElement("laboratoryresults"); InsertStringValue(xmlWriter, "value", dm.LaboratoryResultsAny.ToString()); InsertStringValue(xmlWriter, "orderdates", dm.LaboratoryResultsOrderDates.ToString()); InsertStringValue(xmlWriter, "resultdates", dm.LaboratoryResultsDates.ToString()); InsertStringValue(xmlWriter, "testname", dm.LaboratoryResultsTestName.ToString()); InsertStringValue(xmlWriter, "testdescription", dm.LaboratoryResultsTestDescriptions.ToString()); InsertStringValue(xmlWriter, "testloinc", dm.LaboratoryResultsTestLOINC.ToString()); InsertStringValue(xmlWriter, "testsnomed", dm.LaboratoryResultsTestSNOMED.ToString()); InsertStringValue(xmlWriter, "testresultsinterpretation", dm.LaboratoryResultsTestResultsInterpretation.ToString()); InsertStringValueWithAttribute(xmlWriter, "testother", dm.LaboratoryResultsTestOther.ToString(), "name", dm.LaboratoryResultsTestOtherText); xmlWriter.WriteEndElement(); // end laboratoryresults element //prescription orders xmlWriter.WriteStartElement("prescriptionorders"); InsertStringValue(xmlWriter, "value", dm.PrescriptionOrdersAny.ToString()); InsertStringValue(xmlWriter, "ndc", dm.PrescriptionOrderNDC.ToString()); InsertStringValue(xmlWriter, "rxnorm", dm.PrescriptionOrderRxNorm.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.PrescriptionOrderOther.ToString(), "name", dm.PrescriptionOrderOtherText); xmlWriter.WriteEndElement(); // end prescription orders element //pharmacy dispensings xmlWriter.WriteStartElement("pharmacydispensings"); InsertStringValue(xmlWriter, "value", dm.PharmacyDispensingAny.ToString()); InsertStringValue(xmlWriter, "dates", dm.PharmacyDispensingDates.ToString()); InsertStringValue(xmlWriter, "ndc", dm.PharmacyDispensingNDC.ToString()); InsertStringValue(xmlWriter, "rxnorm", dm.PharmacyDispensingRxNorm.ToString()); InsertStringValue(xmlWriter, "dayssupply", dm.PharmacyDispensingDaysSupply.ToString()); InsertStringValue(xmlWriter, "amountdispensed", dm.PharmacyDispensingAmountDispensed.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.PharmacyDispensingOther.ToString(), "name", dm.PharmacyDispensingOtherText); xmlWriter.WriteEndElement(); // end pharmacy dispensings element //demographics xmlWriter.WriteStartElement("demographics"); InsertStringValue(xmlWriter, "value", dm.DemographicsAny.ToString()); InsertStringValue(xmlWriter, "patientid", dm.DemographicsPatientID.ToString()); InsertStringValue(xmlWriter, "sex", dm.DemographicsSex.ToString()); InsertStringValue(xmlWriter, "dateofbirth", dm.DemographicsDateOfBirth.ToString()); InsertStringValue(xmlWriter, "dateofdeath", dm.DemographicsDateOfDeath.ToString()); InsertStringValue(xmlWriter, "address", dm.DemographicsAddressInfo.ToString()); InsertStringValue(xmlWriter, "race", dm.DemographicsRace.ToString()); InsertStringValue(xmlWriter, "ethnicity", dm.DemographicsEthnicity.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.DemographicsOther.ToString(), "name", dm.DemographicsOtherText); xmlWriter.WriteEndElement(); // end demographics element //patient reported outcomes xmlWriter.WriteStartElement("patientreportedoutcomes"); InsertStringValue(xmlWriter, "value", dm.PatientOutcomesAny.ToString()); InsertStringValue(xmlWriter, "healthbehavior", dm.PatientOutcomesHealthBehavior.ToString()); InsertStringValue(xmlWriter, "hrqol", dm.PatientOutcomesHRQoL.ToString()); InsertStringValue(xmlWriter, "reportedoutcome", dm.PatientOutcomesReportedOutcome.ToString()); //InsertStringValueWithAttribute(xmlWriter, "instruments", dm.PatientOutcomesInstruments.ToString(), "name", dm.PatientOutcomesInstrumentText); InsertStringValueWithAttribute(xmlWriter, "other", dm.PatientOutcomesOther.ToString(), "name", dm.PatientOutcomesOtherText); xmlWriter.WriteEndElement(); // end patient reported outcomes element //patient reported behavior //xmlWriter.WriteStartElement("patientreportedbehavior"); //InsertStringValue(xmlWriter, "healthbehavior", dm.PatientOutcomesHealthBehavior.ToString()); //InsertStringValueWithAttribute(xmlWriter, "instruments", dm.PatientBehaviorInstruments.ToString(), "name", dm.PatientBehaviorInstrumentText); //InsertStringValueWithAttribute(xmlWriter, "other", dm.PatientBehaviorOther.ToString(), "name", dm.PatientBehaviorOtherText); //xmlWriter.WriteEndElement(); // end patient reported behavior element //vital signs xmlWriter.WriteStartElement("vitalsigns"); InsertStringValue(xmlWriter, "value", dm.VitalSignsAny.ToString()); InsertStringValue(xmlWriter, "temperature", dm.VitalSignsTemperature.ToString()); InsertStringValue(xmlWriter, "height", dm.VitalSignsHeight.ToString()); InsertStringValue(xmlWriter, "weight", dm.VitalSignsWeight.ToString()); InsertStringValue(xmlWriter, "bmi", dm.VitalSignsBMI.ToString()); InsertStringValue(xmlWriter, "bloodpressure", dm.VitalSignsBloodPressure.ToString()); InsertStringValueWithAttribute(xmlWriter, "other", dm.VitalSignsOther.ToString(), "name", dm.VitalSignsOtherText); xmlWriter.WriteEndElement(); // end vital signs outcomes element //longtitudinal capture xmlWriter.WriteStartElement("longtitudinalcapture"); InsertStringValue(xmlWriter, "value", dm.LongitudinalCaptureAny.ToString()); InsertStringValue(xmlWriter, "patientid", dm.LongitudinalCapturePatientID.ToString()); InsertStringValue(xmlWriter, "capturestart", dm.LongitudinalCaptureStart.ToString()); InsertStringValue(xmlWriter, "capturestop", dm.LongitudinalCaptureStop.ToString()); InsertStringValue(xmlWriter, "other", dm.LongitudinalCaptureOther.ToString()); xmlWriter.WriteEndElement(); // end longtitudinal capture //bio repositories xmlWriter.WriteStartElement("biorepositories"); InsertStringValue(xmlWriter, "value", dm.BiorepositoriesAny.ToString()); //InsertStringValue(xmlWriter, "name", dm.BiorepositoriesName.ToString()); //InsertStringValue(xmlWriter, "description", dm.BiorepositoriesDescription.ToString()); //InsertStringValue(xmlWriter, "diseasename", dm.BiorepositoriesDiseaseName.ToString()); //InsertStringValue(xmlWriter, "specimensource", dm.BiorepositoriesSpecimenSource.ToString()); //InsertStringValue(xmlWriter, "specimenttype", dm.BiorepositoriesSpecimenType.ToString()); //InsertStringValue(xmlWriter, "processingmethod", dm.BiorepositoriesProcessingMethod.ToString()); //InsertStringValue(xmlWriter, "snomed", dm.BiorepositoriesSNOMED.ToString()); //InsertStringValue(xmlWriter, "storagemethod", dm.BiorepositoriesStorageMethod.ToString()); //InsertStringValueWithAttribute(xmlWriter, "other", dm.BiorepositoriesOther.ToString(), "name", dm.BiorepositoriesOtherText); xmlWriter.WriteEndElement(); // end bio repositories outcomes element xmlWriter.WriteEndElement(); // end datadomain element #endregion #region Installed Models xmlWriter.WriteStartElement("installedmodels"); var pluginModels = plugins.GetAllPlugins().SelectMany(p => p.Models.Select(m => new { p, m })); foreach (var mm in dm.Models) { var m = mm; IDnsModel model = null; if (pluginModels.Any(pm => pm.m.ID == m.ModelID)) { model = pluginModels.Where(pm => pm.m.ID == m.ModelID).Select(pm => pm.m).FirstOrDefault(); InsertStringValue(xmlWriter, "name", model.Name); } } ; xmlWriter.WriteEndElement(); // end installed models element #endregion xmlWriter.WriteEndElement(); // end data mart element xmlWriter.Flush(); } ; xmlWriter.WriteEndElement(); // end datamarts element xmlWriter.WriteEndDocument(); } catch (Exception ex) { throw ex; } finally { //xmlWriter.Close(); } }
public static void Export(XmlWriter xmlWriter, IEnumerable <ExportedRequestSearchResult> requests, List <ExportedRequestSearchRoutingResult> routings, Lpp.Dns.Portal.IPluginService plugins) { try { xmlWriter.WriteStartDocument(true); xmlWriter.WriteStartElement("requests", "urn://popmednet/requests/metadata"); xmlWriter.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); xmlWriter.WriteAttributeString("xmlns", "xs", null, "http://www.w3.org/2001/XMLSchema"); foreach (var rr in requests) { var request = rr; xmlWriter.WriteStartElement("request"); #region Request Header xmlWriter.WriteStartElement("header"); xmlWriter.WriteStartElement("requestType"); InsertStringValue(xmlWriter, "name", request.RequestType); InsertStringValue(xmlWriter, "id", request.RequestTypeID.ToString()); xmlWriter.WriteEndElement(); // end requestType element InsertStringValue(xmlWriter, "id", request.Identifier.ToString()); InsertStringValue(xmlWriter, "name", request.RequestName); InsertStringValue(xmlWriter, "requestid", request.MSRequestID); InsertStringValue(xmlWriter, "description", request.Description); xmlWriter.WriteElementString("priority", "Normal"); InsertDateValue(xmlWriter, "dueDate", request.DueDate); InsertDateValue(xmlWriter, "submittedOn", request.SubmittedOn); InsertUserValue(xmlWriter, "createdBy", request.CreatedByUserName, request.CreatedByOrganization, request.CreatedByEmail); InsertDateValue(xmlWriter, "createdOn", request.CreatedOn); InsertUserValue(xmlWriter, "updatedBy", request.UpdatedByUserName, request.UpdatedByOrganization, request.UpdatedByEmail); InsertDateValue(xmlWriter, "updatedOn", request.UpdatedOn); InsertStringValue(xmlWriter, "purposeOfUse", request.PurposeOfUse); xmlWriter.WriteElementString("phiDisclosureLevel", request.LevelOfPHIDisclosure); xmlWriter.WriteStartElement("activity"); InsertStringValue(xmlWriter, "id", request.ActivityProjectID.HasValue ? request.ActivityProjectID.Value.ToString("D") : null); InsertStringValue(xmlWriter, "description", request.ActivityProject); xmlWriter.WriteEndElement(); // end activity element xmlWriter.WriteStartElement("group"); InsertStringValue(xmlWriter, "name", request.Group); InsertStringValue(xmlWriter, "description", null); // TODO: define group description xmlWriter.WriteEndElement(); // end group element xmlWriter.WriteStartElement("project"); InsertStringValue(xmlWriter, "name", request.Project); xmlWriter.WriteElementString("description", request.ProjectDescription); xmlWriter.WriteEndElement(); // end project element xmlWriter.WriteEndElement(); // end header element #endregion #region Body /* * xmlWriter.WriteStartElement("body"); * xmlWriter.WriteStartElement("criteria"); * xmlWriter.WriteStartElement("codes"); * * xmlWriter.WriteStartElement("idc9Diagnosis"); * xmlWriter.WriteElementString("code", "250.01"); * xmlWriter.WriteElementString("description", "description"); * xmlWriter.WriteEndElement(); // end idc9Diagnosis element * xmlWriter.WriteStartElement("observationRange"); * xmlWriter.WriteElementString("startDate", "2011-03-30T09:30:10Z"); * xmlWriter.WriteElementString("endDate", "2012-03-30T09:30:10Z"); * xmlWriter.WriteEndElement(); // end observationRange element * xmlWriter.WriteEndElement(); // end criteria element * * xmlWriter.WriteStartElement("report"); * xmlWriter.WriteElementString("ageRange", "01-05,06-18,19-30,31-65,66+"); * xmlWriter.WriteElementString("race", "white,black, ..."); * xmlWriter.WriteEndElement(); // end report element * xmlWriter.WriteEndElement(); // end body element * xmlWriter.Flush(); */ #endregion #region Routing - DataMarts xmlWriter.WriteStartElement("routing"); foreach (var requestRouting in routings.Where(rt => rt.RequestID == request.RequestID).GroupBy(k => new { k.DataMartID, k.DataMart, k.Organization, k.Status })) { xmlWriter.WriteStartElement("dataMart"); InsertDataMart(xmlWriter, requestRouting.Key.DataMartID, requestRouting.Key.DataMart, requestRouting.Key.Organization); xmlWriter.WriteElementString("status", requestRouting.Key.Status.ToString()); //var currentCount = requestRouting.Responses.Max(r => r.Count); //foreach(var response in requestRouting.Responses){ // InsertRoutingInstance(xmlWriter, "instance", response, response.Count == currentCount); //} foreach (var response in requestRouting.OrderByDescending(x => x.ResponseIndex)) { InsertRoutingInstance(xmlWriter, "instance", response); } xmlWriter.WriteEndElement(); } ; xmlWriter.WriteEndElement(); // end routing element #endregion xmlWriter.WriteEndElement(); // end request element xmlWriter.Flush(); } ; xmlWriter.WriteEndElement(); // end requests element xmlWriter.WriteEndDocument(); } catch (Exception ex) { throw ex; } finally { //xmlWriter.Close(); } }