aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr <ognelisar@gmail.com>2017-10-13 13:38:09 +0700
committerAleksandr <ognelisar@gmail.com>2017-10-13 13:38:09 +0700
commitf466bbbdb2cea1f64f7b3781795f890aaf390acf (patch)
treed2679c1702868bc15008158d726cddba7f1b1977
parent6a925b07d0ffb084cb07051ed334ce17defab128 (diff)
downloadrest-query-f466bbbdb2cea1f64f7b3781795f890aaf390acf.tar.gz
rest-query-f466bbbdb2cea1f64f7b3781795f890aaf390acf.tar.bz2
rest-query-f466bbbdb2cea1f64f7b3781795f890aaf390acf.zip
Fixed criterion and intervention formats
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala29
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala14
2 files changed, 21 insertions, 22 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala
index 52d82dc..47a46d1 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala
@@ -26,20 +26,21 @@ object criterion {
case JsObject(fields) =>
val labelId = fields
.get("labelId")
- .map(_.convertTo[LongId[Label]])
+ .flatMap(_.convertTo[Option[LongId[Label]]])
val categoryId = fields
.get("categoryId")
- .map(_.convertTo[LongId[LabelCategory]])
+ .flatMap(_.convertTo[Option[LongId[LabelCategory]]])
val value = fields
.get("value")
- .map(_.convertTo[String] match {
+ .flatMap(_.convertTo[Option[String]])
+ .map {
case "Yes" => true
- case "No" => false
+ case "No" => false
case other =>
deserializationError(s"Unknown `value` of CriterionLabel object: expected `yes` or `no`, but got $other")
- })
+ }
val isDefining = fields
.get("isDefining")
@@ -125,7 +126,7 @@ object criterion {
val text = fields
.get("text")
- .map(_.convertTo[String])
+ .flatMap(_.convertTo[Option[String]])
val isCompound = fields
.get("isCompound")
@@ -133,24 +134,22 @@ object criterion {
val meta = fields
.get("meta")
- .map(_.convertTo[String])
- .getOrElse("")
+ .flatMap(_.convertTo[Option[String]])
val inclusion = fields
.get("inclusion")
- .map(_.convertTo[Option[Boolean]])
- .getOrElse(None)
+ .flatMap(_.convertTo[Option[Boolean]])
val arms = fields
.get("arms")
- .map(_.convertTo[List[LongId[EligibilityArm]]])
- .getOrElse(List.empty[LongId[EligibilityArm]])
+ .map(_.convertTo[Seq[LongId[EligibilityArm]]])
+ .getOrElse(Seq.empty[LongId[EligibilityArm]])
val labels = fields
.get("labels")
- .map(_.convertTo[List[JsValue]])
+ .map(_.convertTo[Seq[JsValue]])
.map(_.map(l => jsValueToCriterionLabel(l, LongId(0))))
- .getOrElse(List.empty[CriterionLabel])
+ .getOrElse(Seq.empty[CriterionLabel])
RichCriterion(
criterion = Criterion(
@@ -158,7 +157,7 @@ object criterion {
trialId = trialId,
text = text,
isCompound = isCompound,
- meta = meta,
+ meta = meta.getOrElse(""),
inclusion = inclusion
),
armIds = arms,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala
index 0fcc61f..f0d1a0a 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala
@@ -34,7 +34,7 @@ object intervention {
val typeId = fields
.get("typeId")
- .map(_.convertTo[LongId[InterventionType]])
+ .flatMap(_.convertTo[Option[LongId[InterventionType]]])
val name = fields
.get("name")
@@ -44,7 +44,6 @@ object intervention {
val dosage = fields
.get("dosage")
.map(_.convertTo[String])
- .getOrElse("")
val isActive = fields
.get("isActive")
@@ -52,23 +51,24 @@ object intervention {
val deliveryMethod = fields
.get("deliveryMethod")
- .map(_.convertTo[String])
+ .flatMap(_.convertTo[Option[String]])
val arms = fields
.get("arms")
- .map(_.convertTo[List[LongId[SlotArm]]].map(x => InterventionArm(armId = x, interventionId = LongId(0))))
+ .map(_.convertTo[List[LongId[SlotArm]]])
+ .map(_ map(x => InterventionArm(armId = x, interventionId = LongId(0L))))
.getOrElse(List.empty[InterventionArm])
InterventionWithArms(
intervention = Intervention(
- id = LongId(0),
+ id = LongId(0L),
trialId = trialId,
name = name,
originalName = name,
typeId = typeId,
originalType = None,
- dosage = dosage,
- originalDosage = dosage,
+ dosage = dosage.getOrElse(""),
+ originalDosage = dosage.getOrElse(""),
isActive = isActive,
deliveryMethod = deliveryMethod
),