aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-19 17:34:26 +0700
committerGitHub <noreply@github.com>2017-10-19 17:34:26 +0700
commitc04b779341e9d54e5b519db085420c9a1ea66610 (patch)
tree3101844311cddfb7e9efa953311ca1f725c2350a /src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
parent12cee94e187ada6413adc78e0fcc46ed930c306a (diff)
parent828cccb152ed525f6decf859283cc1b2589d106c (diff)
downloadrest-query-c04b779341e9d54e5b519db085420c9a1ea66610.tar.gz
rest-query-c04b779341e9d54e5b519db085420c9a1ea66610.tar.bz2
rest-query-c04b779341e9d54e5b519db085420c9a1ea66610.zip
Merge pull request #49 from drivergroup/TRIAL-54v0.9.3
TRIAL-54 Study designs as enum
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
index ac5feef..e734779 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
@@ -7,9 +7,41 @@ import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuicommon.utils.Utils
import xyz.driver.pdsuidomain.entities.Trial.Status
-final case class StudyDesign(id: LongId[StudyDesign], name: String)
+import scalaz.syntax.equal._
+import scalaz.Scalaz.stringInstance
+
+sealed trait StudyDesign {
+ val id: LongId[StudyDesign]
+ val name: String
+}
object StudyDesign {
+
+ final case object Randomized extends StudyDesign {
+ val id: LongId[StudyDesign] = LongId[StudyDesign](1)
+ val name: String = "Randomized"
+ }
+
+ final case object NonRandomized extends StudyDesign {
+ val id: LongId[StudyDesign] = LongId[StudyDesign](2)
+ val name: String = "Non-randomized"
+ }
+
+ final case object SingleGroupAssignment extends StudyDesign {
+ val id: LongId[StudyDesign] = LongId[StudyDesign](3)
+ val name: String = "Single-group assignment"
+ }
+
+ val All = Seq[StudyDesign](
+ Randomized,
+ NonRandomized,
+ SingleGroupAssignment
+ )
+
+ def fromString(txt: String): Option[StudyDesign] = {
+ All.find(_.name === txt)
+ }
+
implicit def toPhiString(x: StudyDesign): PhiString = {
import x._
phi"StudyDesign(id=$id, category=${Unsafe(name)})"