aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala8
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala6
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala4
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala4
-rw-r--r--src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala9
5 files changed, 22 insertions, 9 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
index e46e11c..85e9149 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
@@ -104,9 +104,12 @@ object SearchFilterParser {
private val longParser: Parser[Long] = P(CharIn('0' to '9').rep(min = 1).!.map(_.toLong))
+ private val booleanParser: Parser[Boolean] =
+ P((IgnoreCase("true") | IgnoreCase("false")).!.map(_.toBoolean))
+
private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P(
dimensionParser ~ whitespaceParser ~ (
- (numericOperatorParser.! ~ whitespaceParser ~ (longParser | numberParser.!)) |
+ (numericOperatorParser.! ~ whitespaceParser ~ (longParser | booleanParser | numberParser.!)) |
(commonOperatorParser.! ~ whitespaceParser ~ AnyChar.rep(min = 1).!)
) ~ End
).map {
@@ -116,7 +119,8 @@ object SearchFilterParser {
private val nAryAtomParser: Parser[SearchFilterExpr.Atom.NAry] = P(
dimensionParser ~ whitespaceParser ~ (
naryOperatorParser ~ whitespaceParser ~
- (longParser.rep(min = 1, sep = ",") | nAryValueParser.!.rep(min = 1, sep = ","))
+ (longParser.rep(min = 1, sep = ",") | booleanParser.rep(min = 1, sep = ",") | nAryValueParser.!.rep(min = 1,
+ sep = ","))
) ~ End
).map {
case NAryAtomFromTuple(atom) => atom
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
index c09dd9a..3788617 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
@@ -6,7 +6,7 @@ import xyz.driver.entities.patient.{CancerType, Patient}
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
-import xyz.driver.pdsuidomain.entities.Arm
+import xyz.driver.pdsuidomain.entities.EligibilityArm
import scala.concurrent.Future
import scalaz.ListT
@@ -15,6 +15,8 @@ trait EligibilityVerificationService {
def getMatchedPatients()(implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): ListT[Future, MatchedPatient]
- def getMismatchRankedLabels(patientId: Id[Patient], cancerType: CancerType, excludedArms: Seq[LongId[Arm]])(
+ def getMismatchRankedLabels(patientId: Id[Patient],
+ cancerType: CancerType,
+ excludedArms: Seq[LongId[EligibilityArm]])(
implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[MismatchRankedLabels]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
index c9b5443..35c518c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
@@ -7,7 +7,7 @@ import xyz.driver.entities.patient.Patient
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities.eligibility.MismatchRankedLabels
-import xyz.driver.pdsuidomain.entities.{Arm, eligibility}
+import xyz.driver.pdsuidomain.entities.{EligibilityArm, eligibility}
import xyz.driver.pdsuidomain.services.EligibilityVerificationService
import scala.concurrent.Future
@@ -22,7 +22,7 @@ class FakeEligibilityVerificationService extends EligibilityVerificationService
override def getMismatchRankedLabels(patientId: Id[Patient],
cancerType: patient.CancerType,
- excludedArms: Seq[LongId[Arm]])(
+ excludedArms: Seq[LongId[EligibilityArm]])(
implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[eligibility.MismatchRankedLabels] =
Future.successful(
MismatchRankedLabels(
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
index 8869106..d727d70 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
@@ -10,7 +10,7 @@ import xyz.driver.entities.patient.Patient
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
-import xyz.driver.pdsuidomain.entities.{Arm, eligibility}
+import xyz.driver.pdsuidomain.entities.{EligibilityArm, eligibility}
import xyz.driver.pdsuidomain.services.EligibilityVerificationService
import scala.concurrent.{ExecutionContext, Future}
@@ -34,7 +34,7 @@ class RestEligibilityVerificationService(transport: ServiceTransport, baseUri: U
override def getMismatchRankedLabels(patientId: Id[Patient],
cancerType: patient.CancerType,
- excludedArms: Seq[LongId[Arm]])(
+ excludedArms: Seq[LongId[EligibilityArm]])(
implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[eligibility.MismatchRankedLabels] = {
val query =
diff --git a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
index 02243aa..ac5eec1 100644
--- a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
@@ -113,12 +113,19 @@ class SearchFilterParserSuite extends FreeSpecLike with Checkers {
}
"actual recordId" - {
- "should not be parsed with text values" in {
+ "should not be parsed with numeric values" in {
val filter = SearchFilterParser.parse(Seq("filters" -> "recordId EQ 1"))
assert(filter === Success(SearchFilterExpr.Atom.Binary(Dimension(None, "record_id"), Eq, Long.box(1))))
}
}
+ "actual isVisible boolean" - {
+ "should not be parsed with boolean values" in {
+ val filter = SearchFilterParser.parse(Seq("filters" -> "isVisible EQ true"))
+ assert(filter === Success(SearchFilterExpr.Atom.Binary(Dimension(None, "is_visible"), Eq, Boolean.box(true))))
+ }
+ }
+
"all operators" - {
"should be parsed with numeric values" in check {
val testQueryGen = queryGen(