示例#1
0
        private static string GetOrCreateStructureDefinition(string structureDefinitionName)
        {
            var sdSearchParams = new SearchParams();

            sdSearchParams.Add("name", structureDefinitionName);
            var sd = FhirClient.Search <Hl7.Fhir.Model.StructureDefinition>(sdSearchParams);

            var sdReference = sd
                              .With(x => x.Entry)
                              .With(x => x.FirstOrDefault())
                              .With(x => FhirHelper.CreateReference(x.Resource));

            if (sdReference == null)
            {
                var structureDefinition = new Hl7.Fhir.Model.StructureDefinition {
                    Name = structureDefinitionName
                };
                var createdSd = FhirClient.Create(structureDefinition);
                return(FhirHelper.CreateReference(createdSd).Reference);
            }
            else
            {
                return(sdReference.Reference);
            }
        }
        //private void fixUris(Structure structure, Uri uri)
        //{
        //    UriHelper.SetStructureIdentification(structure, uri);
        //    List<TypeRef> typerefs = structure.Elements.SelectMany(e => e.TypeRefs).ToList();
        //    foreach (TypeRef t in typerefs)
        //    {
        //        UriHelper.SetTypeRefIdentification(structure, t);
        //    }
        //}

        public Structure HarvestStructure(Hl7.Fhir.Model.StructureDefinition source)
        {
            Structure target = new Structure();

            target.Name            = source.Name;
            target.ConstrainedType = source.ConstrainedType.Value;
            target.Uri             = new Uri(source.Url);
            PrepareSlices(source);
            HarvestElements(source, target);
            //fixUris(target, uri);
            return(target);
        }
 public void PrepareSlices(Hl7.Fhir.Model.StructureDefinition source)
 {
     if (source.Snapshot == null)
     {
         throw Error.Argument("source", "Structure must have a differential representation");
     }
     foreach (Hl7.Fhir.Model.ElementDefinition e in source.Snapshot.Element)
     {
         if (e.Slicing != null)
         {
             Slicing s = PrepareSlice(e);
             Slicings.Add(s);
         }
     }
 }
示例#4
0
        public void CreateStructureDefinitions()
        {
            var misOrderStructureDefinition = new Hl7.Fhir.Model.StructureDefinition
            {
                Id = "LisOrder",
            };

            var lisResultStructureDefinition = new Hl7.Fhir.Model.StructureDefinition
            {
                Id = "LisResult",
            };

            FhirClient.Delete(string.Format("StructureDefinition/{0}", misOrderStructureDefinition.Id));
            FhirClient.Delete(string.Format("StructureDefinition/{0}", lisResultStructureDefinition.Id));

            FhirClient.Create(misOrderStructureDefinition);
            FhirClient.Create(lisResultStructureDefinition);
        }
        private void HarvestElements(Hl7.Fhir.Model.StructureDefinition source, Structure target)
        {
            if (source.Snapshot == null)
            {
                throw Error.Argument("source", "Structure must have a differential representation");
            }

            foreach (Hl7.Fhir.Model.ElementDefinition 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?
            }
        }
示例#6
0
 public void Write(String outputPath)
 {
     Hl7.Fhir.Model.StructureDefinition sDef = new Hl7.Fhir.Model.StructureDefinition
     {
         Description    = new Hl7.Fhir.Model.Markdown(this.Description),
         Purpose        = new Hl7.Fhir.Model.Markdown(this.Purpose),
         Name           = this.Name,
         Url            = this.Uri,
         Differential   = new Hl7.Fhir.Model.StructureDefinition.DifferentialComponent(),
         Publisher      = this.Publisher,
         FhirVersion    = Hl7.Fhir.Model.FHIRVersion.N0_4_0,
         Kind           = Hl7.Fhir.Model.StructureDefinition.StructureDefinitionKind.Resource,
         BaseDefinition = Parent.Uri,
         Abstract       = false,
         Derivation     = Hl7.Fhir.Model.StructureDefinition.TypeDerivationRule.Constraint,
         Title          = this.Title
     };
     this.Write(sDef);
     sDef.SaveJson(outputPath);
 }
示例#7
0
 public virtual void Write(Hl7.Fhir.Model.StructureDefinition sDef)
 {
 }