Exemplo n.º 1
0
        protected override List <POCD_MT000040Component4> GetAdditionalComponents()
        {
            List <POCD_MT000040Component4> componentList = new List <POCD_MT000040Component4>();

            // *** Add organizers to list ***
            foreach (var org in this.BirthEventOrganizers.Values)
            {
                // *** Create a component ***
                POCD_MT000040Component4 component = new POCD_MT000040Component4();

                // *** Add observation to component ***
                component.Item = org.ToPocdOrganizer();

                // *** Add component to list ***
                componentList.Add(component);
            }

            return(componentList);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }