From ef9517e1b8f599fbdd15c474cf7dfea61e803c2f Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Fri, 4 Aug 2017 17:57:12 +0600 Subject: PDSUI-2188 Created and fixed spray json formats for tric and rep --- .../formats/json/sprayformats/patientlabel.scala | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientlabel.scala (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientlabel.scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientlabel.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientlabel.scala new file mode 100644 index 0000000..e29b9fd --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/patientlabel.scala @@ -0,0 +1,66 @@ +package xyz.driver.pdsuidomain.formats.json.sprayformats + +import spray.json._ +import xyz.driver.pdsuicommon.domain.FuzzyValue +import xyz.driver.pdsuidomain.entities._ + +object patientlabel { + import DefaultJsonProtocol._ + import common._ + + def applyUpdateToPatientLabel(json: JsValue, orig: PatientLabel): PatientLabel = json match { + case JsObject(fields) => + val primaryValue = if (fields.contains("primaryValue")) { + fields + .get("primaryValue") + .map(_.convertTo[FuzzyValue]) + } else orig.primaryValue + + val verifiedPrimaryValue = if (fields.contains("verifiedPrimaryValue")) { + fields + .get("verifiedPrimaryValue") + .map(_.convertTo[FuzzyValue]) + } else orig.verifiedPrimaryValue + + orig.copy( + primaryValue = primaryValue, + verifiedPrimaryValue = verifiedPrimaryValue + ) + + case _ => deserializationError(s"Expected Json Object as PatientLabel, but got $json") + } + + implicit val patientLabelWriter: JsonWriter[(PatientLabel, Boolean)] = new JsonWriter[(PatientLabel, Boolean)] { + override def write(obj: (PatientLabel, Boolean)): JsValue = { + val patientLabel = obj._1 + val isVerified = obj._2 + JsObject( + "id" -> patientLabel.id.toJson, + "labelId" -> patientLabel.labelId.toJson, + "primaryValue" -> patientLabel.primaryValue.toJson, + "verifiedPrimaryValue" -> patientLabel.verifiedPrimaryValue.toJson, + "score" -> patientLabel.score.toJson, + "isImplicitMatch" -> patientLabel.isImplicitMatch.toJson, + "isVisible" -> patientLabel.isVisible.toJson, + "isVerified" -> isVerified.toJson + ) + } + } + + implicit val patientLabelEvidenceWriter: JsonWriter[PatientLabelEvidenceView] = + new JsonWriter[PatientLabelEvidenceView] { + override def write(evidence: PatientLabelEvidenceView): JsValue = + JsObject( + "id" -> evidence.id.toJson, + "value" -> evidence.value.toJson, + "evidenceText" -> evidence.evidenceText.toJson, + "documentId" -> evidence.documentId.toJson, + "evidenceId" -> evidence.evidenceId.toJson, + "reportId" -> evidence.isImplicitMatch.toJson, + "documentType" -> evidence.documentType.toJson, + "date" -> evidence.date.toJson, + "providerType" -> evidence.providerType.toJson + ) + } + +} -- cgit v1.2.3