aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services/rest
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/rest')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala46
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala9
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala8
3 files changed, 56 insertions, 7 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..f6879d0
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
@@ -0,0 +1,46 @@
+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.{AuthorizedServiceRequestContext, RestService, ServiceTransport}
+import xyz.driver.entities.patient
+import xyz.driver.entities.patient.Patient
+import xyz.driver.entities.users.AuthUserInfo
+import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
+import xyz.driver.pdsuidomain.entities.{Arm, 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: AuthorizedServiceRequestContext[AuthUserInfo]): 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: AuthorizedServiceRequestContext[AuthUserInfo]): 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"))
+ }
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala
index 53b9f38..a65e1f4 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala
@@ -1,7 +1,6 @@
package xyz.driver.pdsuidomain.services.rest
import scala.concurrent.{ExecutionContext, Future}
-
import akka.http.scaladsl.marshalling.Marshal
import akka.http.scaladsl.model._
import akka.stream.Materializer
@@ -10,10 +9,12 @@ import xyz.driver.pdsuicommon.auth._
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
import xyz.driver.pdsuidomain.entities._
+import xyz.driver.pdsuidomain.entities.export.patient.ExportPatientWithLabels
import xyz.driver.pdsuidomain.formats.json.ListResponse
-import xyz.driver.pdsuidomain.formats.json.export.ApiExportPatientWithLabels
import xyz.driver.pdsuidomain.formats.json.extracteddata.ApiExtractedData
import xyz.driver.pdsuidomain.services.ExtractedDataService
+import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
+import xyz.driver.pdsuidomain.formats.json.sprayformats.export._
class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)(
implicit protected val materializer: Materializer,
@@ -88,9 +89,9 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)(
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/patient/$id"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ApiExportPatientWithLabels](response)
+ reply <- apiResponse[ExportPatientWithLabels](response)
} yield {
- GetPatientLabelsReply.Entity(reply.toDomain)
+ GetPatientLabelsReply.Entity(reply)
}
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
index b77e6df..7e33919 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
@@ -12,10 +12,12 @@ import xyz.driver.pdsuicommon.auth._
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
import xyz.driver.pdsuidomain.entities._
+import xyz.driver.pdsuidomain.entities.export.trial.ExportTrialWithLabels
import xyz.driver.pdsuidomain.formats.json.ListResponse
-import xyz.driver.pdsuidomain.formats.json.export.ApiExportTrialWithLabels
import xyz.driver.pdsuidomain.formats.json.trial.ApiTrial
import xyz.driver.pdsuidomain.services.TrialService
+import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
+import xyz.driver.pdsuidomain.formats.json.sprayformats.export._
class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit protected val materializer: Materializer,
protected val exec: ExecutionContext)
@@ -39,9 +41,9 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/trial/$disease/$trialId"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ApiExportTrialWithLabels](response)
+ reply <- apiResponse[ExportTrialWithLabels](response)
} yield {
- GetTrialWithLabelsReply.Entity(reply.toDomain)
+ GetTrialWithLabelsReply.Entity(reply)
}
}