aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala
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/sprayformats/export.scala
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/sprayformats/export.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/export.scala78
1 files changed, 78 insertions, 0 deletions
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
+ )
+ }
+
+}