aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-18 15:00:26 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-19 13:02:44 +0700
commit61d03bffcb6000268bb600d5336fb490056837f9 (patch)
treedbad0340d28dbe5835c80cf75f93d142a5327578 /src/main/scala/xyz/driver/pdsuidomain
parent0c8a7c3f1920e38a0606de91be5793c4f2a1d40a (diff)
downloadrest-query-61d03bffcb6000268bb600d5336fb490056837f9.tar.gz
rest-query-61d03bffcb6000268bb600d5336fb490056837f9.tar.bz2
rest-query-61d03bffcb6000268bb600d5336fb490056837f9.zip
Created list response for each entity
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala67
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala20
-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
3 files changed, 81 insertions, 31 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..b0effdd
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/ListResponse.scala
@@ -0,0 +1,67 @@
+package xyz.driver.pdsuidomain
+
+import java.time.LocalDateTime
+
+import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
+import xyz.driver.pdsuicommon.db.Pagination
+import xyz.driver.pdsuidomain.entities._
+import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion
+import xyz.driver.pdsuidomain.services.ExtractedDataService.RichExtractedData
+import xyz.driver.pdsuidomain.services.PatientCriterionService.RichPatientCriterion
+import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
+import xyz.driver.pdsuidomain.services.PatientHypothesisService.RichPatientHypothesis
+import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel
+
+@SuppressWarnings(Array("org.wartremover.warts.FinalCaseClass"))
+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
+ )
+ }
+ }
+
+ trait MedicalRecordListResponse extends ListResponse[MedicalRecord]
+ trait MedicalRecordIssueListResponse extends ListResponse[MedicalRecordIssue]
+ trait MedicalRecordHistoryListResponse extends ListResponse[MedicalRecordHistory]
+ trait DocumentListResponse extends ListResponse[Document]
+ trait DocumentIssueListResponse extends ListResponse[DocumentIssue]
+ trait DocumentHistoryListResponse extends ListResponse[DocumentHistory]
+ trait RichExtractedDataListResponse extends ListResponse[RichExtractedData]
+ trait DocumentTypeListResponse extends ListResponse[DocumentType]
+ trait ProviderTypeListResponse extends ListResponse[ProviderType]
+
+ trait TrialListResponse extends ListResponse[Trial]
+ trait TrialIssueListResponse extends ListResponse[TrialIssue]
+ trait TrialHistoryListResponse extends ListResponse[TrialHistory]
+ trait ArmListResponse extends ListResponse[Arm]
+ trait InterventionWithArmsListResponse extends ListResponse[InterventionWithArms]
+ trait EligibilityArmWithDiseasesListResponse extends ListResponse[EligibilityArmWithDiseases]
+ trait SlotArmListResponse extends ListResponse[SlotArm]
+ trait RichCriterionListResponse extends ListResponse[RichCriterion]
+ trait InterventionTypeListResponse extends ListResponse[InterventionType]
+ trait StudyDesignListResponse extends ListResponse[StudyDesign]
+ trait HypothesisListResponse extends ListResponse[Hypothesis]
+
+ trait PatientListResponse extends ListResponse[Patient]
+ trait PatientIssueListResponse extends ListResponse[PatientIssue]
+ trait PatientHistoryListResponse extends ListResponse[PatientHistory]
+ trait PatientLabelListResponse extends ListResponse[PatientLabel]
+ trait RichPatientLabelListResponse extends ListResponse[RichPatientLabel]
+ trait RichPatientCriterionListResponse extends ListResponse[RichPatientCriterion]
+ trait RichPatientEligibleTrialListResponse extends ListResponse[RichPatientEligibleTrial]
+ trait RichPatientHypothesisListResponse extends ListResponse[RichPatientHypothesis]
+ trait PatientLabelEvidenceViewListResponse extends ListResponse[PatientLabelEvidenceView]
+
+ trait QueueUploadItemListResponse extends ListResponse[BridgeUploadQueue.Item]
+
+}
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..f8244f8 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
@@ -168,7 +168,7 @@ object treatmentmatching {
def nextPatientListResponse(): ListResponse[Patient] = {
val xs: Seq[Patient] = Seq.fill(3)(nextPatient())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[Patient](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -182,7 +182,7 @@ object treatmentmatching {
def nextRichPatientLabelListResponse(): ListResponse[RichPatientLabel] = {
val xs: Seq[RichPatientLabel] = Seq.fill(3)(nextRichPatientLabel())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[RichPatientLabel](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -196,7 +196,7 @@ object treatmentmatching {
def nextPatientLabelListResponse(): ListResponse[PatientLabel] = {
val xs: Seq[PatientLabel] = Seq.fill(3)(nextPatientLabel())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[PatientLabel](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -210,7 +210,7 @@ object treatmentmatching {
def nextRichPatientCriterionListResponse(): ListResponse[RichPatientCriterion] = {
val xs: Seq[RichPatientCriterion] = Seq.fill(3)(nextRichPatientCriterion())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[RichPatientCriterion](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -224,7 +224,7 @@ object treatmentmatching {
def nextRichPatientEligibleTrialListResponse(): ListResponse[RichPatientEligibleTrial] = {
val xs: Seq[RichPatientEligibleTrial] = Seq.fill(3)(nextRichPatientEligibleTrial())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[RichPatientEligibleTrial](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -238,7 +238,7 @@ object treatmentmatching {
def nextRichPatientHypothesisListResponse(): ListResponse[RichPatientHypothesis] = {
val xs: Seq[RichPatientHypothesis] = Seq.fill(3)(nextRichPatientHypothesis())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[RichPatientHypothesis](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -252,7 +252,7 @@ object treatmentmatching {
def nextPatientLabelEvidenceViewListResponse(): ListResponse[PatientLabelEvidenceView] = {
val xs: Seq[PatientLabelEvidenceView] = Seq.fill(3)(nextPatientLabelEvidenceView())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[PatientLabelEvidenceView](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -266,7 +266,7 @@ object treatmentmatching {
def nextPatientIssuesListResponse(): ListResponse[PatientIssue] = {
val xs: Seq[PatientIssue] = Seq.fill(3)(nextPatientIssue())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[PatientIssue](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
@@ -280,7 +280,7 @@ object treatmentmatching {
def nextPatientHistoryListResponse(): ListResponse[PatientHistory] = {
val xs: Seq[PatientHistory] = Seq.fill(3)(nextPatientHistory())
val pageSize = generators.nextInt(xs.size, 1)
- ListResponse(
+ new ListResponse[PatientHistory](
items = xs,
meta = ListResponse.Meta(
itemsCount = xs.size,
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)