Exemplo n.º 1
0
        // Note: this modifies an SD that is passed to us and will alter a possibly cached
        // object shared amongst other threads. This is generally useful and saves considerable
        // time when the same snapshot is needed again, but may result in side-effects
        private OperationOutcome snapshotGenerationNeeded(StructureDefinition definition)
        {
            if (!Settings.GenerateSnapshot)
            {
                return(new OperationOutcome());
            }

            // Default implementation: call event
            if (OnSnapshotNeeded != null)
            {
                var eventData = new OnSnapshotNeededEventArgs(definition, Settings.ResourceResolver);
                OnSnapshotNeeded(this, eventData);
                return(eventData.Result);
            }

            // Else, expand, depending on our configuration
#if REUSE_SNAPSHOT_GENERATOR
            var generator = this.SnapshotGenerator;
            if (generator != null)
            {
                generator.Update(definition);

#if DEBUG
                string xml  = (new FhirXmlSerializer()).SerializeToString(definition);
                string name = definition.Id ?? definition.Name.Replace(" ", "").Replace("/", "");
                var    dir  = Path.Combine(Path.GetTempPath(), "validation");

                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                File.WriteAllText(Path.Combine(dir, name) + ".StructureDefinition.xml", xml);
#endif


                return(generator.Outcome ?? new OperationOutcome());
#else
            if (Settings.ResourceResolver != null)
            {
                SnapshotGeneratorSettings settings = Settings.GenerateSnapshotSettings ?? SnapshotGeneratorSettings.Default;
                (new SnapshotGenerator(Settings.ResourceResolver, settings)).Update(definition);
#endif
            }

            return(new OperationOutcome());
        }
    }
Exemplo n.º 2
0
        // Note: this modifies an SD that is passed to us and will alter a possibly cached
        // object shared amongst other threads. This is generally useful and saves considerable
        // time when the same snapshot is needed again, but may result in side-effects
        private OperationOutcome snapshotGenerationNeeded(StructureDefinition definition)
        {
            if (!Settings.GenerateSnapshot)
            {
                return(new OperationOutcome());
            }

            // Default implementation: call event
            if (OnSnapshotNeeded != null)
            {
                var eventData = new OnSnapshotNeededEventArgs(definition, Settings.ResourceResolver);
                OnSnapshotNeeded(this, eventData);
                return(eventData.Result);
            }

            // Else, expand, depending on our configuration
#if REUSE_SNAPSHOT_GENERATOR
            var generator = this.SnapshotGenerator;
            if (generator != null)
            {
                generator.Update(definition);
#if DUMP_SNAPSHOTS
                string xml  = FhirSerializer.SerializeResourceToXml(definition);
                string name = definition.Id ?? definition.Name.Replace(" ", "");

                File.WriteAllText(@"c:\temp\validation\" + name + ".StructureDefinition.xml", xml);
#endif


                return(generator.Outcome ?? new OperationOutcome());
#else
            if (Settings.ResourceResolver != null)
            {
                SnapshotGeneratorSettings settings = Settings.GenerateSnapshotSettings ?? SnapshotGeneratorSettings.Default;
                (new SnapshotGenerator(Settings.ResourceResolver, settings)).Update(definition);
#endif
            }

            return(new OperationOutcome());
        }
    }