Esempio n. 1
0
        public void AddServiceEvent(Composition header, XElement element)
        {
            if (header == null || element == null)
            {
                return;
            }

            var serviceEvent = new Composition.EventComponent
            {
                Period = new Period()
            };

            foreach (var child in element.Elements())
            {
                switch (child.Name.LocalName)
                {
                case "effectiveTime":
                    serviceEvent.Period.StartElement = FromXml(new FhirDateTimeParser(), child.CdaElement("low"));
                    serviceEvent.Period.EndElement   = FromXml(new FhirDateTimeParser(), child.CdaElement("high"));
                    break;

                case "performer":
                    var performer = FromXml(new PractitionerParser(Bundle), child.CdaElement("assignedEntity"));

                    if (performer != null)
                    {
                        serviceEvent.AddExtension(
                            "http://hl7.org/fhir/us/ccda/StructureDefinition/CCDA-on-FHIR-Performer",
                            performer.GetResourceReference());
                    }
                    break;
                }
            }

            if (serviceEvent.Period?.StartElement == null)
            {
                Errors.Add(ParserError.CreateParseError(element, "does NOT have effectiveTime.low element",
                                                        ParseErrorLevel.Warning));
            }

            header.Event.Add(serviceEvent);
        }