Skip to content

Commit

Permalink
Introduce get by patient id api
Browse files Browse the repository at this point in the history
  • Loading branch information
ganesanarun committed Feb 5, 2020
1 parent c5eada6 commit 4f7c778
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 32 deletions.
21 changes: 21 additions & 0 deletions src/In.ProjectEKA.TMHHip/Discovery/Patient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;

namespace In.ProjectEKA.TMHHip.Discovery
{
public class Patient
{
public string Identifier { get; set; }

public string Gender { get; set; }

// ReSharper disable once UnusedMember.Global
public string PhoneNumber { get; set; }

public string FirstName { get; set; }

public string LastName { get; set; }

// ReSharper disable once UnusedMember.Global
public DateTime DateOfBirth { get; set; }
}
}
49 changes: 23 additions & 26 deletions src/In.ProjectEKA.TMHHip/Discovery/PatientMatchingRepository.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using HipLibrary.Patient.Model;

namespace In.ProjectEKA.TMHHip.Discovery
{
using System.Collections.Generic;
Expand All @@ -6,10 +8,8 @@ namespace In.ProjectEKA.TMHHip.Discovery
using System.Text;
using System.Threading.Tasks;
using HipLibrary.Patient;
using HipLibrary.Patient.Model;
using Newtonsoft.Json;
using JsonSerializer = System.Text.Json.JsonSerializer;
using Patient = HipLibrary.Patient.Model.Patient;

public class PatientMatchingRepository : IMatchingRepository
{
Expand All @@ -20,34 +20,31 @@ public PatientMatchingRepository(HttpClient client)
this.client = client;
}

public async Task<IQueryable<Patient>> Where(HipLibrary.Patient.Model.Request.DiscoveryRequest predicate)
public async Task<IQueryable<HipLibrary.Patient.Model.Patient>> Where(HipLibrary.Patient.Model.Request.DiscoveryRequest predicate)
{
return new List<Patient>
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:49699/patients/find");
request.Content = new StringContent(
JsonConvert.SerializeObject(new {mobileNumber = predicate.Patient.VerifiedIdentifiers.First().Value}),
Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
await using var responseStream = await response.Content.ReadAsStreamAsync();
var result = await JsonSerializer.DeserializeAsync<IEnumerable<Discovery.Patient>>(responseStream);
return result.Select(patient => new HipLibrary.Patient.Model.Patient
{
new Patient
FirstName = patient.FirstName,
Gender = patient.Gender,
Identifier = patient.Identifier,
LastName = patient.LastName,
CareContexts = new List<CareContext>
{
Identifier = "5",
PhoneNumber = "8340289040",
CareContexts = new List<CareContext>
new CareContext
{
new CareContext
{
Description = "National Cancer Program",
ReferenceNumber = "131"
}
},
FirstName = "Ron",
LastName = "Doe"
}
}.AsQueryable();
// var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:49699/patients/find");
// request.Content = new StringContent(
// JsonConvert.SerializeObject(new {mobileNumber = predicate.Patient.VerifiedIdentifiers.First().Value}),
// Encoding.UTF8, "application/json");
// var response = await client.SendAsync(request);
// await using var responseStream = await response.Content.ReadAsStreamAsync();
// var result = await JsonSerializer.DeserializeAsync<IEnumerable<Patient>>(responseStream);
// return result.AsQueryable();
Description = $"{patient.FirstName} {patient.LastName}",
ReferenceNumber = $"{patient.Identifier}"
}
},
PhoneNumber = "8340289040"
}).AsQueryable();
}
}
}
32 changes: 26 additions & 6 deletions src/In.ProjectEKA.TMHHip/Link/PatientRepository.cs
Original file line number Diff line number Diff line change
@@ -1,28 +1,48 @@
using System.Net.Http;
using System.Text;

namespace In.ProjectEKA.TMHHip.Link
{
using System.Collections.Generic;
using HipLibrary.Patient;
using HipLibrary.Patient.Model;
using Optional;
using Newtonsoft.Json;
using JsonSerializer = System.Text.Json.JsonSerializer;

public class PatientRepository : IPatientRepository
{
private readonly HttpClient client;

public PatientRepository(HttpClient client)
{
this.client = client;
}

public Option<Patient> PatientWith(string referenceNumber)
{
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:49699/patients/get");
request.Content = new StringContent(
JsonConvert.SerializeObject(new {caseId = referenceNumber}),
Encoding.UTF8, "application/json");
var response = client.SendAsync(request).Result;
var responseStream = response.Content.ReadAsStringAsync().Result;
var patient = JsonSerializer.Deserialize<Discovery.Patient>(responseStream);
return Option.Some(new Patient
{
Identifier = "5",
PhoneNumber = "8340289040",
FirstName = patient.FirstName,
Gender = patient.Gender,
Identifier = patient.Identifier,
LastName = patient.LastName,
CareContexts = new List<CareContext>
{
new CareContext
{
Description = "National Cancer Program",
ReferenceNumber = "131"
Description = $"{patient.FirstName} {patient.LastName}",
ReferenceNumber = $"{patient.Identifier}"
}
},
FirstName = "Ron",
LastName = "Doe"
PhoneNumber = "8340289040"
});
}
}
Expand Down

0 comments on commit 4f7c778

Please sign in to comment.