/// <summary> /// Creates the organizer /// </summary> /// <returns>A CDA birth event organizer</returns> public override POCD_MT000040Organizer ToPocdOrganizer() { POCD_MT000040Organizer returnVal = base.ToPocdOrganizer(); // *** Create subject from observations *** CdaSubject babySubject = this.CreateBabySubject(); returnVal.subject = babySubject.ToPocdSubject(); return(returnVal); }
/// <summary> /// Generates an entry containing the organizer /// </summary> /// <returns>A CDA entry object</returns> public virtual POCD_MT000040Entry ToPocdOrganizerEntry() { // *** Create an entry *** POCD_MT000040Entry newEntry = new POCD_MT000040Entry(); // *** Create organizer *** POCD_MT000040Organizer organizer = this.ToPocdOrganizer(); // *** Add it to entry *** if (organizer != null) { newEntry.Item = organizer; } return(newEntry); }
/// <summary> /// Generates the organizer (without an entry) /// </summary> /// <returns>A CDA organizer object</returns> public virtual POCD_MT000040Organizer ToPocdOrganizer() { // *** Create organizer *** POCD_MT000040Organizer organizer = new POCD_MT000040Organizer(); // *** Set the organizer attributes *** organizer.classCode = this.ClassCode; organizer.moodCode = "EVN"; // *** Template Id's *** organizer.templateId = this.TemplateIds.ToPocd(); // *** Organizer Code *** organizer.code = this.OrganizerCode.ToCD(); // *** Organizer shall have id *** organizer.id = new II[] { new II() { root = Guid.NewGuid().ToString() } }; organizer.statusCode = new CS() { code = "completed" }; // *** Start/End of pregnancy *** organizer.effectiveTime = this.EffectiveTime.ToIvlTs(); // *** Create a list of components for the observations *** List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>(); foreach (var item in this.Observations) { // *** Create a component *** POCD_MT000040Component4 component = new POCD_MT000040Component4(); // *** Add observation to component *** component.Item = item.ToPocd(); // *** Add component to list *** componentList.Add(component); } // *** Get any additional components that the organizer may need *** List <POCD_MT000040Component4> additional = this.GetAdditionalComponents(); // *** Add them if they exist *** if (additional != null) { if (additional.Count > 0) { componentList.AddRange(additional); } } // *** Add component array to organizer *** organizer.component = componentList.ToArray(); return(organizer); }
// *** Sample code from IHE PCC TF *** //<entry> // <organizer classCode='CLUSTER' moodCode='EVN'> // <templateId root='2.16.840.1.113883.10.20.1.23'/> // <templateId root='1.3.6.1.4.1.19376.1.5.3.1.4.15'/> // <subject typeCode='SBJ'> // <relatedSubject classCode='PRS'> // <code code='' displayName='' codeSystem='2.16.840.1.113883.5.111' codeSystemName='RoleCode'/> // <subject> // <sdtc:id root='' extension=''/> // <administrativeGenderCode code='' displayName='' codeSystem='' codeSystemName=''/> // </subject> // </relatedSubject> // </subject> // <!-- zero or more participants linking to other relations --> // <participant typeCode='IND'> // <participantRole classCode='PRS'> // <code code='' displayName='' codeSystem='2.16.840.1.113883.5.111' codeSystemName='RoleCode'/> // <playingEntity classCode='PSN'> // <sdtc:id root='' extension=''/> // </playingEntity> // </participantRole> // </participant> // <!-- one or more entry relationships for family history observations --> // <component typeCode='COMP'> // <observation classCode='OBS' moodCode='EVN'> // <templateId root='2.16.840.1.113883.10.20.1.22'/> // </observation> // </component> // </organizer> //</entry> public override POCD_MT000040Component3 ToPocdComponent() { if (this.Observations.Count == 0) { this.Narrative = "(No Data)"; } // *** Create the component *** POCD_MT000040Component3 returnVal = base.ToPocdComponent(); // *** There is one "organizer" per family member *** // *** Add the text *** //returnVal.section.text = this.GetSectionText(); // *** Create list of entries *** List <POCD_MT000040Entry> entryList = new List <POCD_MT000040Entry>(); // *** If we don't have anything *** if (this.UnknownObservation != null) { // *** Create an entry *** POCD_MT000040Entry newEntry = new POCD_MT000040Entry(); // *** Each entry has one organizer *** POCD_MT000040Organizer organizer = new POCD_MT000040Organizer(); // *** Set the organizer attributes *** organizer.classCode = x_ActClassDocumentEntryOrganizer.CLUSTER; organizer.moodCode = "EVN"; // *** Create the template ids *** CdaTemplateIdList ids = new CdaTemplateIdList("2.16.840.1.113883.10.20.1.23", "1.3.6.1.4.1.19376.1.5.3.1.4.15"); organizer.templateId = ids.ToPocd(); organizer.statusCode = new CS() { code = "completed" }; CdaSubject cdaSubject = new CdaSubject() { FamilyMember = Hl7FamilyMember.FamilyMember }; // *** Add the subject to the organizer *** organizer.subject = cdaSubject.ToPocdSubject(); // *** Create a list of components for the observations for this family member *** List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>(); // *** Create a component *** POCD_MT000040Component4 component = new POCD_MT000040Component4(); // *** Add observation to component *** component.Item = this.UnknownObservation.ToPocd(); // *** Add component to list *** componentList.Add(component); // *** Add component array to organizer *** organizer.component = componentList.ToArray(); // *** Add organizer to entry *** newEntry.Item = organizer; // *** Add entry to the list *** entryList.Add(newEntry); } else { // *** Loop through family members *** foreach (Hl7FamilyMember key in this.Observations.Keys) { // *** Create an entry *** POCD_MT000040Entry newEntry = new POCD_MT000040Entry(); // *** Each entry has one organizer *** POCD_MT000040Organizer organizer = new POCD_MT000040Organizer(); // *** Set the organizer attributes *** organizer.classCode = x_ActClassDocumentEntryOrganizer.CLUSTER; organizer.moodCode = "EVN"; // *** Create the template ids *** CdaTemplateIdList ids = new CdaTemplateIdList("2.16.840.1.113883.10.20.1.23", "1.3.6.1.4.1.19376.1.5.3.1.4.15"); organizer.templateId = ids.ToPocd(); organizer.statusCode = new CS() { code = "completed" }; //// *** Create the subject *** //POCD_MT000040Subject subject = new POCD_MT000040Subject() { typeCode = ParticipationTargetSubject.SBJ, typeCodeSpecified = true }; //// *** Create the related subject *** //POCD_MT000040RelatedSubject relatedSubject = new POCD_MT000040RelatedSubject() { classCode = x_DocumentSubject.PRS }; //// *** Create the role and add as code *** //CdaRoleCode roleCode = new CdaRoleCode() { FamilyMember = key }; //relatedSubject.code = roleCode.ToCe(); //// *** Add the related subject to the subject *** //subject.relatedSubject = relatedSubject; CdaSubject cdaSubject = new CdaSubject() { FamilyMember = key }; // *** Add the subject to the organizer *** organizer.subject = cdaSubject.ToPocdSubject(); // *** Create a list of components for the observations for this family member *** List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>(); // *** Loop through all observations for this family member *** foreach (CdaCodeObservation obs in this.Observations[key]) { // *** Create a component *** POCD_MT000040Component4 component = new POCD_MT000040Component4(); // *** Add observation to component *** component.Item = obs.ToPocd(); // *** Add component to list *** componentList.Add(component); } // *** Add component array to organizer *** organizer.component = componentList.ToArray(); // *** Add organizer to entry *** newEntry.Item = organizer; // *** Add entry to the list *** entryList.Add(newEntry); } } // *** Add entry list to section *** returnVal.section.entry = entryList.ToArray(); return(returnVal); }
/// <summary> /// Create the component to add to the document /// </summary> /// <returns></returns> public override POCD_MT000040Component3 ToPocdComponent() { if ((string.IsNullOrWhiteSpace(this.Narrative)) && (this.MenstrualHistoryObservations.Count == 0)) { this.Narrative = "(No Data)"; } POCD_MT000040Component3 returnVal = base.ToPocdComponent(); // *** And entries *** List <POCD_MT000040Entry> entryList = new List <POCD_MT000040Entry>(); // *** Create an entry *** POCD_MT000040Entry newEntry = new POCD_MT000040Entry(); // *** Create menstrual history organizer *** POCD_MT000040Organizer organizer = new POCD_MT000040Organizer(); // *** Set the organizer attributes *** //organizer.classCode = x_ActClassDocumentEntryOrganizer.CLUSTER; organizer.moodCode = "EVN"; organizer.statusCode = new CS() { code = "active" }; // *** Menstrual History Organizer Code *** CdaCode orgCode = new CdaCode() { Code = "49033-4", CodeSystem = CodingSystem.Loinc, DisplayName = "Menstrual History" }; organizer.code = orgCode.ToCD(); // *** Create a list of components for the observations *** List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>(); foreach (var item in this.MenstrualHistoryObservations) { // *** Create a component *** POCD_MT000040Component4 component = new POCD_MT000040Component4(); // *** Add observation to component *** component.Item = item.ToPocd(); // *** Add component to list *** componentList.Add(component); } // *** Add component array to organizer *** organizer.component = componentList.ToArray(); // *** Add organizer to entry *** newEntry.Item = organizer; // *** Add entry to the list *** entryList.Add(newEntry); // *** Add entry list to section *** returnVal.section.entry = entryList.ToArray(); return(returnVal); }
/// <summary> /// Create the component to add to the document /// </summary> /// <returns></returns> public override POCD_MT000040Component5 ToPocdComponent5() { if (this.Observations.Count == 0) { this.Narrative = "(No Data)"; } POCD_MT000040Component5 returnVal = base.ToPocdComponent5(); // *** Check if we have entries *** if (this.Observations.Count > 0) { // *** And entries *** List <POCD_MT000040Entry> entryList = new List <POCD_MT000040Entry>(); // *** Create an entry *** POCD_MT000040Entry newEntry = new POCD_MT000040Entry(); // *** Create vital signs organizer *** POCD_MT000040Organizer organizer = new POCD_MT000040Organizer(); // *** Set the organizer attributes *** organizer.classCode = x_ActClassDocumentEntryOrganizer.CLUSTER; organizer.moodCode = "EVN"; // *** Template Id's *** CdaTemplateIdList orgIds = new CdaTemplateIdList("2.16.840.1.113883.10.20.1.32", "2.16.840.1.113883.10.20.1.35", "1.3.6.1.4.1.19376.1.5.3.1.4.13.1"); organizer.templateId = orgIds.ToPocd(); // *** Vital Signs Organizer Code *** CdaCode orgCode = new CdaCode() { Code = "46680005", CodeSystem = CodingSystem.SnomedCT, DisplayName = "Vital Signs" }; organizer.code = orgCode.ToCD(); // *** Organizer shall have id *** organizer.id = new II[] { new II() { root = Guid.NewGuid().ToString() } }; organizer.statusCode = new CS() { code = "completed" }; // *** Note: Using first observation's date/time *** // *** Effective Time of observations *** organizer.effectiveTime = this.Observations[0].EffectiveTime.ToIvlTs(); // *** Create a list of components for the observations *** List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>(); foreach (var item in this.Observations) { // *** Create a component *** POCD_MT000040Component4 component = new POCD_MT000040Component4(); // *** Add observation to component *** component.Item = item.ToPocd(); // *** Add component to list *** componentList.Add(component); } // *** Add component array to organizer *** organizer.component = componentList.ToArray(); // *** Add organizer to entry *** newEntry.Item = organizer; // *** Add entry to the list *** entryList.Add(newEntry); // *** Add entry list to section *** returnVal.section.entry = entryList.ToArray(); } return(returnVal); }