diff options
author | vlad <vlad@driver.xyz> | 2017-06-27 17:13:02 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-06-27 17:13:02 -0700 |
commit | 5832f63b84d7388441d1200f2442dc1e9de0225c (patch) | |
tree | 32f63acdc920c14effc3d0d2822c05c125ad49e4 /src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis | |
parent | 9dd50590d4c8f8b9442d7c21ddd1def9dd453d5e (diff) | |
download | rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.gz rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.bz2 rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.zip |
All PDS UI domain models, API case classes, service traits and necessary utils moved to pdsui-commonv0.1.11
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis')
2 files changed, 59 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) +} diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPatientHypothesis.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPatientHypothesis.scala new file mode 100644 index 0000000..1b0767d --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/hypothesis/ApiPatientHypothesis.scala @@ -0,0 +1,32 @@ +package xyz.driver.pdsuidomain.formats.json.patient.hypothesis + +import java.util.UUID + +import xyz.driver.pdsuidomain.entities.PatientHypothesis +import play.api.libs.functional.syntax._ +import play.api.libs.json._ + +final case class ApiPatientHypothesis(id: UUID, + patientId: String, + hypothesisId: UUID, + matchedTrials: Long, + rationale: Option[String]) + +object ApiPatientHypothesis { + + implicit val apiPatientHypothesisJsonFormat: Format[ApiPatientHypothesis] = ( + (JsPath \ "id").format[UUID] and + (JsPath \ "patientId").format[String] and + (JsPath \ "hypothesisId").format[UUID] and + (JsPath \ "matchedTrials").format[Long] and + (JsPath \ "rationale").formatNullable[String] + ) (ApiPatientHypothesis.apply, unlift(ApiPatientHypothesis.unapply)) + + def fromDomain(patientHypothesis: PatientHypothesis) = ApiPatientHypothesis( + id = patientHypothesis.id.id, + patientId = patientHypothesis.patientId.toString, + hypothesisId = patientHypothesis.hypothesisId.id, + matchedTrials = patientHypothesis.matchedTrials, + rationale = patientHypothesis.rationale + ) +} |