aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-04 16:25:27 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-04 16:25:27 +0700
commitbb37df3a7d871ae4ff37c3cfc3fecb11f1f245c3 (patch)
tree0fbc3269a14c06ee555e89342533e70749090d82
parented8db038b3b74e0089fe3415d4e3df5ceb882d86 (diff)
downloadrest-query-bb37df3a7d871ae4ff37c3cfc3fecb11f1f245c3.tar.gz
rest-query-bb37df3a7d871ae4ff37c3cfc3fecb11f1f245c3.tar.bz2
rest-query-bb37df3a7d871ae4ff37c3cfc3fecb11f1f245c3.zip
PDSUI-2432 Removed *-Reply classes of TM
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala29
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/PatientEligibleTrial.scala10
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala8
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/patientcriterion.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/patientlabel.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala111
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala114
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala26
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala82
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala72
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala47
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala105
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala80
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala25
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala21
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala32
-rw-r--r--src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientCriterionFormatSuite.scala3
-rw-r--r--src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientEligibleTrialFormatSuite.scala3
-rw-r--r--src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientLabelFormatSuite.scala1
22 files changed, 120 insertions, 658 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala
index f617a20..27560d5 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala
@@ -18,9 +18,6 @@ import xyz.driver.pdsuidomain.formats.json.record._
import xyz.driver.pdsuidomain.formats.json.document._
import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion
import xyz.driver.pdsuidomain.services.ExtractedDataService.RichExtractedData
-import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion}
-import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
-import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel
import scala.collection.immutable
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
index 193e8cb..e6d466a 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientCriterion.scala
@@ -2,7 +2,7 @@ package xyz.driver.pdsuidomain.entities
import java.time.LocalDateTime
-import xyz.driver.entities.labels.LabelValue
+import xyz.driver.entities.labels.{Label, LabelValue}
import xyz.driver.pdsuicommon.domain.{LongId, StringId}
import xyz.driver.pdsuicommon.logging._
@@ -57,6 +57,33 @@ final case class PatientCriterion(id: LongId[PatientCriterion],
def isIneligibleForEv: Boolean = eligibilityStatus === LabelValue.No && isVerified
}
+final case class DraftPatientCriterion(id: LongId[PatientCriterion],
+ eligibilityStatus: Option[LabelValue],
+ isVerified: Option[Boolean]) {
+ def applyTo(orig: PatientCriterion) = {
+ orig.copy(
+ eligibilityStatus = eligibilityStatus.getOrElse(orig.eligibilityStatus),
+ isVerified = isVerified.getOrElse(orig.isVerified)
+ )
+ }
+}
+
+object DraftPatientCriterion {
+ implicit def toPhiString(x: DraftPatientCriterion): PhiString = {
+ phi"DraftPatientCriterion(id=${x.id}, eligibilityStatus=${Unsafe(x.eligibilityStatus)}, isVerified=${x.isVerified})"
+ }
+}
+
+final case class RichPatientCriterion(patientCriterion: PatientCriterion,
+ labelId: LongId[Label],
+ armList: List[PatientCriterionArm])
+
+object RichPatientCriterion {
+ implicit def toPhiString(x: RichPatientCriterion): PhiString = {
+ phi"RichPatientCriterion(patientCriterion=${x.patientCriterion}, labelId=${x.labelId}, arms=${x.armList})"
+ }
+}
+
object PatientCriterionArm {
implicit def toPhiString(x: PatientCriterionArm): PhiString = {
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientEligibleTrial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientEligibleTrial.scala
index 179056a..4f62a9e 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientEligibleTrial.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientEligibleTrial.scala
@@ -82,3 +82,13 @@ final case class PatientTrialArmGroupView(id: LongId[PatientTrialArmGroup],
)
}
}
+
+final case class RichPatientEligibleTrial(trial: Trial,
+ group: PatientTrialArmGroupView,
+ arms: List[PatientCriterionArm])
+
+object RichPatientEligibleTrial {
+ implicit def toPhiString(x: RichPatientEligibleTrial): PhiString = {
+ phi"RichPatientEligibleTrial(group=${x.group}, trial=${x.trial}, arms=${x.arms})"
+ }
+}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala
index df86175..8d64389 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala
@@ -22,6 +22,14 @@ final case class PatientLabel(id: LongId[PatientLabel],
isImplicitMatch: Boolean,
isVisible: Boolean)
+final case class RichPatientLabel(patientLabel: PatientLabel, isVerified: Boolean)
+
+object RichPatientLabel {
+ implicit def toPhiString(x: RichPatientLabel): PhiString = {
+ phi"RichPatientLabel(patientLabel=${x.patientLabel}, isVerified=${x.isVerified})"
+ }
+}
+
object PatientLabelEvidence {
implicit def toPhiString(x: PatientLabelEvidence): PhiString = {
import x._
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 f2d6a1b..190add6 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala
@@ -6,9 +6,6 @@ import xyz.driver.fakes
import xyz.driver.pdsuicommon.domain.{LongId, StringId}
import xyz.driver.pdsuidomain.ListResponse
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion}
-import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
-import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel
import eu.timepit.refined.{refineMV, refineV}
import xyz.driver.core.auth.User
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientcriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientcriterion.scala
index 1004c5b..035310b 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientcriterion.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientcriterion.scala
@@ -5,7 +5,6 @@ import xyz.driver.entities.labels.{Label, LabelValue}
import xyz.driver.formats.json.labels._
import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion}
object patientcriterion {
import DefaultJsonProtocol._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
index 4c006f9..d719c5c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienteligibletrial.scala
@@ -3,7 +3,6 @@ package xyz.driver.pdsuidomain.formats.json
import spray.json._
import xyz.driver.formats.json.labels._
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
object patienteligibletrial {
import DefaultJsonProtocol._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientlabel.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientlabel.scala
index 6499318..615b3a2 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientlabel.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientlabel.scala
@@ -4,7 +4,6 @@ import spray.json._
import xyz.driver.entities.labels.LabelValue
import xyz.driver.formats.json.labels._
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel
import xyz.driver.formats.json.labels._
import xyz.driver.pdsuidomain.formats.json.record._
import xyz.driver.pdsuidomain.formats.json.document._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
index 68e7b50..8be9f64 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
@@ -3,130 +3,27 @@ package xyz.driver.pdsuidomain.services
import java.time.LocalDateTime
import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.labels.{Label, LabelValue}
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities._
import scala.concurrent.Future
-object PatientCriterionService {
-
- final case class DraftPatientCriterion(id: LongId[PatientCriterion],
- eligibilityStatus: Option[LabelValue],
- isVerified: Option[Boolean]) {
- def applyTo(orig: PatientCriterion) = {
- orig.copy(
- eligibilityStatus = eligibilityStatus.getOrElse(orig.eligibilityStatus),
- isVerified = isVerified.getOrElse(orig.isVerified)
- )
- }
- }
-
- object DraftPatientCriterion {
- implicit def toPhiString(x: DraftPatientCriterion): PhiString = {
- phi"DraftPatientCriterion(id=${x.id}, eligibilityStatus=${Unsafe(x.eligibilityStatus)}, isVerified=${x.isVerified})"
- }
- }
-
- trait DefaultPatientNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient criterion not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- final case class RichPatientCriterion(patientCriterion: PatientCriterion,
- labelId: LongId[Label],
- armList: List[PatientCriterionArm])
-
- object RichPatientCriterion {
- implicit def toPhiString(x: RichPatientCriterion): PhiString = {
- phi"RichPatientCriterion(patientCriterion=${x.patientCriterion}, labelId=${x.labelId}, arms=${x.armList})"
- }
- }
-
- sealed trait GetListReply
- object GetListReply {
- type Error = GetListReply with DomainError
-
- final case class EntityList(xs: Seq[RichPatientCriterion], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends GetListReply with DomainError.NotFoundError with DefaultPatientNotFoundError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
-
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- type Error = GetByIdReply with DomainError
-
- final case class Entity(x: RichPatientCriterion) extends GetByIdReply
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object NotFoundError extends GetByIdReply with DomainError.NotFoundError with DefaultNotFoundError
-
- case object PatientNotFoundError
- extends GetByIdReply with DomainError.NotFoundError with DefaultPatientNotFoundError
-
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
-
- implicit def toPhiString(reply: GetByIdReply): PhiString = reply match {
- case x: DomainError => phi"GetByIdReply.Error($x)"
- case Entity(x) => phi"GetByIdReply.Entity($x)"
- }
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(x: RichPatientCriterion) extends UpdateReply
-
- case object UpdatedList extends UpdateReply
-
- case object AuthorizationError
- extends UpdateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends UpdateReply with DomainError.NotFoundError with DefaultPatientNotFoundError
-
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
- }
-}
-
trait PatientCriterionService {
- import PatientCriterionService._
-
def getAll(patientId: UuidId[Patient],
origFilter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientCriterion], Int, Option[LocalDateTime])]
def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientCriterion]
def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Unit]
def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientCriterion]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
index 8d1288a..ab8c5fd 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
@@ -4,128 +4,26 @@ import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities.{Trial, _}
-import xyz.driver.pdsuidomain.services.PatientCriterionService.RichPatientCriterion
+import xyz.driver.pdsuidomain.entities._
import scala.concurrent.Future
-object PatientEligibleTrialService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient eligible trial not found"
- }
-
- trait DefaultPatientNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- final case class RichPatientEligibleTrial(trial: Trial,
- group: PatientTrialArmGroupView,
- arms: List[PatientCriterionArm])
-
- object RichPatientEligibleTrial {
- implicit def toPhiString(x: RichPatientEligibleTrial): PhiString = {
- phi"RichPatientEligibleTrial(group=${x.group}, trial=${x.trial}, arms=${x.arms})"
- }
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[RichPatientEligibleTrial], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends GetListReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: RichPatientEligibleTrial) extends GetByIdReply
-
- type Error = GetByIdReply with DomainError
-
- case object NotFoundError extends GetByIdReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends GetByIdReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
-
- implicit def toPhiString(reply: GetByIdReply): PhiString = reply match {
- case x: DomainError => phi"GetByIdReply.Error($x)"
- case Entity(x) => phi"GetByIdReply.Entity($x)"
- }
- }
-
- sealed trait GetCriterionListOfGroupReply
- object GetCriterionListOfGroupReply {
- final case class EntityList(xs: Seq[RichPatientCriterion], totalFound: Int) extends GetCriterionListOfGroupReply
-
- type Error = GetCriterionListOfGroupReply with DomainError
-
- case object AuthorizationError
- extends GetCriterionListOfGroupReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object NotFoundError
- extends GetCriterionListOfGroupReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends GetCriterionListOfGroupReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetCriterionListOfGroupReply with DomainError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: RichPatientEligibleTrial) extends UpdateReply
-
- case object NotFoundError extends UpdateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError extends UpdateReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError extends UpdateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-}
-
trait PatientEligibleTrialService {
- import PatientEligibleTrialService._
-
def getAll(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientEligibleTrial], Int)]
def getById(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientEligibleTrial]
def getCriterionListByGroupId(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetCriterionListOfGroupReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientCriterion],
+ Int)]
def update(origEligibleTrialWithTrial: RichPatientEligibleTrial, draftPatientTrialArmGroup: PatientTrialArmGroupView)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientEligibleTrial]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala
index 9ad6a56..7686a0c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala
@@ -6,40 +6,16 @@ import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuicommon.error.DomainError
import xyz.driver.pdsuidomain.entities.{Patient, PatientHistory}
import scala.concurrent.Future
-object PatientHistoryService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient history not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[PatientHistory], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- final case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
-}
-
trait PatientHistoryService {
- import PatientHistoryService._
-
def getListByPatientId(id: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[PatientHistory], Int, Option[LocalDateTime])]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala
index 2dcfcb5..cbfcd6c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala
@@ -4,97 +4,21 @@ import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities.{Hypothesis, Patient, PatientHypothesis}
import scala.concurrent.Future
-object PatientHypothesisService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient hypothesis not found"
- }
-
- trait DefaultPatientNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[PatientHypothesis], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends GetListReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: PatientHypothesis) extends GetByIdReply
-
- type Error = GetByIdReply with DomainError
-
- case object NotFoundError extends GetByIdReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends GetByIdReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
-
- implicit def toPhiString(reply: GetByIdReply): PhiString = reply match {
- case x: DomainError => phi"GetByIdReply.Error($x)"
- case Entity(x) => phi"GetByIdReply.Entity($x)"
- }
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: PatientHypothesis) extends UpdateReply
-
- case object NotFoundError extends UpdateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends UpdateReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends UpdateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-}
-
trait PatientHypothesisService {
- import PatientHypothesisService._
-
def getAll(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[PatientHypothesis], Int)]
def getById(patientId: UuidId[Patient], hypothesisId: UuidId[Hypothesis])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientHypothesis]
def update(origPatientHypothesis: PatientHypothesis, draftPatientHypothesis: PatientHypothesis)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientHypothesis]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala
index cf47c94..d2c8a7d 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala
@@ -6,90 +6,28 @@ import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
-import xyz.driver.pdsuicommon.error.DomainError
import xyz.driver.pdsuidomain.entities.{Patient, PatientIssue}
import scala.concurrent.Future
-object PatientIssueService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "PatientIssue not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
- final case class Created(x: PatientIssue) extends CreateReply
- case object AuthorizationError
- extends CreateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- type Error = GetByIdReply with DomainError
- final case class Entity(x: PatientIssue) extends GetByIdReply
- case object NotFoundError extends GetByIdReply with DomainError.NotFoundError with DefaultNotFoundError
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetListByPatientIdReply
- object GetListByPatientIdReply {
- type Error = GetListByPatientIdReply with DomainError
- final case class EntityList(xs: Seq[PatientIssue], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListByPatientIdReply
- case object NotFoundError extends GetListByPatientIdReply with DomainError.NotFoundError with DefaultNotFoundError
- case object AuthorizationError
- extends GetListByPatientIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
- final case class Updated(updated: PatientIssue) extends UpdateReply
- case object AuthorizationError
- extends UpdateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- type Error = DeleteReply with DomainError
- case object Deleted extends DeleteReply
- case object AuthorizationError
- extends DeleteReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- case object NotFoundError extends DeleteReply with DomainError.NotFoundError with DefaultNotFoundError
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
trait PatientIssueService {
- import PatientIssueService._
-
def create(draft: PatientIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientIssue]
def getById(patientId: UuidId[Patient], id: LongId[PatientIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientIssue]
def getListByPatientId(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByPatientIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[PatientIssue], Int, Option[LocalDateTime])]
def update(orig: PatientIssue, draft: PatientIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientIssue]
def delete(patientId: UuidId[Patient], id: LongId[PatientIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Unit]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
index 1ddf401..cccfd92 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
@@ -5,62 +5,19 @@ import xyz.driver.entities.labels.Label
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
-import xyz.driver.pdsuicommon.error.DomainError
import xyz.driver.pdsuidomain.entities._
import scala.concurrent.Future
-object PatientLabelEvidenceService {
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- trait DefaultPatientNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: PatientLabelEvidenceView) extends GetByIdReply
-
- type Error = GetByIdReply with DomainError
-
- final case class NotFoundError(userMessage: String) extends GetByIdReply with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[PatientLabelEvidenceView], totalFound: Int) extends GetListReply
-
- type Error = GetListReply with DomainError
-
- case object PatientNotFoundError
- extends GetListReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
- }
-}
-
trait PatientLabelEvidenceService {
- import PatientLabelEvidenceService._
-
def getById(patientId: UuidId[Patient], labelId: LongId[Label], id: LongId[PatientLabelEvidence])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientLabelEvidenceView]
def getAll(patientId: UuidId[Patient],
labelId: LongId[Label],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[PatientLabelEvidenceView], Int)]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
index 048374a..2ae3f44 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
@@ -5,123 +5,26 @@ import xyz.driver.entities.labels.Label
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities._
import scala.concurrent.Future
-object PatientLabelService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient label not found"
- }
-
- trait DefaultPatientNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- final case class RichPatientLabel(patientLabel: PatientLabel, isVerified: Boolean)
-
- object RichPatientLabel {
- implicit def toPhiString(x: RichPatientLabel): PhiString = {
- phi"RichPatientLabel(patientLabel=${x.patientLabel}, isVerified=${x.isVerified})"
- }
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[RichPatientLabel], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends GetListReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
- }
-
- sealed trait GetDefiningCriteriaListReply
- object GetDefiningCriteriaListReply {
- final case class EntityList(xs: Seq[PatientLabel], totalFound: Int) extends GetDefiningCriteriaListReply
-
- case object AuthorizationError
- extends GetDefiningCriteriaListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object PatientNotFoundError
- extends GetDefiningCriteriaListReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetDefiningCriteriaListReply with DomainError
- }
-
- sealed trait GetByLabelIdReply
- object GetByLabelIdReply {
- final case class Entity(x: RichPatientLabel) extends GetByLabelIdReply
-
- type Error = GetByLabelIdReply with DomainError
-
- case object NotFoundError extends GetByLabelIdReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends GetByLabelIdReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends GetByLabelIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends GetByLabelIdReply with DomainError
-
- implicit def toPhiString(reply: GetByLabelIdReply): PhiString = reply match {
- case x: DomainError => phi"GetByIdReply.Error($x)"
- case Entity(x) => phi"GetByIdReply.Entity($x)"
- }
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: RichPatientLabel) extends UpdateReply
-
- case object NotFoundError extends UpdateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object PatientNotFoundError
- extends UpdateReply with DefaultPatientNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends UpdateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-}
-
trait PatientLabelService {
- import PatientLabelService._
-
def getAll(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientLabel], Int)]
def getDefiningCriteriaList(patientId: UuidId[Patient],
hypothesisId: UuidId[Hypothesis],
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetDefiningCriteriaListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[PatientLabel], Int)]
def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByLabelIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientLabel]
def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientLabel]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala
index e23fc7a..573982f 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala
@@ -6,99 +6,35 @@ import xyz.driver.core.rest.AuthorizedServiceRequestContext
import xyz.driver.entities.users.AuthUserInfo
import xyz.driver.pdsuicommon.db._
import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities._
import scala.concurrent.Future
-object PatientService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Patient not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[Patient], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: Patient) extends GetByIdReply
-
- type Error = GetByIdReply with DomainError
-
- case object NotFoundError extends GetByIdReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo])
- extends GetByIdReply with DomainError
-
- implicit def toPhiString(reply: GetByIdReply): PhiString = reply match {
- case x: DomainError => phi"GetByIdReply.Error($x)"
- case Entity(x) => phi"GetByIdReply.Entity($x)"
- }
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: Patient) extends UpdateReply
-
- case object NotFoundError extends UpdateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends UpdateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends UpdateReply with DomainError
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-}
-
trait PatientService {
- import PatientService._
-
def getById(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[Patient], Int, Option[LocalDateTime])]
def unassign(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def start(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def submit(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def restart(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def flag(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
def resolve(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala
index 6629cf5..d543d60 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala
@@ -1,5 +1,7 @@
package xyz.driver.pdsuidomain.services.rest
+import java.time.LocalDateTime
+
import akka.http.scaladsl.marshalling.Marshal
import akka.http.scaladsl.model._
import akka.stream.Materializer
@@ -22,13 +24,12 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)(
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import xyz.driver.pdsuidomain.formats.json.patientcriterion._
import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.services.PatientCriterionService._
def getAll(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientCriterion], Int, Option[LocalDateTime])] = {
val request = HttpRequest(HttpMethods.GET,
endpointUri(baseUri,
s"/v1/patient/$patientId/criterion",
@@ -37,45 +38,45 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)(
response <- transport.sendRequestGetResponse(requestContext)(request)
reply <- apiResponse[ListResponse[RichPatientCriterion]](response)
} yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
+ (reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
}
}
def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientCriterion] = {
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/criterion/$id"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichPatientCriterion](response)
+ entity <- apiResponse[RichPatientCriterion](response)
} yield {
- GetByIdReply.Entity(reply)
+ entity
}
}
def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Unit] = {
for {
entity <- Marshal(draftEntities).to[RequestEntity]
request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/patient/$patientId/criterion"))
.withEntity(entity)
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichPatientCriterion](response)
+ _ <- apiResponse[RichPatientCriterion](response)
} yield {
- UpdateReply.Updated(reply)
+ ()
}
}
def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientCriterion] = {
for {
entity <- Marshal(draftEntity).to[RequestEntity]
request = HttpRequest(
HttpMethods.PATCH,
endpointUri(baseUri, s"/v1/patient/$patientId/criterion/${origEntity.criterionId}")).withEntity(entity)
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichPatientCriterion](response)
+ entity <- apiResponse[RichPatientCriterion](response)
} yield {
- UpdateReply.Updated(reply)
+ entity
}
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala
index a6ef5b4..4e9bee7 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala
@@ -22,13 +22,12 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)(
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import xyz.driver.pdsuidomain.formats.json.listresponse._
import xyz.driver.pdsuidomain.formats.json.patientlabel._
- import xyz.driver.pdsuidomain.services.PatientLabelService._
def getAll(patientId: UuidId[Patient],
filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[RichPatientLabel], Int)] = {
val request = HttpRequest(HttpMethods.GET,
endpointUri(baseUri,
s"/v1/patient/$patientId/label",
@@ -37,7 +36,7 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)(
response <- transport.sendRequestGetResponse(requestContext)(request)
reply <- apiResponse[ListResponse[RichPatientLabel]](response)
} yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
+ (reply.items, reply.meta.itemsCount)
}
}
@@ -45,30 +44,30 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)(
hypothesisId: UuidId[Hypothesis],
pagination: Option[Pagination] = None)(
implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
- ): Future[GetDefiningCriteriaListReply] = {
+ ): Future[(Seq[PatientLabel], Int)] = {
val request = HttpRequest(HttpMethods.GET,
endpointUri(baseUri, s"/patient/$patientId/hypothesis", paginationQuery(pagination)))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
reply <- apiResponse[ListResponse[PatientLabel]](response)
} yield {
- GetDefiningCriteriaListReply.EntityList(reply.items, reply.meta.itemsCount)
+ (reply.items, reply.meta.itemsCount)
}
}
def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByLabelIdReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientLabel] = {
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/label/$labelId"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichPatientLabel](response)
+ entity <- apiResponse[RichPatientLabel](response)
} yield {
- GetByLabelIdReply.Entity(reply)
+ entity
}
}
def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientLabel] = {
for {
entity <- Marshal(draftPatientLabel).to[RequestEntity]
request = HttpRequest(
@@ -76,9 +75,9 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)(
endpointUri(baseUri, s"/v1/patient/${origPatientLabel.patientId}/label/${origPatientLabel.labelId}"))
.withEntity(entity)
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichPatientLabel](response)
+ entity <- apiResponse[RichPatientLabel](response)
} yield {
- UpdateReply.Updated(reply)
+ entity
}
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala
index 8460872..5a54cca 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala
@@ -1,5 +1,7 @@
package xyz.driver.pdsuidomain.services.rest
+import java.time.LocalDateTime
+
import scala.concurrent.{ExecutionContext, Future}
import akka.http.scaladsl.model._
import akka.stream.Materializer
@@ -19,23 +21,21 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro
import xyz.driver.pdsuidomain.formats.json.listresponse._
import xyz.driver.pdsuidomain.formats.json.patient._
- import xyz.driver.pdsuidomain.services.PatientService._
-
def getById(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] = {
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$id"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Patient](response)
+ entity <- apiResponse[Patient](response)
} yield {
- GetByIdReply.Entity(reply)
+ entity
}
}
def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
sorting: Option[Sorting] = None,
pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[(Seq[Patient], Int, Option[LocalDateTime])] = {
val request = HttpRequest(
HttpMethods.GET,
endpointUri(baseUri, "/v1/patient", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
@@ -43,38 +43,38 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro
response <- transport.sendRequestGetResponse(requestContext)(request)
reply <- apiResponse[ListResponse[Patient]](response)
} yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
+ (reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
}
}
private def editAction(orig: Patient, action: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] = {
val id = orig.id.toString
val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/patient/$id/$action"))
for {
response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Patient](response)
+ entity <- apiResponse[Patient](response)
} yield {
- UpdateReply.Updated(reply)
+ entity
}
}
def unassign(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "unassign")
def start(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "start")
def submit(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "submit")
def restart(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "restart")
def flag(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "flag")
def resolve(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
+ implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
editAction(origPatient, "resolve")
}
diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientCriterionFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientCriterionFormatSuite.scala
index 94d80c9..370173a 100644
--- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientCriterionFormatSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientCriterionFormatSuite.scala
@@ -6,8 +6,7 @@ import spray.json._
import org.scalatest.{FlatSpec, Matchers}
import xyz.driver.entities.labels.LabelValue
import xyz.driver.pdsuicommon.domain.{LongId, StringId}
-import xyz.driver.pdsuidomain.entities.{PatientCriterion, PatientCriterionArm}
-import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion}
+import xyz.driver.pdsuidomain.entities.{DraftPatientCriterion, PatientCriterion, PatientCriterionArm, RichPatientCriterion}
class PatientCriterionFormatSuite extends FlatSpec with Matchers {
import xyz.driver.pdsuidomain.formats.json.patientcriterion._
diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientEligibleTrialFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientEligibleTrialFormatSuite.scala
index faef0f6..6f3bc19 100644
--- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientEligibleTrialFormatSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientEligibleTrialFormatSuite.scala
@@ -6,8 +6,7 @@ import org.scalatest.{FlatSpec, Matchers}
import spray.json._
import xyz.driver.entities.labels.LabelValue
import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId}
-import xyz.driver.pdsuidomain.entities.{PatientCriterionArm, PatientTrialArmGroupView, Trial}
-import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial
+import xyz.driver.pdsuidomain.entities.{PatientCriterionArm, PatientTrialArmGroupView, RichPatientEligibleTrial, Trial}
class PatientEligibleTrialFormatSuite extends FlatSpec with Matchers {
import xyz.driver.pdsuidomain.formats.json.patienteligibletrial._
diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientLabelFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientLabelFormatSuite.scala
index 289de53..9340d02 100644
--- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientLabelFormatSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientLabelFormatSuite.scala
@@ -7,7 +7,6 @@ import org.scalatest.{FlatSpec, Matchers}
import xyz.driver.entities.labels.LabelValue
import xyz.driver.pdsuicommon.domain.{LongId, UuidId}
import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel
class PatientLabelFormatSuite extends FlatSpec with Matchers {