aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-07-03 18:06:35 +0600
committerVyatcheslav Suharnikov <arz.freezy@gmail.com>2017-07-11 23:23:32 +0300
commit01170a92bec7e09be89727143b442e4fb78446e7 (patch)
treedfb35a72bc4f655e46cea2e89d3279085904785f /src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
parent64b1565004ff530c34484dd80bff268e46c864ca (diff)
downloadrest-query-01170a92bec7e09be89727143b442e4fb78446e7.tar.gz
rest-query-01170a92bec7e09be89727143b442e4fb78446e7.tar.bz2
rest-query-01170a92bec7e09be89727143b442e4fb78446e7.zip
PDSUI-2003 Added arm ids list to PatientCriterion
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
new file mode 100644
index 0000000..6c14458
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
@@ -0,0 +1,69 @@
+package xyz.driver.pdsuidomain.entities
+
+import java.time.LocalDateTime
+
+import xyz.driver.pdsuicommon.domain.{FuzzyValue, LongId, StringId}
+import xyz.driver.pdsuicommon.logging._
+
+object PatientCriterion {
+ implicit def toPhiString(x: PatientCriterion): PhiString = {
+ import x._
+ phi"PatientCriterion(id=$id, patientLabelId=$patientLabelId, trialId=${Unsafe(trialId)}, nctId=${Unsafe(nctId)}, " +
+ phi"criterionId=$criterionId, criterionValue=${Unsafe(criterionValue)}, " +
+ phi"isImplicitMatch=$criterionIsDefining), criterionIsDefining=${Unsafe(criterionIsDefining)}, " +
+ phi"eligibilityStatus=${Unsafe(eligibilityStatus)}, verifiedEligibilityStatus=${Unsafe(verifiedEligibilityStatus)}, " +
+ phi"isVerified=${Unsafe(isVerified)}, lastUpdate=${Unsafe(lastUpdate)}"
+ }
+
+ /**
+ * @see https://driverinc.atlassian.net/wiki/display/MTCH/EV+Business+Process
+ */
+ def getEligibilityStatus(criterionValue: Option[Boolean], primaryValue: Option[FuzzyValue]): Option[FuzzyValue] = {
+ primaryValue match {
+ case None => None
+ case Some(FuzzyValue.Maybe) => Some(FuzzyValue.Maybe)
+ case Some(_) if criterionValue.isEmpty => Some(FuzzyValue.Maybe)
+ case Some(status) =>
+ Some(
+ FuzzyValue.fromBoolean(
+ FuzzyValue.fromBoolean(
+ criterionValue.getOrElse(throw new IllegalArgumentException("Criterion should not be empty"))) == status
+ ))
+ }
+ }
+
+}
+
+/**
+ * @param eligibilityStatus - a value, that selects an eligibility verifier (EV)
+ * @param verifiedEligibilityStatus - a copy of eligibilityStatus, when a patient goes to routes curator (RC)
+ * @param isVerified - is EV selected the eligibilityStatus?
+ */
+final case class PatientCriterion(id: LongId[PatientCriterion],
+ patientLabelId: LongId[PatientLabel],
+ trialId: Long,
+ nctId: StringId[Trial],
+ criterionId: LongId[Criterion],
+ criterionText: String,
+ criterionValue: Option[Boolean],
+ criterionIsDefining: Boolean,
+ eligibilityStatus: Option[FuzzyValue],
+ verifiedEligibilityStatus: Option[FuzzyValue],
+ isVerified: Boolean,
+ isVisible: Boolean,
+ lastUpdate: LocalDateTime) {
+ def isIneligibleForEv: Boolean = eligibilityStatus.contains(FuzzyValue.No) && isVerified
+}
+
+object PatientCriterionArm {
+
+ implicit def toPhiString(x: PatientCriterionArm): PhiString = {
+ import x._
+ phi"PatientCriterionArm(patientCriterionId=$patientCriterionId, armId=$armId, armName=${Unsafe(armName)})"
+ }
+
+}
+
+final case class PatientCriterionArm(patientCriterionId: LongId[PatientCriterion],
+ armId: LongId[Arm],
+ armName: String)