public Hl7.Fhir.Model.Bundle everythingById(string id) { Hl7.Fhir.Model.Bundle ReturnedBundle = null; try { //Attempt to send the resource to the server endpoint UriBuilder UriBuilderx = new UriBuilder(FhirClientEndPoint); UriBuilderx.Path = "Patient/" + id; Hl7.Fhir.Model.Resource ReturnedResource = _client.InstanceOperation(UriBuilderx.Uri, "everything"); if (ReturnedResource is Hl7.Fhir.Model.Bundle) { ReturnedBundle = ReturnedResource as Hl7.Fhir.Model.Bundle; Console.WriteLine("Received: " + ReturnedBundle.Total + " results. "); } else { throw new Exception("Operation call must return a bundle resource"); } Console.WriteLine(); } catch (Hl7.Fhir.Rest.FhirOperationException FhirOpExec) { //Process any Fhir Errors returned as OperationOutcome resource Console.WriteLine(); Console.WriteLine("An error message: " + FhirOpExec.Message); Console.WriteLine(); string xml = Hl7.Fhir.Serialization.FhirSerializer.SerializeResourceToXml(FhirOpExec.Outcome); XDocument xDoc = XDocument.Parse(xml); Console.WriteLine(xDoc.ToString()); } return(ReturnedBundle); }
public ActionResult ShowResourceVersion(string rId, string id) { var conn = new FhirClient("http://localhost:8080/baseR4"); conn.PreferredFormat = ResourceFormat.Json; Patient patient = conn.Read <Patient>("Patient/" + id); UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder.Path = "Patient/" + patient.Id; Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything"); var resourceList = new List <Details>(); if (resultResource is Bundle) { Bundle resultBundle = resultResource as Bundle; while (resultBundle != null) { foreach (var i in resultBundle.Entry) { Details element = new Details(); switch (i.Resource.TypeName) { case "Observation": Observation observation = (Observation)i.Resource; if (observation.Id == rId) { element.id = observation.Id; element.resourceName = "Observation"; element.reason = observation.Code.Text; element.version = observation.Meta.VersionId; int versions = int.Parse(element.version); for (int j = 1; j <= versions; j++) { Details vPatient = new Details(); UriBuilder uriBuilder1 = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder1.Path = "Observation/" + element.id + "/_history/" + j; Observation resultResource1 = conn.Read <Observation>(uriBuilder1.Uri); vPatient.id = resultResource1.Id; vPatient.reason = resultResource1.Code.Text; vPatient.date = Convert.ToDateTime(resultResource1.Effective.ToString()); vPatient.version = resultResource1.Meta.VersionId; vPatient.modDate = Convert.ToDateTime(resultResource1.Meta.LastUpdated.ToString()); resourceList.Add(vPatient); } } break; } } resultBundle = conn.Continue(resultBundle, PageDirection.Next); } } return(View(resourceList)); }
[TestMethod, Ignore] //Server throws error: Access violation at address 000000000129D56C in module 'FHIRServer.exe'. Read of address 0000000000000000 public void InvokeTestPatientGetEverything() { var client = new FhirClient(testEndpoint); var start = new FhirDateTime(2014,11,1); var end = new FhirDateTime(2015,1,1); var par = new Parameters().Add("start", start).Add("end", end); var bundle = (Bundle)client.InstanceOperation(ResourceIdentity.Build("Patient", "1"), "everything", par); Assert.IsTrue(bundle.Entry.Any()); var bundle2 = client.FetchPatientRecord(ResourceIdentity.Build("Patient","1"), start, end); Assert.IsTrue(bundle2.Entry.Any()); }
public void InvokeExpandUsingInstanceOp() { var client = new FhirClient(testEndpoint); // var vs = client.Read<ValueSet>("ValueSet/administrative-gender"); // var vsX = client.ExpandValueSet(ExpandValueSet(vs); // Assert.IsTrue(vsX.Expansion.Contains.Any()); var result = client.InstanceOperation(ResourceIdentity.Build("ValueSet", "extensional-case-1"), FhirClientOperations.Operation.EXPAND_VALUESET); }
public void InvokeTestPatientGetEverything() { var client = new FhirClient(testEndpoint); var start = new FhirDateTime(2014, 11, 1); var end = new FhirDateTime(2015, 1, 1); var par = new Parameters().Add("start", start).Add("end", end); var bundle = (Bundle)client.InstanceOperation(ResourceIdentity.Build("Patient", "example"), "everything", par); Assert.IsTrue(bundle.Entry.Any()); var bundle2 = client.FetchPatientRecord(ResourceIdentity.Build("Patient", "example"), start, end); Assert.IsTrue(bundle2.Entry.Any()); }
private static void CreatePatientFile(FhirClient client, string patientid) { string SericeRootURI = "https://r3.smarthealthit.org/"; UriBuilder UriBuildX = new UriBuilder(SericeRootURI); Bundle bundle = null; UriBuildX.Path = "Patient/" + patientid; var Returnedresource = client.InstanceOperation(UriBuildX.Uri, "everything"); if (Returnedresource is Bundle) { bundle = Returnedresource as Bundle; } //var query = new string[] { "name=Rob" }; //var bundle = client.Search("Patient", query); }
public static void GetEverythingForPatient(string patientId) { UriBuilder uriBuilder = new UriBuilder(FhirClientEndPoint); uriBuilder.Path = "Patient/" + patientId; try { FhirClient fhirClient = new FhirClient(FhirClientEndPoint); Resource resultResource = fhirClient.InstanceOperation(uriBuilder.Uri, "everything"); var xml = FhirSerializer.SerializeResourceToXml(resultResource); LogToFile(XDocument.Parse(xml).ToString()); } catch (Exception ex) { LogToFile(ex.ToString()); } }
public void CreateAndFullRepresentation() { FhirClient client = new FhirClient(testEndpoint); client.ReturnFullResource = true; // which is also the default var pat = client.Read <Patient>("Patient/example"); ResourceIdentity ri = pat.ResourceIdentity().WithBase(client.Endpoint); pat.Id = null; pat.Identifier.Clear(); var patC = client.Create <Patient>(pat); Assert.IsNotNull(patC); client.ReturnFullResource = false; patC = client.Create <Patient>(pat); Assert.IsNull(patC); if (client.LastBody != null) { var returned = client.LastBodyAsResource; Assert.IsTrue(returned is OperationOutcome); } // Now validate this resource client.ReturnFullResource = true; // which is also the default Parameters p = new Parameters(); // p.Add("mode", new FhirString("create")); p.Add("resource", pat); OperationOutcome ooI = (OperationOutcome)client.InstanceOperation(ri.WithoutVersion(), "validate", p); Assert.IsNotNull(ooI); }
public ViewResult ShowInfo(string id, DateTime?after, DateTime?before, int?page) { //POKAZYWANIE WSZYSTKICH INFORMACJI O PACJENCIE //ŁĄCZENIE Z SERWEREM var client = new FhirClient("http://localhost:8080/baseR4"); //second parameter - check standard version client.PreferredFormat = ResourceFormat.Json; Patient myPatient = client.Read <Patient>("Patient/" + id); UriBuilder UriBuilderx = new UriBuilder("http://localhost:8080/baseR4"); UriBuilderx.Path = "Patient/" + myPatient.Id; Resource ReturnedResource = client.InstanceOperation(UriBuilderx.Uri, "everything"); //DANE OSOBOWE PACJENTA ViewBag.Surname = myPatient.Name[0].Family; ViewBag.ID = myPatient.Id; ViewBag.Name = myPatient.Name[0].Given.FirstOrDefault(); ViewBag.birthDate = new Date(myPatient.BirthDate.ToString()); //WYSZUKIWANIE "EVERYTHING" var myElemList = new List <ShowInfo>(); if (ReturnedResource is Bundle) { Bundle ReturnedBundle = ReturnedResource as Bundle; while (ReturnedBundle != null) { foreach (var Entry in ReturnedBundle.Entry) { ShowInfo myElem = new ShowInfo(); //DANE DO OSI CZASU if (Entry.Resource.TypeName == "Observation") { //LISTA OBSERVATION Observation observation = (Observation)Entry.Resource; myElem.elemID = observation.Id; myElem.originalModel = "Observation"; var amount = observation.Value as Quantity; if (amount != null) { myElem.amount = amount.Value + " " + amount.Unit; } myElem.date = Convert.ToDateTime(observation.Effective.ToString()); myElem.reason = observation.Code.Text; myElemList.Add(myElem); } else if (Entry.Resource.TypeName == "MedicationRequest") { //LISTA MEDICATIONSTATEMENT MedicationRequest mrequest = (MedicationRequest)Entry.Resource; myElem.elemID = mrequest.Id; myElem.originalModel = "MedicationRequest"; myElem.date = Convert.ToDateTime(mrequest.AuthoredOn.ToString()); myElem.reason += (mrequest.Medication as CodeableConcept).Text; myElemList.Add(myElem); } } ReturnedBundle = client.Continue(ReturnedBundle, PageDirection.Next); } } else { throw new Exception("Operation call must return a bundle resource"); } //OKREŚLENIE SZUKANEJ DATY if (before != null) { DateTime date = before.GetValueOrDefault(); myElemList = myElemList.FindAll(s => s.date.Date.CompareTo(date.Date) < 0); ViewBag.Before = date; } if (after != null) { DateTime date = after.GetValueOrDefault(); myElemList = myElemList.FindAll(s => s.date.Date.CompareTo(date.Date) > 0); ViewBag.After = date; } myElemList.Reverse(); //żeby daty były odpowiednio od najwyższej int pageSize = 10; int pageNumber = (page ?? 1); return(View(myElemList.ToPagedList(pageNumber, pageSize))); }
public ActionResult Chart(string id, DateTime?after, DateTime?before) { var client = new FhirClient("http://localhost:8080/baseR4"); client.PreferredFormat = ResourceFormat.Json; Patient myPatient = client.Read <Patient>("Patient/" + id); //5cbc121b-cd71-4428-b8b7-31e53eba8184 UriBuilder UriBuilderx = new UriBuilder("http://localhost:8080/baseR4"); UriBuilderx.Path = "Patient/" + myPatient.Id; Resource ReturnedResource = client.InstanceOperation(UriBuilderx.Uri, "everything"); //DANE OSOBOWE PACJENTA ViewBag.Surname = myPatient.Name[0].Family; ViewBag.Name = myPatient.Name[0].Given.FirstOrDefault(); ViewBag.ID = id; //WYSZUKIWANIE "EVERYTHING" var list = new List <ChartModel> { }; if (ReturnedResource is Bundle) { Bundle ReturnedBundle = ReturnedResource as Bundle; while (ReturnedBundle != null) { foreach (var Entry in ReturnedBundle.Entry) { //DANE DO OSI CZASU if (Entry.Resource.TypeName == "Observation") { //LISTA BADAŃ WAGI Observation observation = (Observation)Entry.Resource; if (observation.Code.Text.Contains("Body Weight")) { var val = observation.Value as Quantity; var amount = double.Parse((val.Value).ToString()); var date = observation.Effective.ToString().Substring(0, 10); var point = new ChartModel(amount, date); list.Add(point); } } } ReturnedBundle = client.Continue(ReturnedBundle, PageDirection.Next); } } else { throw new Exception("Operation call must return a bundle resource"); } //OKREŚLENIE SZUKANEJ DATY if (before != null) { DateTime date = before.GetValueOrDefault(); list = list.FindAll(s => Convert.ToDateTime(s.label).Date.CompareTo(date.Date) < 0); ViewBag.Before = date; } if (after != null) { DateTime date = after.GetValueOrDefault(); list = list.FindAll(s => Convert.ToDateTime(s.label).Date.CompareTo(date.Date) > 0); ViewBag.After = date; } ViewBag.DataPoints = JsonConvert.SerializeObject(list); return(View()); }
public void CreateAndFullRepresentation() { FhirClient client = new FhirClient(testEndpoint); client.ReturnFullResource = true; // which is also the default var pat = client.Read<Patient>("Patient/example"); ResourceIdentity ri = pat.ResourceIdentity().WithBase(client.Endpoint); pat.Id = null; pat.Identifier.Clear(); var patC = client.Create<Patient>(pat); Assert.IsNotNull(patC); client.ReturnFullResource = false; patC = client.Create<Patient>(pat); Assert.IsNull(patC); if (client.LastBody != null) { var returned = client.LastBodyAsResource; Assert.IsTrue(returned is OperationOutcome); } // Now validate this resource client.ReturnFullResource = true; // which is also the default Parameters p = new Parameters(); // p.Add("mode", new FhirString("create")); p.Add("resource", pat); OperationOutcome ooI = (OperationOutcome)client.InstanceOperation(ri.WithoutVersion(), "validate", p); Assert.IsNotNull(ooI); }
public ViewResult ShowDetails(string id) { var conn = new FhirClient("http://localhost:8080/baseR4"); conn.PreferredFormat = ResourceFormat.Json; Patient patient = conn.Read <Patient>("Patient/" + id); UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder.Path = "Patient/" + patient.Id; Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything"); ViewBag.Surname = patient.Name[0].Family; ViewBag.ID = patient.Id; ViewBag.Name = patient.Name[0].Given.FirstOrDefault(); ViewBag.birthDate = new Date(patient.BirthDate.ToString()); var listElement = new List <Details>(); if (resultResource is Bundle) { Bundle resultBundle = resultResource as Bundle; while (resultBundle != null) { foreach (var i in resultBundle.Entry) { Details element = new Details(); switch (i.Resource.TypeName) { case "Observation": Observation observation = (Observation)i.Resource; element.id = observation.Id; element.resourceName = "Observation"; element.date = Convert.ToDateTime(observation.Effective.ToString()); element.reason = observation.Code.Text; element.version = observation.Meta.VersionId; Quantity amount = observation.Value as Quantity; if (amount != null) { element.amount = amount.Value + " " + amount.Unit; } listElement.Add(element); break; case "MedicationRequest": MedicationRequest medicationRequest = (MedicationRequest)i.Resource; element.id = medicationRequest.Id; element.resourceName = "MedicationRequest"; element.date = Convert.ToDateTime(medicationRequest.AuthoredOn.ToString()); element.reason += ((CodeableConcept)medicationRequest.Medication).Text; element.version = medicationRequest.Meta.VersionId; listElement.Add(element); break; } } resultBundle = conn.Continue(resultBundle, PageDirection.Next); } } listElement = listElement.OrderByDescending(s => s.date).ToList(); return(View(listElement.ToList())); }
public ActionResult Save(DetailsPatient item) { DetailsPatient element = new DetailsPatient(); element.date = item.date; element.reason = item.reason; element.amount = item.amount; element.resourceName = item.resourceName; element.id = item.id; element.patientId = item.patientId; var conn = new FhirClient("http://localhost:8080/baseR4"); conn.PreferredFormat = ResourceFormat.Json; Patient patient = conn.Read <Patient>("Patient/" + element.patientId); UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder.Path = "Patient/" + patient.Id; Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything"); ViewBag.Surname = patient.Name[0].Family; ViewBag.ID = patient.Id; ViewBag.Name = patient.Name[0].Given.FirstOrDefault(); ViewBag.birthDate = new Date(patient.BirthDate.ToString()); if (resultResource is Bundle) { Bundle resultBundle = resultResource as Bundle; while (resultBundle != null) { foreach (var i in resultBundle.Entry) { DetailsPatient fetchedElement = new DetailsPatient(); switch (i.Resource.TypeName) { case "Observation": Observation observation = (Observation)i.Resource; if (observation.Id == item.id) { fetchedElement.date = observation.Effective; fetchedElement.reason = observation.Code.Text; fetchedElement.amount = observation.Meta.VersionId; UriBuilder uriBuilderBack = new UriBuilder("http://localhost:8080/baseR4"); uriBuilderBack.Path = "Observation/" + item.id; Observation resultResourceBack = conn.Read <Observation>(uriBuilderBack.Uri); resultResourceBack.Code.Text = item.reason; conn.Update(resultResourceBack); } break; case "MedicationRequest": MedicationRequest medicationRequest = (MedicationRequest)i.Resource; if (medicationRequest.Id == item.id) { fetchedElement.amount = medicationRequest.Meta.VersionId; //fetchedElement.date = medicationRequest.AuthoredOn //fetchedElement.reason += ((CodeableConcept)medicationRequest.Medication).Text; } break; } } resultBundle = conn.Continue(resultBundle, PageDirection.Next); } } return(View(element)); }
public ViewResult Edit(string id, string resourceName, string patientId) { var conn = new FhirClient("http://localhost:8080/baseR4"); conn.PreferredFormat = ResourceFormat.Json; Patient patient = conn.Read <Patient>("Patient/" + patientId); UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder.Path = "Patient/" + patient.Id; Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything"); ViewBag.Surname = patient.Name[0].Family; ViewBag.ID = patient.Id; ViewBag.Name = patient.Name[0].Given.FirstOrDefault(); ViewBag.birthDate = new Date(patient.BirthDate.ToString()); var selectedElement = new DetailsPatient(); if (resultResource is Bundle) { Bundle resultBundle = resultResource as Bundle; while (resultBundle != null) { foreach (var i in resultBundle.Entry) { DetailsPatient element = new DetailsPatient(); switch (i.Resource.TypeName) { case "Observation": Observation observation = (Observation)i.Resource; if (observation.Id == id) { element.id = observation.Id; element.resourceName = "Observation"; element.date = observation.Effective; element.reason = observation.Code.Text; element.amount = observation.Meta.VersionId; element.patientId = patient.Id; selectedElement = element; } break; case "MedicationRequest": MedicationRequest medicationRequest = (MedicationRequest)i.Resource; if (medicationRequest.Id == id) { element.id = medicationRequest.Id; element.resourceName = "MedicationRequest"; element.reason += ((CodeableConcept)medicationRequest.Medication).Text; element.patientId = patientId; element.amount = medicationRequest.Meta.VersionId; selectedElement = element; } break; } } resultBundle = conn.Continue(resultBundle, PageDirection.Next); } } return(View(selectedElement)); }
public ViewResult Chart(string id, string dateType = "all") { List <DataPoint> dataPoints = new List <DataPoint>(); var conn = new FhirClient("http://localhost:8080/baseR4"); conn.PreferredFormat = ResourceFormat.Json; Patient patient = conn.Read <Patient>("Patient/" + id); var x = conn.History("Patient/" + id); UriBuilder uriBuilder = new UriBuilder("http://localhost:8080/baseR4"); uriBuilder.Path = "Patient/" + patient.Id; Resource resultResource = conn.InstanceOperation(uriBuilder.Uri, "everything"); ViewBag.ID = patient.Id; ViewBag.Name = patient.Name[0].Given.FirstOrDefault() + " " + patient.Name[0].Family; if (resultResource is Bundle) { Bundle resultBundle = resultResource as Bundle; while (resultBundle != null) { foreach (var i in resultBundle.Entry) { switch (i.Resource.TypeName) { case "Observation": Observation observation = (Observation)i.Resource; if (observation.Code.Text.Contains("Glucose")) { var date = observation.Effective.ToString().Substring(0, 10); Quantity value = observation.Value as Quantity; var amount = double.Parse((value.Value).ToString()); dataPoints.Add(new DataPoint(date, amount)); } break; } } resultBundle = conn.Continue(resultBundle, PageDirection.Next); } } ViewBag.MessagePost = dateType; switch (dateType) { case "5years": dataPoints = dataPoints.Where(s => Convert.ToDateTime(s.label) >= DateTime.Now.Date.AddYears(-5)).ToList(); break; case "1year": dataPoints = dataPoints.Where(s => Convert.ToDateTime(s.label) >= DateTime.Now.Date.AddYears(-1)).ToList(); break; case "6months": dataPoints = dataPoints.Where(s => Convert.ToDateTime(s.label) >= DateTime.Now.Date.AddMonths(-6)).ToList(); break; case "3month": dataPoints = dataPoints.Where(s => Convert.ToDateTime(s.label) >= DateTime.Now.Date.AddMonths(-3)).ToList(); break; case "1month": dataPoints = dataPoints.Where(s => Convert.ToDateTime(s.label) >= DateTime.Now.Date.AddMonths(-1)).ToList(); break; default: break; } ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints); return(View()); }