aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiIntervention.scala76
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala26
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala90
3 files changed, 0 insertions, 192 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiIntervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiIntervention.scala
deleted file mode 100644
index 072ed25..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiIntervention.scala
+++ /dev/null
@@ -1,76 +0,0 @@
-package xyz.driver.pdsuidomain.formats.json.intervention
-
-import xyz.driver.pdsuicommon.domain.{LongId, StringId}
-import xyz.driver.pdsuidomain.entities.{Intervention, InterventionArm, InterventionWithArms}
-import play.api.libs.functional.syntax._
-import play.api.libs.json.{Format, JsPath}
-
-final case class ApiIntervention(id: Long,
- name: String,
- typeId: Option[Long],
- dosage: String,
- isActive: Boolean,
- arms: List[Long],
- trialId: String,
- deliveryMethod: Option[String],
- originalName: String,
- originalDosage: String,
- originalType: Option[String]) {
-
- def toDomain = {
- val intervention = Intervention(
- id = LongId(this.id),
- trialId = StringId(this.trialId),
- name = this.name,
- originalName = this.originalName,
- typeId = this.typeId.map(id => LongId(id)),
- originalType = this.originalType.map(id => id.toString),
- dosage = this.dosage,
- originalDosage = this.originalDosage,
- isActive = this.isActive,
- deliveryMethod = this.deliveryMethod
- )
-
- InterventionWithArms(intervention, this.arms.map { armId =>
- InterventionArm(LongId(armId), intervention.id)
- })
-
- }
-
-}
-
-object ApiIntervention {
-
- implicit val format: Format[ApiIntervention] = (
- (JsPath \ "id").format[Long] and
- (JsPath \ "name").format[String] and
- (JsPath \ "typeId").formatNullable[Long] and
- (JsPath \ "dosage").format[String] and
- (JsPath \ "isActive").format[Boolean] and
- (JsPath \ "arms").format[List[Long]] and
- (JsPath \ "trialId").format[String] and
- (JsPath \ "deliveryMethod").formatNullable[String] and
- (JsPath \ "originalName").format[String] and
- (JsPath \ "originalDosage").format[String] and
- (JsPath \ "originalType").formatNullable[String]
- )(ApiIntervention.apply, unlift(ApiIntervention.unapply))
-
- def fromDomain(interventionWithArms: InterventionWithArms): ApiIntervention = {
- import interventionWithArms.intervention
- import interventionWithArms.arms
-
- ApiIntervention(
- id = intervention.id.id,
- name = intervention.name,
- typeId = intervention.typeId.map(_.id),
- dosage = intervention.dosage,
- isActive = intervention.isActive,
- arms = arms.map(_.armId.id),
- trialId = intervention.trialId.id,
- deliveryMethod = intervention.deliveryMethod,
- originalName = intervention.originalName,
- originalDosage = intervention.originalDosage,
- originalType = intervention.originalType
- )
- }
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala
deleted file mode 100644
index 3db8bfa..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-package xyz.driver.pdsuidomain.formats.json.intervention
-
-import play.api.libs.functional.syntax._
-import play.api.libs.json.{Format, JsPath}
-import xyz.driver.pdsuidomain.entities.InterventionType
-import xyz.driver.pdsuidomain.entities.InterventionType.DeliveryMethod
-
-final case class ApiInterventionType(id: Long, name: String, deliveryMethods: List[String]) {
-
- def toDomain = InterventionType.typeFromString(name)
-}
-
-object ApiInterventionType {
-
- implicit val format: Format[ApiInterventionType] = (
- (JsPath \ "id").format[Long] and
- (JsPath \ "name").format[String] and
- (JsPath \ "deliveryMethods").format[List[String]]
- )(ApiInterventionType.apply, unlift(ApiInterventionType.unapply))
-
- def fromDomain(interventionType: InterventionType) = ApiInterventionType(
- id = interventionType.id.id,
- name = interventionType.name,
- deliveryMethods = interventionType.deliveryMethods.map(DeliveryMethod.methodToString).toList
- )
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
deleted file mode 100644
index 28a8555..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
+++ /dev/null
@@ -1,90 +0,0 @@
-package xyz.driver.pdsuidomain.formats.json.intervention
-
-import play.api.data.validation.Invalid
-import xyz.driver.pdsuicommon.domain.{LongId, StringId}
-import xyz.driver.pdsuidomain.entities.{Intervention, InterventionArm, InterventionWithArms, Trial}
-import play.api.libs.functional.syntax._
-import play.api.libs.json._
-import xyz.driver.pdsuicommon.json.JsonValidationException
-import xyz.driver.pdsuicommon.validation.{AdditionalConstraints, JsonValidationErrors}
-
-import scala.collection.breakOut
-import scala.util.Try
-
-final case class ApiPartialIntervention(name: Option[String],
- trialId: Option[String],
- typeId: Option[Long],
- dosage: Option[String],
- isActive: Option[Boolean],
- deliveryMethod: Option[String],
- arms: Option[List[Long]]) {
-
- def applyTo(orig: InterventionWithArms): InterventionWithArms = {
- val origIntervention = orig.intervention
- val draftArmList = arms.map(_.map(x => InterventionArm(armId = LongId(x), interventionId = orig.intervention.id)))
- orig.copy(
- intervention = origIntervention.copy(
- name = name.getOrElse(origIntervention.name),
- typeId = typeId.map(LongId(_)).orElse(origIntervention.typeId),
- dosage = dosage.getOrElse(origIntervention.dosage),
- isActive = isActive.getOrElse(origIntervention.isActive),
- deliveryMethod = deliveryMethod.orElse(origIntervention.deliveryMethod)
- ),
- arms = draftArmList.getOrElse(orig.arms)
- )
- }
-
- def toDomain: Try[InterventionWithArms] = Try {
- val validation = Map(JsPath \ "trialId" -> AdditionalConstraints.optionNonEmptyConstraint(trialId))
-
- val validationErrors: JsonValidationErrors = validation.collect({
- case (fieldName, e: Invalid) => (fieldName, e.errors)
- })(breakOut)
-
- if (validationErrors.isEmpty) {
- InterventionWithArms(
- intervention = Intervention(
- id = LongId(0),
- trialId = trialId.map(StringId[Trial]).get,
- name = name.getOrElse(""),
- originalName = name.getOrElse(""),
- typeId = typeId.map(LongId(_)),
- originalType = Option(""),
- dosage = dosage.getOrElse(""),
- originalDosage = dosage.getOrElse(""),
- isActive = isActive.getOrElse(false),
- deliveryMethod = deliveryMethod
- ),
- arms =
- arms.map(_.map(x => InterventionArm(armId = LongId(x), interventionId = LongId(0)))).getOrElse(List.empty)
- )
- } else {
- throw new JsonValidationException(validationErrors)
- }
- }
-}
-
-object ApiPartialIntervention {
-
- private val reads: Reads[ApiPartialIntervention] = (
- (JsPath \ "name").readNullable[String] and
- (JsPath \ "trialId").readNullable[String] and
- (JsPath \ "typeId").readNullable[Long] and
- (JsPath \ "dosage").readNullable[String] and
- (JsPath \ "isActive").readNullable[Boolean] and
- (JsPath \ "deliveryMethod").readNullable[String] and
- (JsPath \ "arms").readNullable[List[Long]]
- )(ApiPartialIntervention.apply _)
-
- private val writes: Writes[ApiPartialIntervention] = (
- (JsPath \ "name").writeNullable[String] and
- (JsPath \ "trialId").writeNullable[String] and
- (JsPath \ "typeId").writeNullable[Long] and
- (JsPath \ "dosage").writeNullable[String] and
- (JsPath \ "isActive").writeNullable[Boolean] and
- (JsPath \ "deliveryMethod").writeNullable[String] and
- (JsPath \ "arms").writeNullable[List[Long]]
- )(unlift(ApiPartialIntervention.unapply))
-
- implicit val format: Format[ApiPartialIntervention] = Format(reads, writes)
-}