diff --git a/src/Microsoft.Health.Fhir.SpecManager/Language/CSharpFirely2.cs b/src/Microsoft.Health.Fhir.SpecManager/Language/CSharpFirely2.cs index 3dd0fa01a..dff6cefbe 100644 --- a/src/Microsoft.Health.Fhir.SpecManager/Language/CSharpFirely2.cs +++ b/src/Microsoft.Health.Fhir.SpecManager/Language/CSharpFirely2.cs @@ -1492,11 +1492,24 @@ private void WriteCodedElement( element, subset, out string summary, + out string isModifier, out string choice, out string allowedTypes, out string resourceReferences); - _writer.WriteLineIndented($"[FhirElement(\"{element.Name}\"{summary}, Order={GetOrder(element)}{choice})]"); + /* Exceptions: + * o OperationOutcome.issue.severity does not have `IsModifier` anymore since R4. + */ + + if (element.Path == "OperationOutcome.issue.severity") + { + _writer.WriteLineIndented($"[FhirElement(\"{element.Name}\"{summary}, IsModifier=true, Order={GetOrder(element)}{choice})]"); + _writer.WriteLineIndented($"[FhirElement(\"{element.Name}\"{summary}, Order={GetOrder(element)}{choice}, Since=FhirRelease.R4)]"); + } + else + { + _writer.WriteLineIndented($"[FhirElement(\"{element.Name}\"{summary}{isModifier}, Order={GetOrder(element)}{choice})]"); + } if (hasDefinedEnum) { @@ -1686,6 +1699,7 @@ private void WriteElement( element, subset, out string summary, + out string isModifier, out string choice, out string allowedTypes, out string resourceReferences); @@ -1698,15 +1712,15 @@ private void WriteElement( * automate this, by scanning differences between 3/4/5/6/7 etc.. */ if (element.Path == "Meta.source") { - _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}, Order={GetOrder(element)}{choice}, Since=FhirRelease.R4)]"); + _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}{isModifier}, Order={GetOrder(element)}{choice}, Since=FhirRelease.R4)]"); } else if (element.Path == "Reference.type") { - _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}, Order={GetOrder(element)}{choice}, Since=FhirRelease.R4)]"); + _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}{isModifier}, Order={GetOrder(element)}{choice}, Since=FhirRelease.R4)]"); } else { - _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}, Order={GetOrder(element)}{choice})]"); + _writer.WriteLineIndented($"[FhirElement(\"{name}\"{summary}{isModifier}, Order={GetOrder(element)}{choice})]"); } if (element.Path == "Meta.profile") @@ -1991,6 +2005,7 @@ private void BuildElementOptionals( FhirElement element, GenSubset subset, out string summary, + out string isModifier, out string choice, out string allowedTypes, out string resourceReferences) @@ -1999,6 +2014,7 @@ private void BuildElementOptionals( allowedTypes = string.Empty; resourceReferences = string.Empty; summary = element.IsSummary ? ", InSummary=true" : string.Empty; + isModifier = element.IsModifier ? ", IsModifier=true" : string.Empty; bool inCommon = subset.HasFlag(GenSubset.Common); diff --git a/src/Microsoft.Health.Fhir.SpecManager/Models/FhirElement.cs b/src/Microsoft.Health.Fhir.SpecManager/Models/FhirElement.cs index aa91ce5d5..dc4b4c23b 100644 --- a/src/Microsoft.Health.Fhir.SpecManager/Models/FhirElement.cs +++ b/src/Microsoft.Health.Fhir.SpecManager/Models/FhirElement.cs @@ -8,7 +8,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using Microsoft.Health.Fhir.SpecManager.Extensions; namespace Microsoft.Health.Fhir.SpecManager.Models @@ -141,7 +140,7 @@ public FhirElement( } IsModifier = isModifier == true; - IsSummary = (isSummary == true) || IsModifier; + IsSummary = isSummary == true; DefaultFieldName = defaultFieldName; DefaultFieldValue = defaultFieldValue;