aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/entities')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/Intervention.scala15
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala34
2 files changed, 38 insertions, 11 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Intervention.scala
index f02bedc..5e743b7 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/Intervention.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Intervention.scala
@@ -5,6 +5,9 @@ import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities.InterventionType.DeliveryMethod
import xyz.driver.pdsuidomain.entities.InterventionType.DeliveryMethod._
+import scalaz.syntax.equal._
+import scalaz.Scalaz.stringInstance
+
sealed trait InterventionType {
val id: LongId[InterventionType]
val name: String
@@ -78,16 +81,8 @@ object InterventionType {
)
}
- def typeFromString: PartialFunction[String, InterventionType] = {
- case "Radiation therapy" => RadiationTherapy
- case "Chemotherapy" => Chemotherapy
- case "Targeted therapy" => TargetedTherapy
- case "Immunotherapy" => Immunotherapy
- case "Surgery" => Surgery
- case "Hormone therapy" => HormoneTherapy
- case "Other" => Other
- case "Radiation" => Radiation
- case "Surgery/Procedure" => SurgeryProcedure
+ def typeFromString(txt: String): Option[InterventionType] = {
+ All.values.find(_.name === txt)
}
sealed trait DeliveryMethod
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)})"