aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-08-14 14:15:14 +0600
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-08-14 14:15:14 +0600
commit442579b27ccbac82cb001a5b02402a593d005977 (patch)
treed11a24bd97d847fd29282fd7bcb79742553d6389 /src/main/scala/xyz/driver/pdsuidomain/formats/json
parentbfac6a54dcf37e0280cc8f2ec6ff3802dc8e8dfe (diff)
downloadrest-query-442579b27ccbac82cb001a5b02402a593d005977.tar.gz
rest-query-442579b27ccbac82cb001a5b02402a593d005977.tar.bz2
rest-query-442579b27ccbac82cb001a5b02402a593d005977.zip
PDSUI-2188 Created tests for export and dictionary API
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala68
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala78
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/hypothesis.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientcriterion.scala6
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/studydesign.scala12
5 files changed, 175 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
new file mode 100644
index 0000000..77fb4d2
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
@@ -0,0 +1,68 @@
+package xyz.driver.pdsuidomain.formats.json.sprayformats
+
+import java.time.LocalDateTime
+
+import spray.json._
+import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
+import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue.Item
+
+object bridgeuploadqueue {
+ import DefaultJsonProtocol._
+ import common._
+
+ implicit val queueUploadItemFormat: RootJsonFormat[BridgeUploadQueue.Item] = new RootJsonFormat[Item] {
+ override def write(obj: Item) =
+ JsObject(
+ "kind" -> obj.kind.toJson,
+ "tag" -> obj.tag.toJson,
+ "created" -> obj.created.toJson,
+ "attempts" -> obj.attempts.toJson,
+ "nextAttempt" -> obj.nextAttempt.toJson,
+ "completed" -> obj.completed.toJson
+ )
+
+ override def read(json: JsValue): Item = json match {
+ case JsObject(fields) =>
+ val kind = fields
+ .get("kind")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"BridgeUploadQueue.Item json object does not contain `kind` field: $json"))
+
+ val tag = fields
+ .get("tag")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"BridgeUploadQueue.Item json object does not contain `tag` field: $json"))
+
+ val created = fields
+ .get("created")
+ .map(_.convertTo[LocalDateTime])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `created` field: $json"))
+
+ val attempts = fields
+ .get("attempts")
+ .map(_.convertTo[Int])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `attempts` field: $json"))
+
+ val nextAttempt = fields
+ .get("nextAttempt")
+ .map(_.convertTo[LocalDateTime])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `nextAttempt` field: $json"))
+
+ BridgeUploadQueue.Item(
+ kind = kind,
+ tag = tag,
+ created = created,
+ attempts = attempts,
+ nextAttempt = nextAttempt,
+ completed = true,
+ dependencyKind = None,
+ dependencyTag = None
+ )
+
+ case _ => deserializationError(s"Expected Json Object as BridgeUploadQueue.Item, but got $json")
+ }
+ }
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala
new file mode 100644
index 0000000..20b6ed0
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala
@@ -0,0 +1,78 @@
+package xyz.driver.pdsuidomain.formats.json.sprayformats
+
+import spray.json._
+import xyz.driver.pdsuidomain.entities.export.patient._
+import xyz.driver.pdsuidomain.entities.export.trial.{ExportTrialArm, ExportTrialLabelCriterion, ExportTrialWithLabels}
+
+object export {
+ import DefaultJsonProtocol._
+ import common._
+ import record._
+
+ implicit val patientLabelEvidenceDocumentFormat: RootJsonFormat[ExportPatientLabelEvidenceDocument] = jsonFormat5(
+ ExportPatientLabelEvidenceDocument.apply)
+
+ implicit val patientLabelEvidenceWriter: JsonWriter[ExportPatientLabelEvidence] =
+ new JsonWriter[ExportPatientLabelEvidence] {
+ override def write(obj: ExportPatientLabelEvidence): JsValue =
+ JsObject(
+ "evidenceId" -> obj.id.toJson,
+ "labelValue" -> obj.value.toJson,
+ "evidenceText" -> obj.evidenceText.toJson,
+ "document" -> obj.document.toJson
+ )
+ }
+
+ implicit val patientLabelWriter: JsonWriter[ExportPatientLabel] = new JsonWriter[ExportPatientLabel] {
+ override def write(obj: ExportPatientLabel): JsValue =
+ JsObject(
+ "labelId" -> obj.id.toJson,
+ "evidence" -> obj.evidences.map(_.toJson).toJson
+ )
+ }
+
+ implicit val patientWithLabelsWriter: JsonWriter[ExportPatientWithLabels] = new JsonWriter[ExportPatientWithLabels] {
+ override def write(obj: ExportPatientWithLabels): JsValue =
+ JsObject(
+ "patientId" -> obj.patientId.toJson,
+ "labelVersion" -> obj.labelVersion.toJson,
+ "labels" -> obj.labels.map(_.toJson).toJson
+ )
+ }
+
+ implicit val trialArmFormat: RootJsonFormat[ExportTrialArm] = jsonFormat2(ExportTrialArm.apply)
+
+ implicit val trialLabelCriterionWriter: JsonWriter[ExportTrialLabelCriterion] =
+ new JsonWriter[ExportTrialLabelCriterion] {
+ override def write(obj: ExportTrialLabelCriterion): JsValue =
+ JsObject(
+ "value" -> obj.value
+ .map {
+ case true => "Yes"
+ case false => "No"
+ }
+ .getOrElse("Unknown")
+ .toJson,
+ "labelId" -> obj.labelId.toJson,
+ "criterionId" -> obj.criterionId.toJson,
+ "criterionText" -> obj.criteria.toJson,
+ "armIds" -> obj.armIds.toJson,
+ "isCompound" -> obj.isCompound.toJson,
+ "isDefining" -> obj.isDefining.toJson
+ )
+ }
+
+ implicit val trialWithLabelsWriter: JsonWriter[ExportTrialWithLabels] = new JsonWriter[ExportTrialWithLabels] {
+ override def write(obj: ExportTrialWithLabels) =
+ JsObject(
+ "nctId" -> obj.nctId.toJson,
+ "trialId" -> obj.trialId.toJson,
+ "disease" -> obj.condition.toJson,
+ "lastReviewed" -> obj.lastReviewed.toJson,
+ "labelVersion" -> obj.labelVersion.toJson,
+ "arms" -> obj.arms.toJson,
+ "criteria" -> obj.criteria.map(_.toJson).toJson
+ )
+ }
+
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/hypothesis.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/hypothesis.scala
new file mode 100644
index 0000000..c05ff23
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/hypothesis.scala
@@ -0,0 +1,12 @@
+package xyz.driver.pdsuidomain.formats.json.sprayformats
+
+import spray.json._
+import xyz.driver.pdsuidomain.entities._
+
+object hypothesis {
+ import DefaultJsonProtocol._
+ import common._
+
+ implicit val hypothesisFormat: RootJsonFormat[Hypothesis] = jsonFormat4(Hypothesis.apply)
+
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientcriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientcriterion.scala
index ff7593f..53e927d 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientcriterion.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientcriterion.scala
@@ -31,7 +31,11 @@ object patientcriterion {
case _ => deserializationError(s"Expected Json Object as partial PatientCriterion, but got $json")
}
- implicit val patientCriterionFormat: RootJsonFormat[DraftPatientCriterion] = jsonFormat3(DraftPatientCriterion.apply)
+ implicit val draftPatientCriterionFormat: RootJsonFormat[DraftPatientCriterion] = jsonFormat3(
+ DraftPatientCriterion.apply)
+ implicit val draftPatientCriterionListReader = new JsonReader[List[DraftPatientCriterion]] {
+ override def read(json: JsValue) = json.convertTo[List[JsValue]].map(_.convertTo[DraftPatientCriterion])
+ }
implicit val patientCriterionWriter: JsonWriter[(PatientCriterion, LongId[Label], List[PatientCriterionArm])] =
new JsonWriter[(PatientCriterion, LongId[Label], List[PatientCriterionArm])] {
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/studydesign.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/studydesign.scala
new file mode 100644
index 0000000..e801666
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/studydesign.scala
@@ -0,0 +1,12 @@
+package xyz.driver.pdsuidomain.formats.json.sprayformats
+
+import spray.json._
+import xyz.driver.pdsuidomain.entities._
+
+object studydesign {
+ import DefaultJsonProtocol._
+ import common._
+
+ implicit val studyDesignFormat: RootJsonFormat[StudyDesign] = jsonFormat2(StudyDesign.apply)
+
+}