aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-02 18:37:52 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-02 18:37:52 +0700
commitd0e3c6f37347142a3ef5eab871dde47ea70af304 (patch)
treea87d24b1b5d6489576f00fe446f05b5110d62cc0 /src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
parent283ca02360949143ffe7ee8ad87d51902426b450 (diff)
parent1913870abec9e31d080f6858d0fc296445852cc6 (diff)
downloadrest-query-d0e3c6f37347142a3ef5eab871dde47ea70af304.tar.gz
rest-query-d0e3c6f37347142a3ef5eab871dde47ea70af304.tar.bz2
rest-query-d0e3c6f37347142a3ef5eab871dde47ea70af304.zip
Merge branch 'master' into synch-refactor
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
new file mode 100644
index 0000000..07757e3
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
@@ -0,0 +1,43 @@
+package xyz.driver.pdsuidomain.services.rest
+
+import akka.http.scaladsl.model.Uri
+import akka.stream.Materializer
+import spray.json.DefaultJsonProtocol
+import xyz.driver.core.Id
+import xyz.driver.core.rest.{RestService, ServiceRequestContext, ServiceTransport}
+import xyz.driver.entities.patient
+import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
+import xyz.driver.pdsuidomain.entities.{Arm, Patient, eligibility}
+import xyz.driver.pdsuidomain.services.EligibilityVerificationService
+
+import scala.concurrent.{ExecutionContext, Future}
+import scalaz.ListT
+import scalaz.Scalaz.futureInstance
+
+class RestEligibilityVerificationService(transport: ServiceTransport, baseUri: Uri)(
+ implicit protected val materializer: Materializer,
+ protected val exec: ExecutionContext
+) extends EligibilityVerificationService with RestService {
+
+ import DefaultJsonProtocol._
+ import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
+ import xyz.driver.pdsuidomain.formats.json.sprayformats.eligibility._
+
+ override def getMatchedPatients()(implicit ctx: ServiceRequestContext): ListT[Future, eligibility.MatchedPatient] = {
+ val request = get(baseUri, s"/v1/patients")
+ listResponse[MatchedPatient](transport.sendRequest(ctx)(request))
+ }
+
+ override def getMismatchRankedLabels(patientId: Id[Patient],
+ cancerType: patient.CancerType,
+ excludedArms: Seq[Id[Arm]])(
+ implicit ctx: ServiceRequestContext): Future[eligibility.MismatchRankedLabels] = {
+
+ val query =
+ Seq("disease" -> cancerType.toString.toUpperCase, "ineligible_arms" -> excludedArms.map(_.value).mkString(","))
+
+ val request = get(baseUri, s"/v1/patients/$patientId/labels", query)
+ optionalResponse[MismatchRankedLabels](transport.sendRequest(ctx)(request))
+ .getOrElse(throw new Exception(s"The data of patient $patientId is not ready yet"))
+ }
+}