diff options
author | Kseniya Tomskikh <ktomskih@datamonsters.co> | 2017-10-19 17:34:26 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-19 17:34:26 +0700 |
commit | c04b779341e9d54e5b519db085420c9a1ea66610 (patch) | |
tree | 3101844311cddfb7e9efa953311ca1f725c2350a /src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala | |
parent | 12cee94e187ada6413adc78e0fcc46ed930c306a (diff) | |
parent | 828cccb152ed525f6decf859283cc1b2589d106c (diff) | |
download | rest-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.scala | 34 |
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)})" |