package xyz.driver.pdsuidomain.formats.json.export import play.api.libs.functional.syntax._ import play.api.libs.json.{Format, JsPath} import xyz.driver.pdsuidomain.entities.export.patient.ExportPatientWithLabels final case class ApiExportPatientWithLabels(patientId: String, labelVersion: Long, labels: List[ApiExportPatientLabel]) object ApiExportPatientWithLabels { implicit val format: Format[ApiExportPatientWithLabels] = ( (JsPath \ "patientId").format[String] and (JsPath \ "labelVersion").format[Long] and (JsPath \ "labels").format[List[ApiExportPatientLabel]] ) (ApiExportPatientWithLabels.apply, unlift(ApiExportPatientWithLabels.unapply)) def fromDomain(patient: ExportPatientWithLabels) = ApiExportPatientWithLabels( patientId = patient.patientId.toString, labelVersion = patient.labelVersion, labels = patient.labels.map(ApiExportPatientLabel.fromDomain) ) }