aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
blob: 221e56c63f5dea63077d0399820b0e26be9a68b7 (plain) (tree)
1
2
3
4
5
6
7
8
9


                                            
 


                                  
                                 
                                                           
                                       
                                             
                                             
                                  
                                                               
                                                                                                                      
                                        
                                                   
 














                                             











                               

                                                                                                         




                                             

                                                                                





                                                                                   



                                                               
                                                                                                         

                                                                   
                                                                                    
                                                                                                                    

                                                                                  
                                                           
                                                                                                                     





                                                                                                         



                           
                                                                    

                                                                                     
           

                                      


                                                               
                                                                                      

                                      

                                                         
          
     
 
                                                  
                                                                                                        

                                                      

                                                                                                        

                                

                                                                                                        

                                

                                                                                                        

                                

                                                                                                        

                                

                                                                                                        

                                
                                                         
                                                                                                        

                                

                                                                                                        

                                


                                                                                                  
 
package xyz.driver.pdsuidomain.services.fake

import java.time.LocalDateTime

import akka.NotUsed
import akka.stream.scaladsl.Source
import akka.util.ByteString
import xyz.driver.core.generators
import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.labels.Label
import xyz.driver.entities.patient.CancerType
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId}
import xyz.driver.pdsuidomain.entities.export.trial.{ExportTrialArm, ExportTrialLabelCriterion, ExportTrialWithLabels}
import xyz.driver.pdsuidomain.entities._
import xyz.driver.pdsuidomain.services.TrialService

import scala.concurrent.Future

class FakeTrialService extends TrialService {

  import TrialService._

  private val trial = Trial(
    id = StringId(""),
    externalId = UuidId(),
    status = Trial.Status.New,
    assignee = None,
    previousStatus = None,
    previousAssignee = None,
    lastActiveUserId = None,
    lastUpdate = LocalDateTime.now(),
    phase = "",
    hypothesisId = None,
    studyDesignId = None,
    originalStudyDesign = None,
    isPartner = false,
    overview = None,
    overviewTemplate = "",
    isUpdated = false,
    title = "",
    originalTitle = ""
  )

  def getById(id: StringId[Trial])(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] =
    Future.successful(
      GetByIdReply.Entity(trial)
    )

  def getPdfSource(trialId: StringId[Trial])(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
  ): Future[Source[ByteString, NotUsed]] =
    Future.failed(new NotImplementedError("fake PDF download is not implemented"))

  def getHtmlSource(trialId: StringId[Trial])(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
  ): Future[Source[ByteString, NotUsed]] =
    Future.failed(new NotImplementedError("fake HTML download is not implemented"))

  def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
             sorting: Option[Sorting] = None,
             pagination: Option[Pagination] = None)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] =
    Future.successful(GetListReply.EntityList(Seq(trial), 1, None))

  override def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialWithLabelsReply] =
    Future.successful(GetTrialWithLabelsReply.Entity(nextExportTrialWithLabels()))

  override def getTrialsWithLabels(cancerType: CancerType)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply] =
    Future.successful(GetTrialsWithLabelsReply.EntityList(generators.seqOf(nextExportTrialWithLabels())))

  private def nextExportTrialWithLabels() =
    ExportTrialWithLabels(
      StringId[Trial]("NCT" + generators.nextInt(999999).toString),
      UuidId[Trial](generators.nextUuid()),
      LocalDateTime.now(),
      labelVersion = 1L,
      generators.listOf(
        new ExportTrialArm(
          LongId[EligibilityArm](generators.nextInt(999999).toLong),
          generators.nextName().value,
          generators.listOf(generators.oneOf("adenocarcinoma", "breast", "prostate"))
        )),
      generators.listOf(
        new ExportTrialLabelCriterion(
          LongId[Criterion](generators.nextInt(999999).toLong),
          generators.nextOption(generators.nextBoolean()),
          LongId[Label](generators.nextInt(999999).toLong),
          generators.setOf(LongId[EligibilityArm](generators.nextInt(999999).toLong)),
          generators.nextName().value,
          generators.nextBoolean(),
          generators.nextBoolean(),
          generators.nextOption(generators.nextBoolean())
        ))
    )

  def update(origTrial: Trial, draftTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    Future.successful(UpdateReply.Updated(draftTrial))

  def start(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def submit(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def restart(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def flag(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def resolve(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def archive(origTrial: Trial, comment: Option[String])(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def unassign(origTrial: Trial)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
    update(origTrial, origTrial)

  def addTrial(newTrial: TrialCreationRequest)(
          implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial] =
    Future.successful(trial)
}