aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/RecordsProcessingApi.scala
blob: 93bfce68c84ecba8d1a1ee8ab322bf9b58fd7885 (plain) (tree)















































































































                                                                                            
package xyz.driver.pdsuidomain.fakes.entities


import xyz.driver.pdsuidomain.entities._
import xyz.driver.core.generators
import xyz.driver.core.generators._
import common._
import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
import xyz.driver.pdsuicommon.domain.{TextJson, User}
import xyz.driver.pdsuidomain.fakes.entities.rep.{DocumentGen, MedicalRecordMetaGen, Common}


object RecordsProcessingApi {
  private val maxCollectionNumber = 5

  private val maxAttemtsNumber = 100

  private def nextMedicalRecordMetasJson: TextJson[List[MedicalRecord.Meta]] =
    TextJson(nextMedicalRecordMetas(nextInt(maxCollectionNumber, minValue = 0)))

  private def nextDocuments: TextJson[List[Document]] =
    TextJson(nextDocuments(nextInt(maxCollectionNumber, minValue = 0)))

  def nextMedicalRecordStatus: MedicalRecord.Status =
    generators.oneOf[MedicalRecord.Status](MedicalRecord.Status.All)

  def nextMedicalRecordMeta: MedicalRecord.Meta =
    MedicalRecordMetaGen.nextMedicalRecordMeta

  def nextMedicalRecordMetas(count: Int): List[MedicalRecord.Meta] =
    List.fill(count)(nextMedicalRecordMeta)

  def nextMedicalRecordHistoryState: MedicalRecordHistory.State =
    generators.oneOf[MedicalRecordHistory.State](MedicalRecordHistory.State.All)

  def nextMedicalRecordHistoryAction: MedicalRecordHistory.Action =
    generators.oneOf[MedicalRecordHistory.Action](MedicalRecordHistory.Action.All)

  def nextDocument: Document =
    DocumentGen.nextDocument

  def nextDocuments(count: Int): List[Document] =
    List.fill(count)(nextDocument)

  def nextMedicalRecord() = {
    MedicalRecord(
      id = nextLongId[MedicalRecord],
      status = nextMedicalRecordStatus,
      previousStatus = nextOption(nextMedicalRecordStatus),
      assignee = nextOption(nextStringId),
      previousAssignee = nextOption(nextStringId),
      lastActiveUserId = nextOption(nextStringId),
      patientId = nextUuidId,
      requestId = RecordRequestId(generators.nextUuid()),
      disease = generators.nextString(),
      caseId = nextOption(CaseId(generators.nextString())),
      physician = nextOption(generators.nextString()),
      meta = nextOption(nextMedicalRecordMetasJson),
      predictedMeta = nextOption(nextMedicalRecordMetasJson),
      predictedDocuments = nextOption(nextDocuments),
      lastUpdate = nextLocalDateTime
    )
  }

  def nextMedicalRecordHistory() = {
    MedicalRecordHistory(
      id = nextLongId[MedicalRecordHistory],
      executor = nextStringId[User],
      recordId = nextLongId[MedicalRecord],
      state = nextMedicalRecordHistoryState,
      action = nextMedicalRecordHistoryAction,
      created = nextLocalDateTime
    )
  }

  def nextMedicalRecordIssue(): MedicalRecordIssue = {
    val pages = Common.genStartAndEndPages

    MedicalRecordIssue(
      id = nextLongId[MedicalRecordIssue],
      userId = nextStringId[User],
      recordId = nextLongId[MedicalRecord],
      startPage = pages._1,
      endPage = pages._2,
      lastUpdate = nextLocalDateTime,
      isDraft = nextBoolean(),
      text = nextString(),
      archiveRequired = nextBoolean()
    )
  }

  def nextBridgeUploadQueueItem(): BridgeUploadQueue.Item = {
    BridgeUploadQueue.Item(
      kind = nextString(),
      tag = nextString(),
      created = nextLocalDateTime,
      attempts = nextInt(maxAttemtsNumber, minValue = 0),
      nextAttempt = nextLocalDateTime,
      completed = nextBoolean(),
      dependencyKind = nextOption(nextString()),
      dependencyTag = nextOption(nextString())
    )
  }

  def nextProviderType(): ProviderType = {
    ProviderType(
      id = nextLongId[ProviderType],
      name = nextString()
    )
  }

}