private void SearchPatients() { //Regular search by patient family and given name WorkingMessage(); listCandidates.Items.Clear(); string FHIR_EndPoint = this.txtFHIREndpoint.Text.ToString(); var client = new Hl7.Fhir.Rest.FhirClient(FHIR_EndPoint); try { string family = txtFamilyName.Text.ToString(); string given = txtGivenName.Text.ToString(); var p = new Hl7.Fhir.Rest.SearchParams(); p.Add("family", family); if (given != "") { p.Add("given", given); } var results = client.Search <Patient>(p); this.UseWaitCursor = false; lblErrorMessage.Text = ""; while (results != null) { if (results.Total == 0) { lblErrorMessage.Text = "No patients found"; } btnShowDevices.Enabled = true; foreach (var entry in results.Entry) { var Pat = (Patient)entry.Resource; string Fam = Pat.Name[0].Family; string Giv = Pat.Name[0].GivenElement[0].ToString(); string ideS = Pat.Identifier[0].System; string ideV = Pat.Identifier[0].Value; string Content = Fam + " " + Giv + " (" + ideS + "-" + ideV + ")"; ListViewItem l = new ListViewItem(); l.Text = Content; l.Tag = entry.Resource.Id; listCandidates.Items.Add(l); } // get the next page of results results = client.Continue(results); } } catch (Exception err) { lblErrorMessage.Text = "Error:" + err.Message.ToString(); } if (lblErrorMessage.Text != "") { lblErrorMessage.Visible = true; } }
private void SearchDevices(string PatientId) { WorkingMessage(); //Empty the device list listDevices.Items.Clear(); //My FHIR Endpoint string FHIR_EndPoint = this.txtFHIREndpoint.Text.ToString(); //Connection var client = new Hl7.Fhir.Rest.FhirClient(FHIR_EndPoint); try { //Find the device related to my patient var p = new Hl7.Fhir.Rest.SearchParams(); //p.Add("subject", PatientId); p.Add("patient", PatientId); var results = client.Search <Device>(p); this.UseWaitCursor = false; lblErrorMessage.Text = ""; while (results != null) { if (results.Total == 0) { lblErrorMessage.Text = "No devices found"; } //Traverse the bundle with results foreach (var entry in results.Entry) { //One Device found! var Device = (Device)entry.Resource; string Content = ""; //Fill the content to add to the list with all the device data //Just in case the UDICarrier info is not present, we show just Manufacturer and Identifier if (Device.UdiCarrier.Count > 0) { Content = Device.UdiCarrier[0].CarrierHRF + " - " + Device.UdiCarrier[0].DeviceIdentifier + " - " + Device.Manufacturer; } else { if (Device.Identifier.Count > 0) { Content = Device.Identifier[0].System + "-" + Device.Identifier[0].Value + " -" + Device.Manufacturer; } else { Content = Device.Manufacturer + " ( No Identifiers )"; } } Content = Content + Device.Type.Coding[0].Display + '-' + Device.Patient.Display; listDevices.Items.Add(Content); } // get the next page of results results = client.Continue(results); } } catch (Exception err) { lblErrorMessage.Text = "Error:" + err.Message.ToString(); } if (lblErrorMessage.Text != "") { lblErrorMessage.Visible = true; } }