/// <summary> /// Creates a string representing an instance of DiagnosticOrder which has been serialized to json /// </summary> /// <returns>string</returns> private static string GenerateDiagnosticOrder(string subject, int i, int j) { var order = new DiagnosticOrder(); order.Subject = new ResourceReference(); order.Subject.Reference = subject; string time = JsonConvert.SerializeObject(new Dictionary<string, int>() { { "start", i }, { "end", j } }); order.FhirComments = new List<string>() { time }; Dictionary<string, int> time2 = JsonConvert.DeserializeObject(time) as Dictionary<string, int>; return FhirSerializer.SerializeResourceToJson(order); }
public static void SerializeDiagnosticOrder(Hl7.Fhir.Model.DiagnosticOrder value, IFhirWriter writer, bool summary) { writer.WriteStartRootObject("DiagnosticOrder"); writer.WriteStartComplexContent(); // Serialize element _id if (value.LocalIdElement != null) { writer.WritePrimitiveContents("_id", value.LocalIdElement, XmlSerializationHint.Attribute); } // Serialize element extension if (value.Extension != null && !summary && value.Extension.Count > 0) { writer.WriteStartArrayElement("extension"); foreach (var item in value.Extension) { writer.WriteStartArrayMember("extension"); ExtensionSerializer.SerializeExtension(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element language if (value.LanguageElement != null && !summary) { writer.WriteStartElement("language"); CodeSerializer.SerializeCode(value.LanguageElement, writer, summary); writer.WriteEndElement(); } // Serialize element text if (value.Text != null && !summary) { writer.WriteStartElement("text"); NarrativeSerializer.SerializeNarrative(value.Text, writer, summary); writer.WriteEndElement(); } // Serialize element contained if (value.Contained != null && !summary && value.Contained.Count > 0) { writer.WriteStartArrayElement("contained"); foreach (var item in value.Contained) { writer.WriteStartArrayMember("contained"); FhirSerializer.SerializeResource(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element subject if (value.Subject != null && !summary) { writer.WriteStartElement("subject"); ResourceReferenceSerializer.SerializeResourceReference(value.Subject, writer, summary); writer.WriteEndElement(); } // Serialize element orderer if (value.Orderer != null && !summary) { writer.WriteStartElement("orderer"); ResourceReferenceSerializer.SerializeResourceReference(value.Orderer, writer, summary); writer.WriteEndElement(); } // Serialize element identifier if (value.Identifier != null && !summary && value.Identifier.Count > 0) { writer.WriteStartArrayElement("identifier"); foreach (var item in value.Identifier) { writer.WriteStartArrayMember("identifier"); IdentifierSerializer.SerializeIdentifier(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element encounter if (value.Encounter != null && !summary) { writer.WriteStartElement("encounter"); ResourceReferenceSerializer.SerializeResourceReference(value.Encounter, writer, summary); writer.WriteEndElement(); } // Serialize element clinicalNotes if (value.ClinicalNotesElement != null && !summary) { writer.WriteStartElement("clinicalNotes"); FhirStringSerializer.SerializeFhirString(value.ClinicalNotesElement, writer, summary); writer.WriteEndElement(); } // Serialize element specimen if (value.Specimen != null && !summary && value.Specimen.Count > 0) { writer.WriteStartArrayElement("specimen"); foreach (var item in value.Specimen) { writer.WriteStartArrayMember("specimen"); ResourceReferenceSerializer.SerializeResourceReference(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element status if (value.StatusElement != null && !summary) { writer.WriteStartElement("status"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderStatus>(value.StatusElement, writer, summary); writer.WriteEndElement(); } // Serialize element priority if (value.PriorityElement != null && !summary) { writer.WriteStartElement("priority"); CodeSerializer.SerializeCode <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderPriority>(value.PriorityElement, writer, summary); writer.WriteEndElement(); } // Serialize element event if (value.Event != null && !summary && value.Event.Count > 0) { writer.WriteStartArrayElement("event"); foreach (var item in value.Event) { writer.WriteStartArrayMember("event"); DiagnosticOrderSerializer.SerializeDiagnosticOrderEventComponent(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } // Serialize element item if (value.Item != null && !summary && value.Item.Count > 0) { writer.WriteStartArrayElement("item"); foreach (var item in value.Item) { writer.WriteStartArrayMember("item"); DiagnosticOrderSerializer.SerializeDiagnosticOrderItemComponent(item, writer, summary); writer.WriteEndArrayMember(); } writer.WriteEndArrayElement(); } writer.WriteEndComplexContent(); writer.WriteEndRootObject(); }
//если не передаётся Coverage public DiagnosticOrder SetDiagnosticOrder_Min(string patient, string practitioner, string encounter, string specimen, string[] supportInfo) { DiagnosticOrder d = new DiagnosticOrder { Id = Ids.diagnosticReport, //Id пациента, генерится при добавлении пациента, иначе пеняй на себя Subject = new ResourceReference { Reference = patient }, //Id доктора, доктор добавляется в бандле Id из Ids Orderer = new ResourceReference { Reference = practitioner }, Encounter = new ResourceReference { Reference = encounter }, Status = DiagnosticOrder.DiagnosticOrderStatus.Requested, Item = new List<DiagnosticOrder.DiagnosticOrderItemComponent> { new DiagnosticOrder.DiagnosticOrderItemComponent { Code = new CodeableConcept { Extension = new List<Extension> { new Extension { Url = Dictionary.EXTENSION, Value = new CodeableConcept { Coding = new List<Coding> { new Coding { System = Dictionary.EXTENSION_FINANCE, Code = "1", Version = "1" } } } }, }, Coding = new List<Coding> { new Coding { System = Dictionary.CODE_SERVICE, Code = "B03.016.002", Version = "1"} } } } } }; //необязательные параметры if (specimen != null) d.Specimen = new List<ResourceReference> { new ResourceReference { Reference = specimen } }; // Condition/Observation всегда из Ids // когда передаём condition_MIN то ссылка на codition_min, в другом случае codition if (supportInfo != null) { d.SupportingInformation = new List<ResourceReference>(); foreach (string s in supportInfo) d.SupportingInformation.Add(new ResourceReference { Reference = s }); } return d; }
/// <summary> /// Parse DiagnosticOrder /// </summary> public static Hl7.Fhir.Model.DiagnosticOrder ParseDiagnosticOrder(IFhirReader reader, ErrorList errors, Hl7.Fhir.Model.DiagnosticOrder existingInstance = null) { Hl7.Fhir.Model.DiagnosticOrder result = existingInstance != null ? existingInstance : new Hl7.Fhir.Model.DiagnosticOrder(); string currentElementName = reader.CurrentElementName; reader.EnterElement(); while (reader.HasMoreElements()) { var atName = reader.CurrentElementName; // Parse element extension if (atName == "extension") { result.Extension = new List <Hl7.Fhir.Model.Extension>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "extension")) { result.Extension.Add(ExtensionParser.ParseExtension(reader, errors)); } reader.LeaveArray(); } // Parse element language else if (atName == "language") { result.LanguageElement = CodeParser.ParseCode(reader, errors); } // Parse element text else if (atName == "text") { result.Text = NarrativeParser.ParseNarrative(reader, errors); } // Parse element contained else if (atName == "contained") { result.Contained = new List <Hl7.Fhir.Model.Resource>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "contained")) { result.Contained.Add(ParserUtils.ParseContainedResource(reader, errors)); } reader.LeaveArray(); } // Parse element _id else if (atName == "_id") { result.LocalIdElement = Id.Parse(reader.ReadPrimitiveContents(typeof(Id))); } // Parse element subject else if (atName == "subject") { result.Subject = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element orderer else if (atName == "orderer") { result.Orderer = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element identifier else if (atName == "identifier") { result.Identifier = new List <Hl7.Fhir.Model.Identifier>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "identifier")) { result.Identifier.Add(IdentifierParser.ParseIdentifier(reader, errors)); } reader.LeaveArray(); } // Parse element encounter else if (atName == "encounter") { result.Encounter = ResourceReferenceParser.ParseResourceReference(reader, errors); } // Parse element clinicalNotes else if (atName == "clinicalNotes") { result.ClinicalNotesElement = FhirStringParser.ParseFhirString(reader, errors); } // Parse element specimen else if (atName == "specimen") { result.Specimen = new List <Hl7.Fhir.Model.ResourceReference>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "specimen")) { result.Specimen.Add(ResourceReferenceParser.ParseResourceReference(reader, errors)); } reader.LeaveArray(); } // Parse element status else if (atName == "status") { result.StatusElement = CodeParser.ParseCode <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderStatus>(reader, errors); } // Parse element priority else if (atName == "priority") { result.PriorityElement = CodeParser.ParseCode <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderPriority>(reader, errors); } // Parse element event else if (atName == "event") { result.Event = new List <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderEventComponent>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "event")) { result.Event.Add(DiagnosticOrderParser.ParseDiagnosticOrderEventComponent(reader, errors)); } reader.LeaveArray(); } // Parse element item else if (atName == "item") { result.Item = new List <Hl7.Fhir.Model.DiagnosticOrder.DiagnosticOrderItemComponent>(); reader.EnterArray(); while (ParserUtils.IsAtArrayElement(reader, "item")) { result.Item.Add(DiagnosticOrderParser.ParseDiagnosticOrderItemComponent(reader, errors)); } reader.LeaveArray(); } else { errors.Add(String.Format("Encountered unknown element {0} while parsing {1}", reader.CurrentElementName, currentElementName), reader); reader.SkipSubElementsFor(currentElementName); result = null; } } reader.LeaveElement(); return(result); }
public Bundle SetBundleOrder(Order order, DiagnosticOrder diagnosticOrder, Specimen specimen, Encounter encounter, Condition condition, Observation observation, Practitioner practitioner, Coverage coverage, Patient patient) { Bundle bundle = new Bundle(); bundle.Meta = new Meta() { Profile = new string[] { MetaBundleOrder } }; bundle.Entry = new List<Bundle.BundleEntryComponent>(); if (order != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = order, Transaction = new Bundle.BundleEntryTransactionComponent { Method = Bundle.HTTPVerb.POST, Url = "Order" } }; bundle.Entry.Add(component); } if (diagnosticOrder != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = diagnosticOrder, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "DiagnosticOrder" } }; bundle.Entry.Add(component); } if (specimen != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = specimen, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Specimen" } }; bundle.Entry.Add(component); } if (encounter != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = encounter, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Encounter" } }; bundle.Entry.Add(component); } if (condition != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = condition, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Condition" } }; bundle.Entry.Add(component); } if (observation != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = observation, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Observation" } }; bundle.Entry.Add(component); } if (practitioner != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = practitioner, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Practitioner" } }; bundle.Entry.Add(component); } if (coverage != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = coverage, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Coverage" } }; bundle.Entry.Add(component); } if (patient != null) { Bundle.BundleEntryComponent component = new Bundle.BundleEntryComponent { Resource = patient, Transaction = new Bundle.BundleEntryTransactionComponent() { Method = Bundle.HTTPVerb.POST, Url = "Patient" } }; bundle.Entry.Add(component); } return bundle; }