diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPartialPatientHypothesis.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPartialPatientHypothesis.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPartialPatientHypothesis.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPartialPatientHypothesis.scala new file mode 100644 index 0000000..0858ce1 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPartialPatientHypothesis.scala @@ -0,0 +1,27 @@ +package xyz.driver.pdsuidomain.formats.json.patient.hypothesis + +import xyz.driver.pdsuidomain.entities.PatientHypothesis +import org.davidbild.tristate.Tristate +import org.davidbild.tristate.contrib.play.ToJsPathOpsFromJsPath +import play.api.libs.functional.syntax._ +import play.api.libs.json._ + +final case class ApiPartialPatientHypothesis(rationale: Tristate[String]) { + + def applyTo(orig: PatientHypothesis): PatientHypothesis = { + orig.copy( + rationale = rationale.cata(Some(_), None, orig.rationale) + ) + } +} + +object ApiPartialPatientHypothesis { + + implicit val reads: Reads[ApiPartialPatientHypothesis] = + (__ \ "rationale").readTristate[String].map(x => ApiPartialPatientHypothesis(x)) + + implicit val writes: Writes[ApiPartialPatientHypothesis] = + (__ \ "rationale").writeTristate[String].contramap(_.rationale) + + implicit val format: Format[ApiPartialPatientHypothesis] = Format(reads, writes) +} |