aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala18
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala28
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala43
8 files changed, 95 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
new file mode 100644
index 0000000..d3e977e
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
@@ -0,0 +1,18 @@
+package xyz.driver.pdsuidomain.services
+
+import xyz.driver.core.Id
+import xyz.driver.core.rest.ServiceRequestContext
+import xyz.driver.entities.patient.CancerType
+import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
+import xyz.driver.pdsuidomain.entities.{Arm, Patient}
+
+import scala.concurrent.Future
+import scalaz.ListT
+
+trait EligibilityVerificationService {
+
+ def getMatchedPatients()(implicit ctx: ServiceRequestContext): ListT[Future, MatchedPatient]
+
+ def getMismatchRankedLabels(patientId: Id[Patient], cancerType: CancerType, excludedArms: Seq[Id[Arm]])(
+ implicit ctx: ServiceRequestContext): Future[MismatchRankedLabels]
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
index 9ff3879..6d85f85 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
@@ -2,6 +2,7 @@ package xyz.driver.pdsuidomain.services
import java.time.LocalDateTime
+import xyz.driver.entities.labels.Label
import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
index 2c17f74..abb3f8a 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
@@ -1,5 +1,6 @@
package xyz.driver.pdsuidomain.services
+import xyz.driver.entities.labels.Label
import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext
import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
index 56e2e3d..6871f3e 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
@@ -1,5 +1,6 @@
package xyz.driver.pdsuidomain.services
+import xyz.driver.entities.labels.Label
import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
index 71b8bd4..2a4d7fc 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
@@ -1,5 +1,6 @@
package xyz.driver.pdsuidomain.services
+import xyz.driver.entities.labels.Label
import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
new file mode 100644
index 0000000..c5531f9
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
@@ -0,0 +1,28 @@
+package xyz.driver.pdsuidomain.services.fake
+
+import xyz.driver.core.rest.ServiceRequestContext
+import xyz.driver.core.{Id, generators}
+import xyz.driver.entities.patient
+import xyz.driver.pdsuidomain.entities.eligibility.MismatchRankedLabels
+import xyz.driver.pdsuidomain.entities.{Arm, Patient, eligibility}
+import xyz.driver.pdsuidomain.services.EligibilityVerificationService
+
+import scala.concurrent.Future
+import scalaz.ListT
+
+class FakeEligibilityVerificationService extends EligibilityVerificationService {
+
+ override def getMatchedPatients()(implicit ctx: ServiceRequestContext): ListT[Future, eligibility.MatchedPatient] =
+ ListT.listT[Future](
+ Future.successful(List(xyz.driver.pdsuidomain.fakes.entities.eligibility.nextMatchedPatient())))
+
+ override def getMismatchRankedLabels(
+ patientId: Id[Patient],
+ cancerType: patient.CancerType,
+ excludedArms: Seq[Id[Arm]])(implicit ctx: ServiceRequestContext): Future[eligibility.MismatchRankedLabels] =
+ Future.successful(
+ MismatchRankedLabels(
+ generators.seqOf(xyz.driver.pdsuidomain.fakes.entities.eligibility.nextLabelMismatchRank()),
+ labelVersion = generators.nextInt(10)
+ ))
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
index 3793c1f..9aeb820 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
@@ -6,10 +6,11 @@ import akka.NotUsed
import akka.stream.scaladsl.Source
import akka.util.ByteString
import xyz.driver.core.generators
+import xyz.driver.entities.labels.Label
import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId}
-import xyz.driver.pdsuidomain.entities.{Arm, Criterion, Label, Trial}
+import xyz.driver.pdsuidomain.entities.{Arm, Criterion, Trial}
import xyz.driver.pdsuidomain.entities.export.trial.{ExportTrialArm, ExportTrialLabelCriterion, ExportTrialWithLabels}
import xyz.driver.pdsuidomain.services.TrialService
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"))
+ }
+}