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); } } }
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? } }
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); }
public virtual void Write(Hl7.Fhir.Model.StructureDefinition sDef) { }