public async Task <IActionResult> Index() { ViewData["NumberOfPatients"] = await PatientReservoir.GetNumberOfPatientsAsync(); List <string> patients = await PatientReservoir.GetPatients(10); ViewData["PatientsInList"] = patients.Count; return(View(patients)); }
public async Task <IActionResult> PushBundle(string bundleFileName) { string bundleJson = await PatientReservoir.GetFhirBundleAndDelete(bundleFileName); if (!String.IsNullOrEmpty(bundleJson)) { JObject o = JObject.Parse(bundleJson); JArray entries = (JArray)o["entry"]; var client = new HttpClient(); client.BaseAddress = new Uri(Configuration["FhirServerUrl"]); client.DefaultRequestHeaders.Add("x-ms-consistency-level", "Eventual"); for (int i = 0; i < entries.Count; i++) { string entry_json = (((JObject)entries[i])["resource"]).ToString(); string resource_type = (string)(((JObject)entries[i])["resource"]["resourceType"]); string id = (string)(((JObject)entries[i])["resource"]["id"]); //Rewrite subject reference if (((JObject)entries[i])["resource"]["subject"] != null) { string subject_reference = (string)(((JObject)entries[i])["resource"]["subject"]["reference"]); if (!String.IsNullOrEmpty(subject_reference)) { for (int j = 0; j < entries.Count; j++) { if ((string)(((JObject)entries[j])["fullUrl"]) == subject_reference) { subject_reference = (string)(((JObject)entries[j])["resource"]["resourceType"]) + "/" + (string)(((JObject)entries[j])["resource"]["id"]); break; } } } ((JObject)entries[i])["resource"]["subject"]["reference"] = subject_reference; entry_json = (((JObject)entries[i])["resource"]).ToString(); } if (((JObject)entries[i])["resource"]["context"] != null) { string context_reference = (string)(((JObject)entries[i])["resource"]["context"]["reference"]); if (!String.IsNullOrEmpty(context_reference)) { for (int j = 0; j < entries.Count; j++) { if ((string)(((JObject)entries[j])["fullUrl"]) == context_reference) { context_reference = (string)(((JObject)entries[j])["resource"]["resourceType"]) + "/" + (string)(((JObject)entries[j])["resource"]["id"]); break; } } } ((JObject)entries[i])["resource"]["context"]["reference"] = context_reference; entry_json = (((JObject)entries[i])["resource"]).ToString(); } var token = await _easyAuthProxy.GetAadAccessToken(); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Add("x-ms-consistency-level", "Eventual"); client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}"); StringContent content = new StringContent(entry_json, Encoding.UTF8, "application/json"); HttpResponseMessage uploadResult = null; if (String.IsNullOrEmpty(id)) { uploadResult = await client.PostAsync($"/{resource_type}", content); } else { uploadResult = await client.PutAsync($"/{resource_type}/{id}", content); } if (!uploadResult.IsSuccessStatusCode) { string resultContent = await uploadResult.Content.ReadAsStringAsync(); Console.WriteLine(resultContent); } } } return(Redirect("/Reservoir")); }