aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-18 13:51:47 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-18 13:51:47 +0700
commit15d74838eb592c58bb0a912380f0ec1f537be333 (patch)
tree0d50474a49c0e18ef49641d06422f23891af6aa7 /src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala
parent2a9bada86658ef15793f99f1867e23f3b31e7032 (diff)
downloadrest-query-15d74838eb592c58bb0a912380f0ec1f537be333.tar.gz
rest-query-15d74838eb592c58bb0a912380f0ec1f537be333.tar.bz2
rest-query-15d74838eb592c58bb0a912380f0ec1f537be333.zip
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)})"