aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala24
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/common.scala29
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala40
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala125
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala57
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/arm.scala2
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/listresponse.scala (renamed from src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponse.scala)25
7 files changed, 187 insertions, 115 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala b/src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala
new file mode 100644
index 0000000..c6dce7b
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala
@@ -0,0 +1,24 @@
+package xyz.driver.pdsuidomain
+
+import java.time.LocalDateTime
+
+import xyz.driver.pdsuicommon.db.Pagination
+
+final case class ListResponse[+T](items: Seq[T], meta: ListResponse.Meta)
+
+object ListResponse {
+
+ final case class Meta(itemsCount: Int, pageNumber: Int, pageSize: Int, lastUpdate: Option[LocalDateTime])
+
+ object Meta {
+ def apply(itemsCount: Int, pagination: Pagination, lastUpdate: Option[LocalDateTime]): Meta = {
+ Meta(
+ itemsCount,
+ pagination.pageNumber,
+ pagination.pageSize,
+ lastUpdate
+ )
+ }
+ }
+
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/common.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/common.scala
index 0ac2be5..2aaa251 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/common.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/common.scala
@@ -7,6 +7,7 @@ import xyz.driver.entities.common.FullName
import xyz.driver.entities.patient.CancerType
import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
import xyz.driver.pdsuicommon.domain.{LongId, StringId, TextJson, UuidId}
+import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.entities._
import scala.util.Random
@@ -85,10 +86,38 @@ object common {
)
}
+ def nextBridgeUploadQueueItemListResponse(): ListResponse[BridgeUploadQueue.Item] = {
+ val xs: Seq[BridgeUploadQueue.Item] = Seq.fill(3)(nextBridgeUploadQueueItem())
+ nextListResponse(xs)
+ }
+
def nextDocumentType(): DocumentType = generators.oneOf[DocumentType](DocumentType.All: _*)
def nextProviderType(): ProviderType = generators.oneOf[ProviderType](ProviderType.All: _*)
+ def nextDocumentTypeListResponse(): ListResponse[DocumentType] = {
+ val xs: Seq[DocumentType] = Seq.fill(3)(nextDocumentType())
+ nextListResponse(xs)
+ }
+
+ def nextProviderTypeListResponse(): ListResponse[ProviderType] = {
+ val xs: Seq[ProviderType] = Seq.fill(3)(nextProviderType())
+ nextListResponse(xs)
+ }
+
def nextTextJson[T](obj: T): TextJson[T] = TextJson(obj)
+ def nextListResponse[T](xs: Seq[T]): ListResponse[T] = {
+ val pageSize = generators.nextInt(xs.size, 1)
+ ListResponse(
+ items = xs,
+ meta = ListResponse.Meta(
+ itemsCount = xs.size,
+ pageNumber = generators.nextInt(xs.size / pageSize),
+ pageSize = pageSize,
+ lastUpdate = generators.nextOption(nextLocalDateTime)
+ )
+ )
+ }
+
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
index 8ba1d82..86583c1 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
@@ -6,6 +6,7 @@ import xyz.driver.core.generators
import xyz.driver.core.generators._
import xyz.driver.entities.labels.{Label, LabelCategory, LabelValue}
import xyz.driver.pdsuicommon.domain.{LongId, TextJson, User}
+import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.entities.ExtractedData.Meta
import xyz.driver.pdsuidomain.entities._
import xyz.driver.pdsuidomain.fakes.entities.common._
@@ -187,12 +188,12 @@ object recordprocessing {
)
}
- def nextDocumentIssue(documentId: LongId[Document] = nextLongId): DocumentIssue = {
+ def nextDocumentIssue(): DocumentIssue = {
val (startPage, endPage) = nextStartAndEndPagesOption
DocumentIssue(
id = nextLongId[DocumentIssue],
userId = nextStringId[User],
- documentId = documentId,
+ documentId = nextLongId[Document],
startPage = startPage,
endPage = endPage,
lastUpdate = nextLocalDateTime,
@@ -282,4 +283,39 @@ object recordprocessing {
)
}
+ def nextMedicalRecordListResponse(): ListResponse[MedicalRecord] = {
+ val xs: Seq[MedicalRecord] = Seq.fill(3)(nextMedicalRecord())
+ nextListResponse(xs)
+ }
+
+ def nextMedicalRecordIssueListResponse(): ListResponse[MedicalRecordIssue] = {
+ val xs: Seq[MedicalRecordIssue] = Seq.fill(3)(nextMedicalRecordIssue())
+ nextListResponse(xs)
+ }
+
+ def nextMedicalRecordHistoryListResponse(): ListResponse[MedicalRecordHistory] = {
+ val xs: Seq[MedicalRecordHistory] = Seq.fill(3)(nextMedicalRecordHistory())
+ nextListResponse(xs)
+ }
+
+ def nextDocumentListResponse(): ListResponse[Document] = {
+ val xs: Seq[Document] = Seq.fill(3)(nextDocument())
+ nextListResponse(xs)
+ }
+
+ def nextDocumentIssueListResponse(): ListResponse[DocumentIssue] = {
+ val xs: Seq[DocumentIssue] = Seq.fill(3)(nextDocumentIssue())
+ nextListResponse(xs)
+ }
+
+ def nextDocumentHistoryListResponse(): ListResponse[DocumentHistory] = {
+ val xs: Seq[DocumentHistory] = Seq.fill(3)(nextDocumentHistory())
+ nextListResponse(xs)
+ }
+
+ def nextRichExtractedDataListResponse(): ListResponse[RichExtractedData] = {
+ val xs: Seq[RichExtractedData] = Seq.fill(3)(nextRichExtractedData())
+ nextListResponse(xs)
+ }
+
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala
index b0ca136..d5adc32 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala
@@ -3,8 +3,8 @@ package xyz.driver.pdsuidomain.fakes.entities
import xyz.driver.entities.labels.Label
import xyz.driver.fakes
import xyz.driver.pdsuicommon.domain.{LongId, StringId, User}
+import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.formats.json.sprayformats.ListResponse
import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion}
import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
import xyz.driver.pdsuidomain.services.PatientHypothesisService.RichPatientHypothesis
@@ -14,6 +14,26 @@ object treatmentmatching {
import common._
import xyz.driver.core.generators
+ final case class DraftPatientCriterionList(list: List[DraftPatientCriterion])
+ object DraftPatientCriterionList {
+ import spray.json._
+ import xyz.driver.pdsuidomain.formats.json.sprayformats.patientcriterion._
+
+ implicit val draftPatientCriterionListFormat: RootJsonFormat[DraftPatientCriterionList] =
+ new RootJsonFormat[DraftPatientCriterionList] {
+ override def write(obj: DraftPatientCriterionList): JsValue = {
+ JsArray(obj.list.map(_.toJson).toVector)
+ }
+
+ override def read(json: JsValue): DraftPatientCriterionList = json match {
+ case j: JsObject =>
+ DraftPatientCriterionList(draftPatientCriterionListReader.read(j))
+
+ case _ => deserializationError(s"Expected List of DraftPatientCriterion json object, but got $json")
+ }
+ }
+ }
+
def nextPatientOrderId: PatientOrderId = PatientOrderId(generators.nextUuid())
def nextPatientAction: PatientHistory.Action =
@@ -75,6 +95,10 @@ object treatmentmatching {
isVerified = generators.nextOption(generators.nextBoolean())
)
+ def nextDraftPatientCriterionList(): DraftPatientCriterionList = {
+ DraftPatientCriterionList(List.fill(3)(nextDraftPatientCriterion()))
+ }
+
def nextPatientCriterionArm(criterionId: LongId[PatientCriterion]): PatientCriterionArm = PatientCriterionArm(
patientCriterionId = criterionId,
armId = nextLongId[Arm],
@@ -167,128 +191,47 @@ object treatmentmatching {
def nextPatientListResponse(): ListResponse[Patient] = {
val xs: Seq[Patient] = Seq.fill(3)(nextPatient())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextRichPatientLabelListResponse(): ListResponse[RichPatientLabel] = {
val xs: Seq[RichPatientLabel] = Seq.fill(3)(nextRichPatientLabel())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextPatientLabelListResponse(): ListResponse[PatientLabel] = {
val xs: Seq[PatientLabel] = Seq.fill(3)(nextPatientLabel())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextRichPatientCriterionListResponse(): ListResponse[RichPatientCriterion] = {
val xs: Seq[RichPatientCriterion] = Seq.fill(3)(nextRichPatientCriterion())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextRichPatientEligibleTrialListResponse(): ListResponse[RichPatientEligibleTrial] = {
val xs: Seq[RichPatientEligibleTrial] = Seq.fill(3)(nextRichPatientEligibleTrial())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextRichPatientHypothesisListResponse(): ListResponse[RichPatientHypothesis] = {
val xs: Seq[RichPatientHypothesis] = Seq.fill(3)(nextRichPatientHypothesis())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextPatientLabelEvidenceViewListResponse(): ListResponse[PatientLabelEvidenceView] = {
val xs: Seq[PatientLabelEvidenceView] = Seq.fill(3)(nextPatientLabelEvidenceView())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextPatientIssuesListResponse(): ListResponse[PatientIssue] = {
val xs: Seq[PatientIssue] = Seq.fill(3)(nextPatientIssue())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
def nextPatientHistoryListResponse(): ListResponse[PatientHistory] = {
val xs: Seq[PatientHistory] = Seq.fill(3)(nextPatientHistory())
- val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
- items = xs,
- meta = ListResponse.Meta(
- itemsCount = xs.size,
- pageNumber = generators.nextInt(xs.size / pageSize),
- pageSize = pageSize,
- lastUpdate = generators.nextOption(nextLocalDateTime)
- )
- )
+ nextListResponse(xs)
}
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala
index 0ec1782..eeec577 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala
@@ -3,6 +3,7 @@ package xyz.driver.pdsuidomain.fakes.entities
import xyz.driver.core.generators._
import xyz.driver.entities.labels.{Label, LabelCategory}
import xyz.driver.pdsuicommon.domain.{LongId, User}
+import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.entities._
import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion
@@ -179,4 +180,60 @@ object trialcuration {
originalName = nextString(),
trialId = nextStringId
)
+
+ def nextTrialListResponse(): ListResponse[Trial] = {
+ val xs: Seq[Trial] = Seq.fill(3)(nextTrial())
+ nextListResponse(xs)
+ }
+
+ def nextTrialIssueListResponse(): ListResponse[TrialIssue] = {
+ val xs: Seq[TrialIssue] = Seq.fill(3)(nextTrialIssue())
+ nextListResponse(xs)
+ }
+
+ def nextTrialHistoryListResponse(): ListResponse[TrialHistory] = {
+ val xs: Seq[TrialHistory] = Seq.fill(3)(nextTrialHistory())
+ nextListResponse(xs)
+ }
+
+ def nextArmListResponse(): ListResponse[Arm] = {
+ val xs: Seq[Arm] = Seq.fill(3)(nextArm())
+ nextListResponse(xs)
+ }
+
+ def nextInterventionWithArmsListResponse(): ListResponse[InterventionWithArms] = {
+ val xs: Seq[InterventionWithArms] = Seq.fill(3)(nextInterventionWithArms())
+ nextListResponse(xs)
+ }
+
+ def nextEligibilityArmWithDiseasesListResponse(): ListResponse[EligibilityArmWithDiseases] = {
+ val xs: Seq[EligibilityArmWithDiseases] = Seq.fill(3)(nextEligibilityArmWithDiseases())
+ nextListResponse(xs)
+ }
+
+ def nextSlotArmListResponse(): ListResponse[SlotArm] = {
+ val xs: Seq[SlotArm] = Seq.fill(3)(nextSlotArm())
+ nextListResponse(xs)
+ }
+
+ def nextRichCriterionListResponse(): ListResponse[RichCriterion] = {
+ val xs: Seq[RichCriterion] = Seq.fill(3)(nextRichCriterion())
+ nextListResponse(xs)
+ }
+
+ def nextInterventionTypeListResponse(): ListResponse[InterventionType] = {
+ val xs: Seq[InterventionType] = Seq.fill(3)(nextInterventionType())
+ nextListResponse(xs)
+ }
+
+ def nextStudyDesignListResponse(): ListResponse[StudyDesign] = {
+ val xs: Seq[StudyDesign] = Seq.fill(3)(nextStudyDesign())
+ nextListResponse(xs)
+ }
+
+ def nextHypothesesListResponse(): ListResponse[Hypothesis] = {
+ val xs: Seq[Hypothesis] = Seq.fill(3)(nextHypothesis())
+ nextListResponse(xs)
+ }
+
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/arm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/arm.scala
index 39af1c3..e182b4b 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/arm.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/arm.scala
@@ -19,7 +19,7 @@ object arm {
case _ => deserializationError(s"Expected Json Object as partial Arm, but got $json")
}
- def armFormat: RootJsonFormat[Arm] = new RootJsonFormat[Arm] {
+ implicit val armFormat: RootJsonFormat[Arm] = new RootJsonFormat[Arm] {
override def write(obj: Arm): JsValue =
JsObject(
"id" -> obj.id.toJson,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponse.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/listresponse.scala
index 4afe0ee..20644dc 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponse.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/listresponse.scala
@@ -1,32 +1,15 @@
package xyz.driver.pdsuidomain.formats.json.sprayformats
-import java.time.LocalDateTime
-
import spray.json._
import spray.json.DefaultJsonProtocol._
-import xyz.driver.pdsuicommon.db.Pagination
+import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.formats.json.sprayformats.common._
-final case class ListResponse[+T](items: Seq[T], meta: ListResponse.Meta)
-
-object ListResponse {
+object listresponse {
private val itemsField = "items"
private val metaField = "meta"
- final case class Meta(itemsCount: Int, pageNumber: Int, pageSize: Int, lastUpdate: Option[LocalDateTime])
-
- object Meta {
- def apply(itemsCount: Int, pagination: Pagination, lastUpdate: Option[LocalDateTime]): Meta = {
- Meta(
- itemsCount,
- pagination.pageNumber,
- pagination.pageSize,
- lastUpdate
- )
- }
- }
-
- implicit val listResponseMetaFormat: RootJsonFormat[Meta] = jsonFormat4(Meta.apply)
+ implicit val listResponseMetaFormat: RootJsonFormat[ListResponse.Meta] = jsonFormat4(ListResponse.Meta.apply)
implicit def listResponseWriter[T: JsonWriter]: RootJsonWriter[ListResponse[T]] =
new RootJsonWriter[ListResponse[T]] {
@@ -52,7 +35,7 @@ object ListResponse {
val meta = fields
.get(metaField)
- .map(_.convertTo[Meta])
+ .map(_.convertTo[ListResponse.Meta])
.getOrElse(deserializationError(s"ListResponse json object does not contain `$metaField` field: $json"))
ListResponse(items, meta)