aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-14 10:26:44 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-14 10:26:44 +0700
commited1ad48ac9f5a03839bbe176b363af6c84220e6b (patch)
treef6bb6ff1fc22f5d204d6e9e5f5d330d027048be1 /src/main/scala/xyz/driver/pdsuidomain/formats
parent7c3feb9b3bf7a1cc12e54c1d994649d03e70e14c (diff)
parent51d5d1ddba83f539405c6d395933e1f8a456c871 (diff)
downloadrest-query-ed1ad48ac9f5a03839bbe176b363af6c84220e6b.tar.gz
rest-query-ed1ad48ac9f5a03839bbe176b363af6c84220e6b.tar.bz2
rest-query-ed1ad48ac9f5a03839bbe176b363af6c84220e6b.zip
Merge branch 'master' into support-service-exceptions
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala5
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala26
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala5
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala10
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala88
5 files changed, 108 insertions, 26 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala
index 571cbde..925ba65 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala
@@ -100,4 +100,9 @@ object eligibility {
implicit def labelRankingsFormat: RootJsonFormat[MismatchRankedLabels] = jsonFormat2(MismatchRankedLabels)
implicit def matchedPatientFormat: RootJsonFormat[MatchedPatient] = jsonFormat6(MatchedPatient)
+
+ implicit lazy val eligibleTrialFormat: RootJsonFormat[EligibleTrial] = jsonFormat2(EligibleTrial.apply)
+ implicit lazy val eligibleArmFormat: RootJsonFormat[EligibleArm] = jsonFormat2(EligibleArm.apply)
+ implicit lazy val eligibleCriterionFormat: RootJsonFormat[EligibleCriterion] = jsonFormat2(EligibleCriterion.apply)
+
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
index f21b0cb..4c006f9 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
@@ -8,14 +8,13 @@ import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEl
object patienteligibletrial {
import DefaultJsonProtocol._
import common._
- import xyz.driver.pdsuidomain.formats.json.trial._
- import xyz.driver.pdsuidomain.formats.json.patientcriterion._
def applyUpdateToTrialArmGroup(json: JsValue, orig: PatientTrialArmGroupView): PatientTrialArmGroupView =
json match {
case JsObject(fields) =>
- val isVerified = fields.get("group").map(_.asJsObject)
- .flatMap(_.fields.get("isVerified")).map(_.convertTo[Boolean])
+ val isVerified = fields
+ .get("isVerified")
+ .map(_.convertTo[Boolean])
.getOrElse(orig.isVerified)
orig.copy(isVerified = isVerified)
@@ -23,10 +22,19 @@ object patienteligibletrial {
case _ => deserializationError(s"Expected Json Object as partial PatientTrialArmGroupView, but got $json")
}
- implicit val patientEligibleArmGroupView: RootJsonFormat[PatientTrialArmGroupView] =
- jsonFormat7(PatientTrialArmGroupView.apply)
-
- implicit val patientEligibleTrialFormat: RootJsonFormat[RichPatientEligibleTrial] =
- jsonFormat3(RichPatientEligibleTrial.apply)
+ implicit val patientEligibleTrialWriter: RootJsonWriter[RichPatientEligibleTrial] =
+ new RootJsonWriter[RichPatientEligibleTrial] {
+ override def write(obj: RichPatientEligibleTrial) =
+ JsObject(
+ "id" -> obj.group.id.toJson,
+ "patientId" -> obj.group.patientId.toJson,
+ "trialId" -> obj.group.trialId.toJson,
+ "trialTitle" -> obj.trial.title.toJson,
+ "arms" -> obj.arms.map(_.armName).toJson,
+ "hypothesisId" -> obj.trial.hypothesisId.toJson,
+ "verifiedEligibilityStatus" -> obj.group.verifiedEligibilityStatus.toJson,
+ "isVerified" -> obj.group.isVerified.toJson
+ )
+ }
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala
index cbe4951..d3fe2c9 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala
@@ -16,13 +16,8 @@ object record {
import common._
implicit val recordStatusFormat: EnumJsonFormat[Status] = new EnumJsonFormat[Status](
- "PreCleaning" -> Status.PreCleaning,
- "Unprocessed" -> Status.Unprocessed,
- "PreOrganized" -> Status.PreOrganized,
"New" -> Status.New,
"Cleaned" -> Status.Cleaned,
- "PreOrganized" -> Status.PreOrganized,
- "PreOrganizing" -> Status.PreOrganizing,
"Reviewed" -> Status.Reviewed,
"Organized" -> Status.Organized,
"Done" -> Status.Done,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala
index c8df1d8..f71ec12 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala
@@ -10,10 +10,12 @@ object trialhistory {
import common._
implicit val trialStateFormat = new EnumJsonFormat[State](
- "Summarize" -> State.Summarize,
- "Criteriarize" -> State.Criteriarize,
- "Review" -> State.Review,
- "Flag" -> State.Flag
+ "Summarize" -> State.Summarize,
+ "Criteriarize" -> State.Criteriarize,
+ "Review" -> State.Review,
+ "ReviewSummary" -> State.ReviewSummary,
+ "ReviewCriteria" -> State.ReviewCriteria,
+ "Flag" -> State.Flag
)
implicit val trialActionFormat = new EnumJsonFormat[Action](
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala
index f9bb0b6..79882c2 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala
@@ -2,16 +2,26 @@ package xyz.driver.pdsuidomain.formats.json
import java.time.LocalDateTime
-import spray.json._
+import spray.json.{RootJsonReader, _}
+import xyz.driver.core.{Id, auth}
import xyz.driver.core.auth.User
import xyz.driver.core.json._
import xyz.driver.pdsuicommon.domain.{LongId, StringId}
import xyz.driver.pdsuidomain.entities._
object trialissue {
+
import DefaultJsonProtocol._
import common._
+ private def deserializationErrorFieldMessage(field: String, json: JsValue)(implicit className: String) = {
+ deserializationError(s"$className json object do not contain '$field' field: $json")
+ }
+
+ private def deserializationErrorEntityMessage(json: JsValue)(implicit className: String) = {
+ deserializationError(s"Expected Json Object as $className, but got $json")
+ }
+
def applyUpdateToTrialIssue(json: JsValue, orig: TrialIssue): TrialIssue = {
json.asJsObject.getFields("text", "evidence", "archiveRequired", "meta") match {
case Seq(text, evidence, archiveRequired, meta) =>
@@ -48,15 +58,77 @@ object trialissue {
implicit val trialIssueWriter = new RootJsonWriter[TrialIssue] {
override def write(obj: TrialIssue) = JsObject(
- "id" -> obj.id.toJson,
- "text" -> obj.text.toJson,
- "lastUpdate" -> obj.lastUpdate.toJson,
- "userId" -> obj.userId.toJson,
- "isDraft" -> obj.isDraft.toJson,
- "evidence" -> obj.evidence.toJson,
+ "id" -> obj.id.toJson,
+ "text" -> obj.text.toJson,
+ "lastUpdate" -> obj.lastUpdate.toJson,
+ "userId" -> obj.userId.toJson,
+ "isDraft" -> obj.isDraft.toJson,
+ "evidence" -> obj.evidence.toJson,
"archiveRequired" -> obj.archiveRequired.toJson,
- "meta" -> obj.meta.toJson
+ "meta" -> obj.meta.toJson
)
}
+ def trialIssueReader(trialId: StringId[Trial]): RootJsonReader[TrialIssue] =
+ new RootJsonReader[TrialIssue] {
+ implicit val className: String = "TrialIssue"
+
+ override def read(json: JsValue): TrialIssue = json match {
+ case JsObject(fields) =>
+ val id = fields
+ .get("id")
+ .map(_.convertTo[LongId[TrialIssue]])
+ .getOrElse(deserializationErrorFieldMessage("id", json))
+
+ val text = fields
+ .get("text")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationErrorFieldMessage("text", json))
+
+ val lastUpdate = fields
+ .get("lastUpdate")
+ .map(_.convertTo[LocalDateTime])
+ .getOrElse(deserializationErrorFieldMessage("lastUpdate", json))
+
+ val userId = fields
+ .get("userId")
+ .map(_.convertTo[Id[auth.User]])
+ .getOrElse(deserializationErrorFieldMessage("userId", json))
+
+ val isDraft = fields
+ .get("isDraft")
+ .map(_.convertTo[Boolean])
+ .getOrElse(deserializationErrorFieldMessage("isDraft", json))
+
+ val evidence = fields
+ .get("evidence")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationErrorFieldMessage("evidence", json))
+
+ val archiveRequired = fields
+ .get("archiveRequired")
+ .map(_.convertTo[Boolean])
+ .getOrElse(deserializationErrorFieldMessage("archiveRequired", json))
+
+ val meta = fields
+ .get("meta")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationErrorFieldMessage("meta", json))
+
+ TrialIssue(
+ id = id,
+ userId = userId,
+ trialId = trialId,
+ lastUpdate = lastUpdate,
+ isDraft = isDraft,
+ text = text,
+ evidence = evidence,
+ archiveRequired = archiveRequired,
+ meta = meta
+ )
+
+ case _ => deserializationErrorEntityMessage(json)
+ }
+ }
+
}