diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala | 108 |
1 files changed, 0 insertions, 108 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 deleted file mode 100644 index 925ba65..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibility.scala +++ /dev/null @@ -1,108 +0,0 @@ -package xyz.driver.pdsuidomain.formats.json - -import spray.json.DefaultJsonProtocol._ -import spray.json._ -import DefaultJsonProtocol._ -import xyz.driver.core.Id -import xyz.driver.core.json._ -import xyz.driver.entities.labels.LabelValue -import xyz.driver.pdsuidomain.entities.eligibility._ - -object eligibility { - import export._ - import xyz.driver.formats.json.assay._ - import xyz.driver.formats.json.common._ - import xyz.driver.formats.json.labels._ - import xyz.driver.formats.json.process._ - import xyz.driver.pdsuidomain.formats.json.document._ - import xyz.driver.pdsuidomain.formats.json.record._ - import xyz.driver.pdsuidomain.formats.json.export._ - - implicit val molecularDocumentFormat: RootJsonFormat[MolecularEvidenceDocument] = jsonFormat7( - MolecularEvidenceDocument) - implicit val clinicalDocumentFormat: RootJsonFormat[ClinicalEvidenceDocument] = jsonFormat7(ClinicalEvidenceDocument) - - implicit val evidenceDocumentFormat: RootJsonFormat[EvidenceDocument] = - GadtJsonFormat.create[EvidenceDocument]("evidenceDocumentType") { - case _: MolecularEvidenceDocument => "Molecular" - case _: ClinicalEvidenceDocument => "Clinical" - } { - case "Molecular" => molecularDocumentFormat - case "Clinical" => clinicalDocumentFormat - } - - implicit object evidenceFormat extends RootJsonFormat[Evidence] { - - override def write(evidence: Evidence): JsValue = { - JsObject( - "evidenceId" -> evidence.evidenceId.toJson, - "evidenceText" -> evidence.evidenceText.toJson, - "labelValue" -> evidence.labelValue.toJson, - "document" -> evidence.document.toJson, - "isPrimaryValue" -> evidence.isPrimaryValue.toJson - ) - } - - override def read(json: JsValue): Evidence = { - json match { - case JsObject(fields) => - val evidenceId = fields - .get("evidenceId") - .map(_.convertTo[Id[Evidence]]) - - val evidenceText = fields - .get("evidenceText") - .map(_.convertTo[String]) - .getOrElse(deserializationError(s"Evidence json object do not contain 'evidenceText' field: $json")) - - val labelValue = fields - .get("labelValue") - .map(_.convertTo[LabelValue]) - .getOrElse(deserializationError(s"Evidence json object do not contain 'labelValue' field: $json")) - - val isDriverDocument = fields - .get("document") - .flatMap { - case JsObject(fieldMap) => - fieldMap - .get("isDriverDocument") - .map(_.convertTo[Boolean]) - case _ => deserializationError(s"Expected Json Object as 'isDriverDocument', but got $json") - } - .getOrElse(deserializationError(s"Evidence json object do not contain 'document' field: $json")) - - val document = customDocumentParser(isDriverDocument, fields, json) - - val isPrimaryValue = fields - .get("isPrimaryValue") - .map(_.convertTo[Option[Boolean]]) - .getOrElse(deserializationError(s"Evidence json object do not contain 'isPrimaryValue' field: $json")) - - Evidence(evidenceId, evidenceText, labelValue, document, isPrimaryValue) - case _ => deserializationError(s"Expected Json Object as 'Evidence', but got $json") - } - } - - def customDocumentParser(isDriverDocument: Boolean, - fields: Map[String, JsValue], - json: JsValue): EvidenceDocument = { - fields.get("document").fold { deserializationError(s"Expected Json Object as 'Document', but got $json") } { - document => - if (isDriverDocument) document.convertTo[MolecularEvidenceDocument] - else document.convertTo[ClinicalEvidenceDocument] - } - } - } - - implicit def labelWithEvidenceJsonFormat: RootJsonFormat[LabelEvidence] = jsonFormat2(LabelEvidence) - - implicit def labelRankingFormat: RootJsonFormat[LabelMismatchRank] = jsonFormat4(LabelMismatchRank) - 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) - -} |