コード例 #1
0
        public Structure HarvestStructure(Hl7.Fhir.Model.Profile.ProfileStructureComponent source, Uri uri)
        {
            Structure target = new Structure();

            target.Name            = source.Name;
            target.Type            = source.Type;
            target.NameSpacePrefix = FhirNamespaceManager.Fhir;
            PrepareSlices(source);
            HarvestElements(source, target);
            fixUris(target, uri);
            return(target);
        }
コード例 #2
0
 public void PrepareSlices(Hl7.Fhir.Model.Profile.ProfileStructureComponent source)
 {
     if (source.Snapshot == null)
     {
         throw Error.Argument("source", "Structure must have a differential representation");
     }
     foreach (Hl7.Fhir.Model.Profile.ElementComponent e in source.Snapshot.Element)
     {
         if (e.Slicing != null)
         {
             Slicing s = PrepareSlice(e);
             Slicings.Add(s);
         }
     }
 }
コード例 #3
0
        private void HarvestElements(Hl7.Fhir.Model.Profile.ProfileStructureComponent source, Structure target)
        {
            if (source.Snapshot == null)
            {
                throw Error.Argument("source", "Structure must have a differential representation");
            }

            foreach (Hl7.Fhir.Model.Profile.ElementComponent component in source.Snapshot.Element)
            {
                if (component.Slicing == null)
                {
                    var element = HarvestElement(component);
                    target.Elements.Add(element);
                }

                /*if (!target.Root.HasElements)
                 *  target.Root.IsPrimitive == true; */
                // of moet structure zelf een IsPrimitive krijgen?
            }
        }
コード例 #4
0
        public static void SerializeProfileStructureComponent(Hl7.Fhir.Model.Profile.ProfileStructureComponent value, IFhirWriter writer, bool summary)
        {
            writer.WriteStartComplexContent();

            // Serialize element _id
            if (value.LocalIdElement != null)
            {
                writer.WritePrimitiveContents("_id", value.LocalIdElement, XmlSerializationHint.Attribute);
            }

            // Serialize element extension
            if (value.Extension != null && !summary && value.Extension.Count > 0)
            {
                writer.WriteStartArrayElement("extension");
                foreach (var item in value.Extension)
                {
                    writer.WriteStartArrayMember("extension");
                    ExtensionSerializer.SerializeExtension(item, writer, summary);
                    writer.WriteEndArrayMember();
                }
                writer.WriteEndArrayElement();
            }

            // Serialize element type
            if (value.TypeElement != null)
            {
                writer.WriteStartElement("type");
                CodeSerializer.SerializeCode(value.TypeElement, writer, summary);
                writer.WriteEndElement();
            }

            // Serialize element name
            if (value.NameElement != null)
            {
                writer.WriteStartElement("name");
                FhirStringSerializer.SerializeFhirString(value.NameElement, writer, summary);
                writer.WriteEndElement();
            }

            // Serialize element publish
            if (value.PublishElement != null)
            {
                writer.WriteStartElement("publish");
                FhirBooleanSerializer.SerializeFhirBoolean(value.PublishElement, writer, summary);
                writer.WriteEndElement();
            }

            // Serialize element purpose
            if (value.PurposeElement != null)
            {
                writer.WriteStartElement("purpose");
                FhirStringSerializer.SerializeFhirString(value.PurposeElement, writer, summary);
                writer.WriteEndElement();
            }

            // Serialize element element
            if (value.Element != null && value.Element.Count > 0)
            {
                writer.WriteStartArrayElement("element");
                foreach (var item in value.Element)
                {
                    writer.WriteStartArrayMember("element");
                    ProfileSerializer.SerializeElementComponent(item, writer, summary);
                    writer.WriteEndArrayMember();
                }
                writer.WriteEndArrayElement();
            }


            writer.WriteEndComplexContent();
        }
コード例 #5
0
        /// <summary>
        /// Parse ProfileStructureComponent
        /// </summary>
        public static Hl7.Fhir.Model.Profile.ProfileStructureComponent ParseProfileStructureComponent(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.Profile.ProfileStructureComponent existingInstance = null)
        {
            Hl7.Fhir.Model.Profile.ProfileStructureComponent result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.Profile.ProfileStructureComponent();
            string currentElementName = reader.CurrentElementName;

            reader.EnterElement();

            while (reader.HasMoreElements())
            {
                var atName = reader.CurrentElementName;
                // Parse element extension
                if (atName == "extension")
                {
                    result.Extension = new List <Hl7.Fhir.Model.Extension>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "extension"))
                    {
                        result.Extension.Add(ExtensionParser.ParseExtension(reader, errors));
                    }

                    reader.LeaveArray();
                }

                // Parse element _id
                else if (atName == "_id")
                {
                    result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id)));
                }

                // Parse element type
                else if (atName == "type")
                {
                    result.TypeElement = CodeParser.ParseCode(reader, errors);
                }

                // Parse element name
                else if (atName == "name")
                {
                    result.NameElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element publish
                else if (atName == "publish")
                {
                    result.PublishElement = FhirBooleanParser.ParseFhirBoolean(reader, errors);
                }

                // Parse element purpose
                else if (atName == "purpose")
                {
                    result.PurposeElement = FhirStringParser.ParseFhirString(reader, errors);
                }

                // Parse element element
                else if (atName == "element")
                {
                    result.Element = new List <Hl7.Fhir.Model.Profile.ElementComponent>();
                    reader.EnterArray();

                    while (ParserUtils.IsAtArrayElement(reader, "element"))
                    {
                        result.Element.Add(ProfileParser.ParseElementComponent(reader, errors));
                    }

                    reader.LeaveArray();
                }

                else
                {
                    errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader);
                    reader.SkipSubElementsFor(currentElementName);
                    result = null;
                }
            }

            reader.LeaveElement();
            return(result);
        }