public void TestFhirParser(Parameters parameters) { var json = FhirSerializer.SerializeToJson(parameters); var parsed = (Parameters)FhirParser.ParseResourceFromJson(json); Assert.That(parameters.IsExactly(parsed)); }
public void WhenHealthVaultBloodGlucoseTransformedToFhir_ThenCodeAndValuesEqual() { var when = new HealthServiceDateTime(); var bloodGlucose = new BloodGlucose { When = when, Value = new BloodGlucoseMeasurement(101), GlucoseMeasurementType = new CodableValue("Whole blood", "wb", "glucose-meaurement-type", "wc", "1"), OutsideOperatingTemperature = true, IsControlTest = false, ReadingNormalcy = Normalcy.Normal, MeasurementContext = new CodableValue("Before meal", "BeforeMeal", "glucose-measurement-context", "wc", "1"), }; var observation = bloodGlucose.ToFhir(); var json = FhirSerializer.SerializeToJson(observation); Assert.IsNotNull(observation); Assert.AreEqual(101, ((Quantity)observation.Value).Value); Assert.AreEqual("Whole blood", observation.Method.Text); var bloodGlucoseExtension = observation.GetExtension(HealthVaultExtensions.BloodGlucose); Assert.AreEqual("Before meal", bloodGlucoseExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.BloodGlucoseMeasurementContext).Text); Assert.AreEqual(true, bloodGlucoseExtension.GetBoolExtension(HealthVaultExtensions.OutsideOperatingTemperatureExtensionName)); Assert.AreEqual(false, bloodGlucoseExtension.GetBoolExtension(HealthVaultExtensions.IsControlTestExtensionName)); Assert.AreEqual("Normal", bloodGlucoseExtension.GetStringExtension(HealthVaultExtensions.ReadingNormalcyExtensionName)); }
public void Test() { var parameters = new Parameters(); "source-code".Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "SourceCode", Value = new FhirString(x) })); "target-code".Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "TargetCode", Value = new FhirString(x) })); "barcode".Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "Barcode", Value = new FhirString(x) })); var jsonToSend = FhirSerializer.SerializeToJson(parameters); File.WriteAllText("out.json", jsonToSend); }
private OperationOutcome processResult(string code, string system, string display, Coding coding, CodeableConcept codeableConcept, ValidateCodeResult result) { if (result?.Result?.Value == null) { throw Error.InvalidOperation($"Terminology service at {Endpoint.Endpoint.ToString()} did not return a result."); } var outcome = new OperationOutcome(); if (result?.Result?.Value == false) { string message = result?.Message?.Value; if (message != null) { outcome.AddIssue(message, Issue.TERMINOLOGY_CODE_NOT_IN_VALUESET); } else { if (code != null && coding == null) { coding = new Coding(system, code, display); } var codeDisplay = codeableConcept != null?FhirSerializer.SerializeToJson(codeableConcept) : FhirSerializer.SerializeToJson(coding); outcome.AddIssue($"Validation of '{codeDisplay}' failed, but" + $"the terminology service at {Endpoint.Endpoint.ToString()} did not provide further details.", Issue.TERMINOLOGY_CODE_NOT_IN_VALUESET); } } return(outcome); }
public override void Write(object tempValue, Stream stream) { using (var writer = new StreamWriter(stream)) { // Might be more efficient to use SerializeResource, but as the name implies, that only works with resources... writer.Write(FhirSerializer.SerializeToJson((Hl7.Fhir.Model.Base)tempValue)); } }
public static async Task <List <Resource> > ProcessIncludes(Resource source, NameValueCollection parms, IFHIRStore store) { var retVal = new List <Resource>(); string includeparm = parms["_include"]; if (!string.IsNullOrEmpty(includeparm)) { JObject j = JObject.Parse(FhirSerializer.SerializeToJson(source)); string[] incs = includeparm.Split(','); foreach (string t in incs) { bool isinstance = false; string[] s = t.Split(':'); if (s.Length > 1) { var prop = s[1]; JToken x = null; try { if (prop.Equals("substance")) { x = j["suspectEntity"]; isinstance = true; } else { x = j[prop]; } } catch (Exception) { } if (x != null) { for (int i = 0; i < x.Count(); i++) { var x1 = (x.Type == JTokenType.Array ? x[i] : x); string z = (isinstance ? x1["instance"]["reference"].ToString() : x1["reference"].ToString()); string[] split = z.Split('/'); if (split.Length > 1) { var a1 = await store.LoadFHIRResource(split[1], split[0]); if (a1 != null) { retVal.Add(a1); } } } } } } } return(retVal); }
private static string toReadable(Base value) { if (value is Primitive) { return(value.ToString()); } else { return(FhirSerializer.SerializeToJson(value, root: value.TypeName)); } }
public override object InternalExecute(Program program, object argument1) { #if NILPROPOGATION if (argument1 == null) { return(null); } #endif return(FhirSerializer.SerializeToJson((Base)argument1)); }
public string InsertResourceHistoryItem(Resource r) { try { string s = FhirSerializer.SerializeToJson(r); ResourceThreadContext rtc = new ResourceThreadContext(blob, r, s); ThreadPool.QueueUserWorkItem(rtc.ThreadPoolCallback, 1); return(s); } catch (Exception e) { Trace.TraceError("Error inserting history for resource: {0}-{1}-{2} Message:{3}", Enum.GetName(typeof(ResourceType), r.ResourceType), r.Id, r.Meta.VersionId, e.Message); return(null); } }
private string SerializeResponse(Resource retVal) { if (CurrentAcceptType.ToLower().Contains("json")) { return(FhirSerializer.SerializeToJson(retVal)); } else if (CurrentAcceptType.ToLower().Contains("xml")) { return(FhirSerializer.SerializeResourceToXml(retVal)); } else { throw new System.Web.HttpException((int)HttpStatusCode.NotAcceptable, "Accept Type not Supported must be */xml or */json"); } }
public static void SaveResultBundle(Bundle lisOrder, string resourceId) { if (!Directory.Exists("results")) { Directory.CreateDirectory("results"); } var path = Path.ChangeExtension(Path.Combine("results", resourceId), ".json"); if (File.Exists(path)) { File.Delete(path); } var json = FhirSerializer.SerializeToJson(lisOrder); File.WriteAllText(path, json); }
public string InsertResourceHistoryItem(Resource r) { try { string s = FhirSerializer.SerializeToJson(r); var resource = System.Text.Encoding.UTF8.GetBytes(s); CloudBlockBlob blockBlob = blob.GetBlockBlobReference(@Enum.GetName(typeof(ResourceType), r.ResourceType) + "/" + r.Id + "/" + r.Meta.VersionId); using (var stream = new MemoryStream(resource, writable: false)) { blockBlob.UploadFromStream(stream); } return(s); } catch (Exception e) { Trace.TraceError("Error inserting history for resource: {0}-{1}-{2} Message:{3}", Enum.GetName(typeof(ResourceType), r.ResourceType), r.Id, r.Meta.VersionId, e.Message); return(null); } }
public static Parameters GetResultOperation(string sourceCode = null, string targetCode = null, string orderMisId = null) { var parameters = new Parameters(); sourceCode.Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "SourceCode", Value = new FhirString(x) })); targetCode.Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "TargetCode", Value = new FhirString(x) })); orderMisId.Do(x => parameters.Parameter.Add(new Parameters.ParametersParameterComponent { Name = "OrderMisID", Value = new FhirString(x) })); var client = new RestClient(Constants.Endpoint); var request = new RestRequest("$getresult", Method.POST) { RequestFormat = DataFormat.Json }; request.AddHeader("Accept", "application/json"); var jsonToSend = FhirSerializer.SerializeToJson(parameters); request.Parameters.Clear(); request.AddParameter("Authorization", (new N3Credentials(Constants.TestToken)).ToString(), ParameterType.HttpHeader); request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody); request.AddParameter("_format", "json", ParameterType.QueryString); request.RequestFormat = DataFormat.Json; var response = client.Execute(request); return((Parameters)FhirParser.ParseFromJson(response.Content)); }
public static HttpStatusCode GetOrderOperation(Parameters parameters) { var client = new RestClient(Constants.Endpoint); var request = new RestRequest("$getorder", Method.POST) { RequestFormat = DataFormat.Json }; request.AddHeader("Accept", "application/json"); var jsonToSend = FhirSerializer.SerializeToJson(parameters); request.Parameters.Clear(); request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody); //request.AddParameter("_format", "json"); request.RequestFormat = DataFormat.Json; var response = client.Execute(request); return(response.StatusCode); }
public void WhenMultipleHeathVaultThingsTransformedToFhirPatient_ThenCodeAndValuesEqual() { var basic = new BasicV2 { Gender = Gender.Female, BirthYear = 1975, City = "Redmond", StateOrProvince = new CodableValue("Washington", "WA", "states", "wc", "1"), PostalCode = "98052", Country = new CodableValue("United States of America", "US", "iso3166", "iso", "1"), FirstDayOfWeek = DayOfWeek.Sunday, Languages = { new Language(new CodableValue("English", "en", "iso639-1", "iso", "1"), true), new Language(new CodableValue("French", "fr", "iso639-1", "iso", "1"), false), } }; var patient = basic.ToFhir(); var contact = new Contact(); contact.ContactInformation.Address.Add(new ItemTypes.Address { Street = { "123 Main St.", "Apt. 3B" }, City = "Redmond", PostalCode = "98052", County = "King", State = "WA", Country = "USA", Description = "Home address", IsPrimary = true, }); contact.ContactInformation.Address.Add(new ItemTypes.Address { Street = { "1 Back Lane" }, City = "Holmfirth", PostalCode = "HD7 1HQ", County = "HUDDERSFIELD", Country = "UK", Description = "business address", }); contact.ContactInformation.Email.Add(new Email { Address = "*****@*****.**", Description = "Address 1", IsPrimary = true, }); contact.ContactInformation.Email.Add(new Email { Address = "*****@*****.**", Description = "Address 2", }); contact.ContactInformation.Phone.Add(new Phone { Number = "1-425-555-0100", Description = "Phone 1", IsPrimary = true, }); contact.ContactInformation.Phone.Add(new Phone { Number = "0491 570 156", Description = "Phone 2", }); contact.ToFhir(patient); var personalImage = new PersonalImage(); string resourceName = "Microsoft.HealthVault.Fhir.UnitTests.Samples.HealthVaultIcon.png"; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream != null) { using (var reader = new StreamReader(stream)) { personalImage.WriteImage(reader.BaseStream, "image/png"); } } } personalImage.ToFhir(patient); var personal = new Personal { Name = new Name { Full = "Dr. John Phillip Doe, Jr.", First = "John", Middle = "Phillip", Last = "Doe", Suffix = new CodableValue("Junior", "Jr", "name-suffixes", "wc", "1"), Title = new CodableValue("Dr.", "Dr", "name-prefixes", "wc", "1"), }, BirthDate = new HealthServiceDateTime { Date = new HealthServiceDate(1975, 2, 5), Time = new ApproximateTime(1, 30, 34, 15), }, DateOfDeath = new ApproximateDateTime { ApproximateDate = new ApproximateDate(2075, 5, 7), }, SocialSecurityNumber = "000-12-3456", BloodType = new CodableValue("A+", "A+", "blood-types", "wc", "1"), Religion = new CodableValue("Agnostic", "Agn", "religion", "wc", "1"), MaritalStatus = new CodableValue("Never Married", "NM", "marital-status", "wc", "1"), EmploymentStatus = "Employed", IsDeceased = true, IsVeteran = true, Ethnicity = new CodableValue("Other Race", "8", "ethnicity-types", "wc", "1"), HighestEducationLevel = new CodableValue("College Graduate", "ColG", "Education-level", "wc", "1"), OrganDonor = "Organ Donor", IsDisabled = false, }; personal.ToFhir(patient); var json = FhirSerializer.SerializeToJson(patient); Assert.IsNotNull(patient); // Basic Portion Assert.AreEqual(AdministrativeGender.Female, patient.Gender.Value); var basicV2Extension = patient.GetExtension(HealthVaultExtensions.PatientBasicV2); Assert.AreEqual(1975, basicV2Extension.GetIntegerExtension(HealthVaultExtensions.PatientBirthYear)); Assert.AreEqual("0", basicV2Extension.GetExtensionValue <Coding>(HealthVaultExtensions.PatientFirstDayOfWeek).Code); Assert.AreEqual("Sunday", basicV2Extension.GetExtensionValue <Coding>(HealthVaultExtensions.PatientFirstDayOfWeek).Display); var basicAddress = basicV2Extension.GetExtension(HealthVaultExtensions.PatientBasicAddress); Assert.AreEqual("Redmond", basicAddress.GetStringExtension(HealthVaultExtensions.PatientBasicAddressCity)); Assert.AreEqual("WA", basicAddress.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBasicAddressState).Coding[0].Code); Assert.AreEqual("98052", basicAddress.GetStringExtension(HealthVaultExtensions.PatientBasicAddressPostalCode)); Assert.AreEqual("US", basicAddress.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBasicAddressCountry).Coding[0].Code); Assert.AreEqual(2, patient.Communication.Count); Assert.AreEqual("English", patient.Communication[0].Language.Text); Assert.AreEqual(true, patient.Communication[0].Preferred); // Contact portion Assert.AreEqual(2, patient.Address.Count); var address1 = patient.Address[0]; Assert.AreEqual(2, address1.Line.Count()); Assert.AreEqual("123 Main St.", address1.Line.First()); Assert.AreEqual("Redmond", address1.City); Assert.AreEqual("King", address1.District); Assert.AreEqual("WA", address1.State); Assert.AreEqual("98052", address1.PostalCode); Assert.AreEqual("USA", address1.Country); Assert.AreEqual("Home address", address1.Text); Assert.AreEqual(true, address1.GetBoolExtension(HealthVaultExtensions.IsPrimary)); Assert.AreEqual(4, patient.Telecom.Count); var email1 = patient.Telecom[0]; Assert.AreEqual("*****@*****.**", email1.Value); Assert.AreEqual("Address 1", email1.GetStringExtension(HealthVaultExtensions.Description)); Assert.AreEqual(1, email1.Rank); var phone1 = patient.Telecom[2]; Assert.AreEqual("1-425-555-0100", phone1.Value); Assert.AreEqual("Phone 1", phone1.GetStringExtension(HealthVaultExtensions.Description)); Assert.AreEqual(1, phone1.Rank); // Personal Image portion Assert.IsNotNull(patient); Assert.AreEqual(1757, patient.Photo[0].Data.Length); // Personal portion Assert.IsNotNull(patient); var personalExtension = patient.GetExtension(HealthVaultExtensions.PatientPersonal); Assert.AreEqual("Dr. John Phillip Doe, Jr.", patient.Name[0].Text); Assert.AreEqual("John", patient.Name[0].Given.ToList()[0]); Assert.AreEqual("Phillip", patient.Name[0].Given.ToList()[1]); Assert.AreEqual("Doe", patient.Name[0].Family); Assert.AreEqual("Dr.", patient.Name[0].Prefix.ToList()[0]); Assert.AreEqual("Junior", patient.Name[0].Suffix.ToList()[0]); Assert.AreEqual("1975-02-05", patient.BirthDate); Assert.AreEqual("000-12-3456", patient.Identifier[0].Value); Assert.AreEqual("2075-05-07", ((FhirDateTime)patient.Deceased).Value); Assert.AreEqual("A+", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBloodType).Coding[0].Code); Assert.AreEqual("Agn", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientReligion).Coding[0].Code); Assert.AreEqual("NM", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientMaritalStatus).Coding[0].Code); Assert.AreEqual("8", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientEthnicity).Coding[0].Code); Assert.AreEqual("ColG", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientHighestEducationLevel).Coding[0].Code); Assert.AreEqual("Employed", personalExtension.GetStringExtension(HealthVaultExtensions.PatientEmploymentStatus)); Assert.AreEqual("Organ Donor", personalExtension.GetStringExtension(HealthVaultExtensions.PatientOrganDonor)); Assert.AreEqual(true, personalExtension.GetBoolExtension(HealthVaultExtensions.PatientIsVeteran)); Assert.AreEqual(false, personalExtension.GetBoolExtension(HealthVaultExtensions.PatientIsDisabled)); }
public string ResourceToString(Hl7.Fhir.Model.Base resource) { return(FhirSerializer.SerializeToJson(resource)); }
public static string ToFhirJson(this Base resource) { return(FhirSerializer.SerializeToJson(resource)); }
static void Main(string[] args) { const string kDeviceId = "device-0001"; const string kObservationId = "bp-0001"; const string kPatientId = "patient-0001"; const string kPractitionerId = "practitioner-0001"; Patient patient = new Patient() { Id = kPatientId }; patient.Name.Add(HumanName.ForFamily("Miranda").WithGiven("Jorge")); Practitioner practitioner = new Practitioner() { Id = kPractitionerId }; practitioner.Name.Add(HumanName.ForFamily("Banerjee").WithGiven("Suprateek")); Device device = new Device() { Id = kDeviceId, Manufacturer = "A&D", Model = "UA-651BLE" }; Observation observation = new Observation() { Id = kObservationId, Device = new ResourceReference("Device/" + kDeviceId), Subject = new ResourceReference("Patient" + kPatientId) }; observation.Performer.Add(new ResourceReference("Practitioner" + kPractitionerId)); /* Systolic component */ Observation.ComponentComponent systolic = new Observation.ComponentComponent(); systolic.Code = new CodeableConcept(); systolic.Code.Coding.Add(new Coding("http://loinc.org", "8480 - 6")); systolic.Code.Coding.Add(new Coding("http://snomed.info/sct", "271649006")); systolic.Value = new Quantity() { Value = 107, Unit = "mmHg", Code = "mm[Hg]" }; systolic.Interpretation = new CodeableConcept("http://hl7.org/fhir/v2/0078", "N", "normal"); /* Diastolic component */ Observation.ComponentComponent diastolic = new Observation.ComponentComponent(); diastolic.Code = new CodeableConcept("http://loinc.org", "8462-4"); diastolic.Code = new CodeableConcept("http://snomed.info/sct", "271650006"); diastolic.Value = new Quantity() { Value = 60, Unit = "mmHg", Code = "mm[Hg]" }; diastolic.Interpretation = new CodeableConcept("http://hl7.org/fhir/v2/0078", "L", "low"); observation.Component.Add(systolic); observation.Component.Add(diastolic); string json = FhirSerializer.SerializeToJson(observation); }