diff options
author | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2017-10-02 18:37:52 +0700 |
---|---|---|
committer | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2017-10-02 18:37:52 +0700 |
commit | d0e3c6f37347142a3ef5eab871dde47ea70af304 (patch) | |
tree | a87d24b1b5d6489576f00fe446f05b5110d62cc0 /src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala | |
parent | 283ca02360949143ffe7ee8ad87d51902426b450 (diff) | |
parent | 1913870abec9e31d080f6858d0fc296445852cc6 (diff) | |
download | rest-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.scala | 43 |
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")) + } +} |