Esempio n. 1
0
        /// <summary>Writes a primitive type.</summary>
        /// <param name="primitive">The primitive.</param>
        private void WritePrimitiveType(
            FhirPrimitive primitive)
        {
            string experimental = primitive.IsExperimental ? " (experimental)" : string.Empty;

            _writer.WriteLineIndented(
                $"- {primitive.Name}:" +
                $" {primitive.NameForExport(FhirTypeBase.NamingConvention.CamelCase)}" +
                $"::{primitive.TypeForExport(FhirTypeBase.NamingConvention.CamelCase, _primitiveTypeMap)}" +
                $"{experimental}");

            _writer.IncreaseIndent();

            // check for regex
            if (!string.IsNullOrEmpty(primitive.ValidationRegEx))
            {
                _writer.WriteLineIndented($"[{primitive.ValidationRegEx}]");
            }

            if (_info.ExtensionsByPath.ContainsKey(primitive.Path))
            {
                WriteExtensions(_info.ExtensionsByPath[primitive.Path].Values);
            }

            if (_info.ProfilesByBaseType.ContainsKey(primitive.Path))
            {
                WriteProfiles(_info.ProfilesByBaseType[primitive.Path].Values);
            }

            _writer.DecreaseIndent();
        }
Esempio n. 2
0
        /// <summary>Adds a primitive node to 'primitive'.</summary>
        /// <param name="elements"> The elements.</param>
        /// <param name="primitive">The primitive.</param>
        private void AddPrimitive(
            Dictionary <string, CytoElement> elements,
            FhirPrimitive primitive)
        {
            if (elements.ContainsKey(primitive.Name))
            {
                elements[primitive.Name].Data.Weight += _weightIncrement;

                if (elements[primitive.Name].Data.Weight > _maxNodeWeight)
                {
                    _maxNodeWeight = (decimal)elements[primitive.Name].Data.Weight;
                }

                return;
            }

            CytoElement cy = new CytoElement()
            {
                Group = CytoElement.GroupNodes,
                Data  = new CytoElementDataNode()
                {
                    Id     = primitive.Name,
                    Name   = primitive.Name,
                    Weight = _weightIncrement,
                    Group  = _nodeGroupMap[FhirNodeInfo.FhirNodeType.Primitive],
                },
            };

            elements.Add(primitive.Name, cy);

            TryRecurse(
                elements,
                primitive.Name,
                FhirNodeInfo.FhirNodeType.Primitive,
                primitive.BaseTypeName);
        }