aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/Criterion.scala
blob: 26ced22c4dc1a342a3ee94719d82e1e1915c2206 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11

                                       
                                                        







                                                              

                                                        
 
                                                                
















                                                                                                  
                                                                                            











                                                               
                                                                          










                                                                              
package xyz.driver.pdsuidomain.entities

import xyz.driver.entities.labels.{Label, LabelCategory}
import xyz.driver.pdsuicommon.domain.{LongId, StringId}
import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities.Criterion.Meta.Evidence

final case class Criterion(id: LongId[Criterion],
                           trialId: StringId[Trial],
                           text: Option[String],
                           isCompound: Boolean,
                           meta: String,
                           inclusion: Option[Boolean]) {

  def isValid: Boolean = text.nonEmpty && Option(meta).isDefined
}

object Criterion {

  final case class Meta(evidence: Evidence)

  object Meta {
    final case class Evidence(pageRatio: Double, start: TextLayerPosition, end: TextLayerPosition)
    final case class TextLayerPosition(page: Integer, index: Integer, offset: Integer)
  }

  implicit def toPhiString(x: Criterion): PhiString = {
    import x._
    phi"Criterion(id=$id, trialId=$trialId, isCompound=$isCompound)"
  }
}

final case class CriterionArm(criterionId: LongId[Criterion], armId: LongId[EligibilityArm])

object CriterionArm {

  implicit def toPhiString(x: CriterionArm): PhiString = {
    import x._
    phi"CriterionArm(criterionId=$criterionId, armId=$armId)"
  }
}

final case class CriterionLabel(id: LongId[CriterionLabel],
                                labelId: Option[LongId[Label]],
                                criterionId: LongId[Criterion],
                                categoryId: Option[LongId[LabelCategory]],
                                value: Option[Boolean],
                                isDefining: Boolean)

object CriterionLabel {

  implicit def toPhiString(x: CriterionLabel): PhiString = {
    import x._
    phi"CriterionLabel(id=$id, labelId=$labelId, criterionId=$criterionId, " +
      phi"categoryId=$categoryId, value=$value, isDefining=$isDefining)"
  }
}