aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiPartialEligibilityArm.scala
blob: aca22efb22c382402057b68ac17c40691ed1f385 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package xyz.driver.pdsuidomain.formats.json.eligibilityarm

import play.api.libs.json.{Format, Json}
import xyz.driver.entities.patient.CancerType
import xyz.driver.pdsuidomain.entities.{EligibilityArmDisease, EligibilityArmWithDiseases}

final case class ApiPartialEligibilityArm(name: String, diseases: Seq[String]) {

  def applyTo(armWithDisease: EligibilityArmWithDiseases): EligibilityArmWithDiseases = {
    val arm = armWithDisease.eligibilityArm.copy(name = name)
    val armDiseases = diseases.map { disease =>
      EligibilityArmDisease(
        armWithDisease.eligibilityArm.id,
        CancerType.fromString(disease).getOrElse(throw new NoSuchElementException(s"unknown condition $disease")))
    }
    EligibilityArmWithDiseases(arm, armDiseases)
  }
}

object ApiPartialEligibilityArm {

  implicit val format: Format[ApiPartialEligibilityArm] = Json.format
}