diff options
author | vlad <vlad@driver.xyz> | 2017-10-01 12:50:54 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-10-01 12:50:54 -0700 |
commit | b5e0d5f91b52013bc11ef3ea586a54bb001577bc (patch) | |
tree | 58d6ca321e1f9176d02e24fbde6321bddadb21ee /src/main/scala/xyz/driver/pdsuidomain/services/rest | |
parent | 46b354b6a49c0843fefc5794f2351f52b98102bd (diff) | |
download | rest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.tar.gz rest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.tar.bz2 rest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.zip |
Fixing IN in filters, Model from EVLS added to common, Reusing domain model labelsv0.5.1
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/rest')
-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")) + } +} |