aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala130
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala126
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala45
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala95
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala147
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala26
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala145
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/EligibilitySnapshotService.scala16
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala22
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala126
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala69
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala119
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala28
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala45
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala95
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala126
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala28
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala29
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala20
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala25
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala32
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala24
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala31
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala39
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala27
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala80
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala130
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala28
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala45
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala95
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala158
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala32
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala136
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala85
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala88
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala121
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala33
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilitySnapshotService.scala34
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala53
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala100
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala107
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala60
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala88
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala37
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala129
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala81
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala84
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala78
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala34
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala34
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala103
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala173
52 files changed, 0 insertions, 3841 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala
deleted file mode 100644
index d4ff62b..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala
+++ /dev/null
@@ -1,130 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities.Arm
-
-import scala.concurrent.Future
-
-object ArmService {
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- trait DefaultNotFoundError {
- def userMessage: String = "Arm not found"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
-
- final case class Entity(x: Arm) 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
- }
-
- sealed trait GetListReply
- object GetListReply {
- type Error = GetListReply with DomainError
-
- final case class EntityList(xs: Seq[Arm], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
-
- final case class Updated(updated: Arm) extends UpdateReply
-
- type Error = UpdateReply with DomainError
-
- 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
-
- final case class AlreadyExistsError(x: Arm) extends UpdateReply with DomainError {
- val userMessage = s"The arm with such name of trial already exists."
- }
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: Arm) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
-
- final case class AlreadyExistsError(x: Arm) extends CreateReply with DomainError {
- val userMessage = s"The arm with this name of trial already exists."
- }
-
- implicit def toPhiString(reply: CreateReply): PhiString = reply match {
- case Created(x) => phi"Created($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait ArmService {
-
- import ArmService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def getById(armId: LongId[Arm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def create(draftArm: Arm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(origArm: Arm, draftArm: Arm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[Arm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala
deleted file mode 100644
index 9c6341c..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala
+++ /dev/null
@@ -1,126 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-object CriterionService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Criterion not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- final case class RichCriterion(criterion: Criterion,
- armIds: Seq[LongId[EligibilityArm]],
- labels: Seq[CriterionLabel])
- object RichCriterion {
- implicit def toPhiString(x: RichCriterion): PhiString = {
- import x._
- phi"RichCriterion(criterion=$criterion, armIds=$armIds, labels=$labels)"
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
-
- final case class Created(x: RichCriterion) 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 {
- final case class Entity(x: RichCriterion) 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 GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[RichCriterion], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: RichCriterion) 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
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait CriterionService {
-
- import CriterionService._
-
- def create(draftRichCriterion: RichCriterion)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def getById(id: LongId[Criterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def update(origRichCriterion: RichCriterion, draftRichCriterion: RichCriterion)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[Criterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala
deleted file mode 100644
index d209b39..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{Document, DocumentHistory}
-
-import scala.concurrent.Future
-
-object DocumentHistoryService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Document history not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[DocumentHistory], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- final case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
-}
-
-trait DocumentHistoryService {
-
- import DocumentHistoryService._
-
- def getListByDocumentId(id: LongId[Document],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala
deleted file mode 100644
index f7fc7b2..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala
+++ /dev/null
@@ -1,95 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{Document, DocumentIssue}
-
-import scala.concurrent.Future
-
-object DocumentIssueService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "DocumentIssue not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
- final case class Created(x: DocumentIssue) 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: DocumentIssue) 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 GetListByDocumentIdReply
- object GetListByDocumentIdReply {
- type Error = GetListByDocumentIdReply with DomainError
- final case class EntityList(xs: Seq[DocumentIssue], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListByDocumentIdReply
- case object NotFoundError extends GetListByDocumentIdReply with DomainError.NotFoundError with DefaultNotFoundError
- case object AuthorizationError
- extends GetListByDocumentIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
- final case class Updated(updated: DocumentIssue) 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 DocumentIssueService {
-
- import DocumentIssueService._
-
- def create(draft: DocumentIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def getById(documentId: LongId[Document], id: LongId[DocumentIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getListByDocumentId(documentId: LongId[Document],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByDocumentIdReply]
-
- def update(orig: DocumentIssue, draft: DocumentIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(documentId: LongId[Document], id: LongId[DocumentIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala
deleted file mode 100644
index a16ac9c..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala
+++ /dev/null
@@ -1,147 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-object DocumentService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Can not find the document"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: Document) 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 GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[Document], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- type Error = GetListReply with DomainError
-
- case object AuthorizationError
- extends GetListReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends GetListReply with DomainError
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: Document) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object NotFoundError extends CreateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- final case class Updated(updated: Document) extends UpdateReply
-
- type Error = UpdateReply with DomainError
-
- 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)
- }
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait DocumentService {
-
- import DocumentService._
-
- def getById(id: LongId[Document])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def create(draftDocument: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(orig: Document, draft: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[Document])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-
- def start(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def submit(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def restart(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def flag(orig: Document)(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def resolve(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def unassign(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def archive(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala
deleted file mode 100644
index ccaed22..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala
+++ /dev/null
@@ -1,26 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.Sorting
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.DocumentType
-import xyz.driver.pdsuidomain.services.DocumentTypeService.GetListReply
-
-import scala.concurrent.Future
-
-object DocumentTypeService {
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[DocumentType], totalFound: Int) extends GetListReply
- case object AuthorizationError extends GetListReply with DomainError.AuthorizationError {
- def userMessage: String = "Access denied"
- }
- }
-}
-
-trait DocumentTypeService {
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala
deleted file mode 100644
index 8e67627..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala
+++ /dev/null
@@ -1,145 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities.{EligibilityArm, EligibilityArmWithDiseases, SlotArm}
-
-import scala.concurrent.Future
-
-object EligibilityArmService {
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- trait DefaultNotFoundError {
- def userMessage: String = "EligibilityArm not found"
- }
-
- trait SlotArmNotFoundError {
- def userMessage: String = "SlotArm not found"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
-
- final case class Entity(x: EligibilityArmWithDiseases) 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
- }
-
- sealed trait GetListReply
- object GetListReply {
- type Error = GetListReply with DomainError
-
- final case class EntityList(xs: Seq[EligibilityArmWithDiseases], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
-
- final case class Updated(updated: EligibilityArmWithDiseases) extends UpdateReply
-
- type Error = UpdateReply with DomainError
-
- 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
-
- final case class AlreadyExistsError(x: EligibilityArmWithDiseases) extends UpdateReply with DomainError {
- val userMessage = s"The arm with such name of trial already exists."
- }
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: EligibilityArmWithDiseases) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- case object NotFoundError extends CreateReply with SlotArmNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
-
- final case class AlreadyExistsError(x: EligibilityArmWithDiseases) extends CreateReply with DomainError {
- val userMessage = s"The arm with this name of trial already exists."
- }
-
- implicit def toPhiString(reply: CreateReply): PhiString = reply match {
- case Created(x) => phi"Created($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait EligibilityArmService {
-
- import EligibilityArmService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def getByEligibilityId(armId: LongId[EligibilityArm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def deleteByEligibilityIdSlotArmId(armId: LongId[EligibilityArm], slotArmId: LongId[SlotArm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-
- def getBySlotId(armId: LongId[SlotArm],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def create(slotArmId: LongId[SlotArm], draftEligibilityArm: EligibilityArmWithDiseases)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(origEligibilityArm: EligibilityArmWithDiseases, draftEligibilityArm: EligibilityArmWithDiseases)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[EligibilityArm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilitySnapshotService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilitySnapshotService.scala
deleted file mode 100644
index b3e6673..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilitySnapshotService.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuidomain.entities.{Patient => PdsuiPatient}
-import xyz.driver.pdsuidomain.entities.eligibility.EligibleTrial
-
-import scala.concurrent.Future
-
-trait EligibilitySnapshotService {
-
- def eligibilitySnapshot(patientId: UuidId[PdsuiPatient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Seq[EligibleTrial]]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
deleted file mode 100644
index 3788617..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityVerificationService.scala
+++ /dev/null
@@ -1,22 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.Id
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.patient.{CancerType, Patient}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
-import xyz.driver.pdsuidomain.entities.EligibilityArm
-
-import scala.concurrent.Future
-import scalaz.ListT
-
-trait EligibilityVerificationService {
-
- def getMatchedPatients()(implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): ListT[Future, MatchedPatient]
-
- def getMismatchRankedLabels(patientId: Id[Patient],
- cancerType: CancerType,
- excludedArms: Seq[LongId[EligibilityArm]])(
- implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[MismatchRankedLabels]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala
deleted file mode 100644
index fbfb1d2..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala
+++ /dev/null
@@ -1,126 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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._
-import xyz.driver.pdsuidomain.entities.export.patient.ExportPatientWithLabels
-
-import scala.concurrent.Future
-
-object ExtractedDataService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Extracted data hasn't been found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- final case class RichExtractedData(extractedData: ExtractedData, labels: List[ExtractedDataLabel])
-
- object RichExtractedData {
- implicit def toPhiString(x: RichExtractedData): PhiString = {
- import x._
- phi"RichExtractedData(extractedData=$extractedData, labels=$labels)"
- }
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- type Error = GetByIdReply with DomainError
- final case class Entity(x: RichExtractedData) extends GetByIdReply
-
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object NotFoundError extends GetByIdReply with DefaultNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[RichExtractedData], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetPatientLabelsReply
- object GetPatientLabelsReply {
- type Error = GetPatientLabelsReply with DomainError
-
- final case class Entity(x: ExportPatientWithLabels) extends GetPatientLabelsReply
-
- case object NotFoundError extends GetPatientLabelsReply with DomainError.NotFoundError {
- def userMessage: String = "Patient not found"
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
- final case class Created(x: RichExtractedData) extends CreateReply
-
- case object AuthorizationError
- extends CreateReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
- final case class Updated(updated: RichExtractedData) extends UpdateReply
-
- case object AuthorizationError
- extends UpdateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- case object NotFoundError extends UpdateReply with DefaultNotFoundError with DomainError.NotFoundError
-
- 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 DefaultAccessDeniedError with DomainError.AuthorizationError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait ExtractedDataService {
-
- import ExtractedDataService._
-
- def getById(id: LongId[ExtractedData])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getPatientLabels(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetPatientLabelsReply]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def create(draftRichExtractedData: RichExtractedData)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(origRichExtractedData: RichExtractedData, draftRichExtractedData: RichExtractedData)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[ExtractedData])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala
deleted file mode 100644
index 929dd58..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala
+++ /dev/null
@@ -1,69 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.Sorting
-import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.Hypothesis
-
-import scala.concurrent.Future
-
-object HypothesisService {
- trait DefaultNotFoundError {
- def userMessage: String = "Hypothesis not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[Hypothesis], totalFound: Int) extends GetListReply
-
- case object AuthorizationError extends GetListReply with DomainError.AuthorizationError {
- def userMessage: String = "Access denied"
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: Hypothesis) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait HypothesisService {
-
- import HypothesisService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def create(draftHypothesis: Hypothesis)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def delete(id: UuidId[Hypothesis])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala
deleted file mode 100644
index 85e557a..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala
+++ /dev/null
@@ -1,119 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-object InterventionService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Intervention not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[InterventionWithArms], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: InterventionWithArms) 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: InterventionWithArms) 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
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: InterventionWithArms) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
-
- implicit def toPhiString(reply: CreateReply): PhiString = reply match {
- case Created(x) => phi"Created($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-
-}
-
-trait InterventionService {
-
- import InterventionService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def getById(id: LongId[Intervention])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def update(origIntervention: InterventionWithArms, draftIntervention: InterventionWithArms)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def create(draftIntervention: InterventionWithArms)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def delete(id: LongId[Intervention])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala
deleted file mode 100644
index 58f336d..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.Sorting
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.InterventionType
-
-import scala.concurrent.Future
-
-object InterventionTypeService {
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[InterventionType], totalFound: Int) extends GetListReply
-
- case object AuthorizationError extends GetListReply with DomainError.AuthorizationError {
- def userMessage: String = "Access denied"
- }
- }
-}
-
-trait InterventionTypeService {
-
- import InterventionTypeService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala
deleted file mode 100644
index 42285b1..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{MedicalRecord, MedicalRecordHistory}
-
-import scala.concurrent.Future
-
-object MedicalRecordHistoryService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Medical record history not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[MedicalRecordHistory], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- final case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
-}
-
-trait MedicalRecordHistoryService {
-
- import MedicalRecordHistoryService._
-
- def getListByRecordId(id: LongId[MedicalRecord],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala
deleted file mode 100644
index dc10a93..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala
+++ /dev/null
@@ -1,95 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{MedicalRecord, MedicalRecordIssue}
-
-import scala.concurrent.Future
-
-object MedicalRecordIssueService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "MedicalRecordIssue not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
- final case class Created(x: MedicalRecordIssue) 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: MedicalRecordIssue) 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 GetListByRecordIdReply
- object GetListByRecordIdReply {
- type Error = GetListByRecordIdReply with DomainError
- final case class EntityList(xs: Seq[MedicalRecordIssue], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListByRecordIdReply
- case object NotFoundError extends GetListByRecordIdReply with DomainError.NotFoundError with DefaultNotFoundError
- case object AuthorizationError
- extends GetListByRecordIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
- final case class Updated(updated: MedicalRecordIssue) 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 MedicalRecordIssueService {
-
- import MedicalRecordIssueService._
-
- def create(draft: MedicalRecordIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def getById(recordId: LongId[MedicalRecord], id: LongId[MedicalRecordIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getListByRecordId(recordId: LongId[MedicalRecord],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByRecordIdReply]
-
- def update(orig: MedicalRecordIssue, draft: MedicalRecordIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(recordId: LongId[MedicalRecord], id: LongId[MedicalRecordIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala
deleted file mode 100644
index 0d2c58b..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala
+++ /dev/null
@@ -1,126 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import akka.NotUsed
-import akka.stream.scaladsl.Source
-import akka.util.ByteString
-import java.time.LocalDateTime
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error._
-import xyz.driver.pdsuidomain.entities.MedicalRecord.PdfSource
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-object MedicalRecordService {
-
- type PdfSourceFetcher = (String, String) => Future[PdfSource]
-
- trait DefaultNotFoundError {
- def userMessage: String = "Medical record hasn't been found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
- final case class Entity(x: MedicalRecord) extends GetByIdReply
-
- type Error = GetByIdReply with DomainError
-
- 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 GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[MedicalRecord], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- type Error = GetListReply with DomainError
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
-
- case object NotFoundError extends GetListReply with DomainError.NotFoundError {
- def userMessage: String = "Patient wasn't found"
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
-
- final case class Created(x: MedicalRecord) extends CreateReply
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: MedicalRecord) 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
- }
-
- final case class Settings(pdfSourceBucket: String)
-}
-
-trait MedicalRecordService {
-
- import MedicalRecordService._
-
- def getById(recordId: LongId[MedicalRecord])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getPdfSource(recordId: LongId[MedicalRecord])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def create(draft: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(origRecord: MedicalRecord, draftRecord: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def start(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def submit(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def restart(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def flag(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def resolve(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def unassign(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def archive(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
deleted file mode 100644
index 915dc20..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-trait PatientCriterionService {
-
- def getAll(patientId: UuidId[Patient],
- origFilter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientCriterion]]
-
- def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[RichPatientCriterion]]
-
- def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Unit]
-
- def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])(
- 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
deleted file mode 100644
index e73d537..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-trait PatientEligibleTrialService {
-
- def getAll(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientEligibleTrial]]
-
- def getById(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[RichPatientEligibleTrial]]
-
- def getCriterionListByGroupId(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientCriterion]]
-
- def update(origEligibleTrialWithTrial: RichPatientEligibleTrial, draftPatientTrialArmGroup: PatientTrialArmGroupView)(
- 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
deleted file mode 100644
index 3f44e58..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala
+++ /dev/null
@@ -1,20 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.{Patient, PatientHistory}
-
-import scala.concurrent.Future
-
-trait PatientHistoryService {
-
- def getListByPatientId(id: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[PatientHistory]]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala
deleted file mode 100644
index 0191b5a..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala
+++ /dev/null
@@ -1,25 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.{Hypothesis, Patient, PatientHypothesis}
-
-import scala.concurrent.Future
-
-trait PatientHypothesisService {
-
- def getAll(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[PatientHypothesis]]
-
- def getById(patientId: UuidId[Patient], hypothesisId: UuidId[Hypothesis])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[PatientHypothesis]]
-
- def update(origPatientHypothesis: PatientHypothesis, draftPatientHypothesis: PatientHypothesis)(
- 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
deleted file mode 100644
index b2ba357..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala
+++ /dev/null
@@ -1,32 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.{Patient, PatientIssue}
-
-import scala.concurrent.Future
-
-trait PatientIssueService {
-
- def create(draft: PatientIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientIssue]
-
- def getById(patientId: UuidId[Patient], id: LongId[PatientIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[PatientIssue]]
-
- def getListByPatientId(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[PatientIssue]]
-
- def update(orig: PatientIssue, draft: PatientIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[PatientIssue]
-
- def delete(patientId: UuidId[Patient], id: LongId[PatientIssue])(
- 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
deleted file mode 100644
index a999bf9..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala
+++ /dev/null
@@ -1,24 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-trait PatientLabelEvidenceService {
-
- def getById(patientId: UuidId[Patient], labelId: LongId[Label], id: LongId[PatientLabelEvidence])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[PatientLabelEvidenceView]]
-
- def getAll(patientId: UuidId[Patient],
- labelId: LongId[Label],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[PatientLabelEvidenceView]]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
deleted file mode 100644
index 0eeac53..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala
+++ /dev/null
@@ -1,31 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-trait PatientLabelService {
-
- def getAll(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientLabel]]
-
- def getDefiningCriteriaList(patientId: UuidId[Patient],
- hypothesisId: UuidId[Hypothesis],
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[PatientLabel]]
-
- def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[RichPatientLabel]]
-
- def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)(
- 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
deleted file mode 100644
index 6f95fdb..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala
+++ /dev/null
@@ -1,39 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-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.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-
-import scala.concurrent.Future
-
-trait PatientService {
-
- def getById(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[Patient]]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[Patient]]
-
- def unassign(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-
- def start(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-
- def submit(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-
- def restart(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-
- def flag(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-
- def resolve(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala
deleted file mode 100644
index ab936d6..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.Sorting
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.ProviderType
-
-import scala.concurrent.Future
-
-object ProviderTypeService {
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[ProviderType], totalFound: Int) extends GetListReply
- case object AuthorizationError extends GetListReply with DomainError.AuthorizationError {
- def userMessage: String = "Access denied"
- }
- }
-}
-
-trait ProviderTypeService {
-
- import ProviderTypeService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala
deleted file mode 100644
index 6cb2051..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala
+++ /dev/null
@@ -1,80 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
-import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
-import xyz.driver.pdsuicommon.error.DomainError
-
-import scala.concurrent.Future
-
-object QueueUploadService {
- trait DefaultNotFoundError {
- def userMessage: String = "Message not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
-
- final case class Created(x: BridgeUploadQueue.Item) 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: BridgeUploadQueue.Item) extends GetByIdReply
- case object AuthorizationError
- extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- case object NotFoundError extends GetByIdReply with DomainError.NotFoundError with DefaultNotFoundError
- final case class CommonError(userMessage: String) extends GetByIdReply with DomainError
- }
-
- sealed trait GetListReply
- object GetListReply {
- type Error = GetListReply with DomainError
-
- final case class EntityList(xs: Seq[BridgeUploadQueue.Item], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait ResetReply
- object ResetReply {
- type Error = ResetReply with DomainError
-
- final case class Updated(updated: BridgeUploadQueue.Item) extends ResetReply
- case object AuthorizationError extends ResetReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- case object NotFoundError extends ResetReply with DefaultNotFoundError with DomainError.NotFoundError
- final case class CommonError(userMessage: String) extends ResetReply with DomainError
- }
-}
-
-trait QueueUploadService {
-
- import QueueUploadService._
-
- def create(kind: String, tag: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def getById(kind: String, tag: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def reset(kind: String, tag: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ResetReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala
deleted file mode 100644
index 44e50da..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala
+++ /dev/null
@@ -1,130 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities.SlotArm
-
-import scala.concurrent.Future
-
-object SlotArmService {
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- trait DefaultNotFoundError {
- def userMessage: String = "SlotArm not found"
- }
-
- sealed trait GetByIdReply
- object GetByIdReply {
-
- final case class Entity(x: SlotArm) 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
- }
-
- sealed trait GetListReply
- object GetListReply {
- type Error = GetListReply with DomainError
-
- final case class EntityList(xs: Seq[SlotArm], totalFound: Int) extends GetListReply
-
- case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
-
- final case class Updated(updated: SlotArm) extends UpdateReply
-
- type Error = UpdateReply with DomainError
-
- 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
-
- final case class AlreadyExistsError(x: SlotArm) extends UpdateReply with DomainError {
- val userMessage = s"The arm with such name of trial already exists."
- }
-
- implicit def toPhiString(reply: UpdateReply): PhiString = reply match {
- case Updated(x) => phi"Updated($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait CreateReply
- object CreateReply {
- final case class Created(x: SlotArm) extends CreateReply
-
- type Error = CreateReply with DomainError
-
- case object AuthorizationError
- extends CreateReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends CreateReply with DomainError
-
- final case class AlreadyExistsError(x: SlotArm) extends CreateReply with DomainError {
- val userMessage = s"The arm with this name of trial already exists."
- }
-
- implicit def toPhiString(reply: CreateReply): PhiString = reply match {
- case Created(x) => phi"Created($x)"
- case x: Error => DomainError.toPhiString(x)
- }
- }
-
- sealed trait DeleteReply
- object DeleteReply {
- case object Deleted extends DeleteReply
-
- type Error = DeleteReply with DomainError
-
- case object NotFoundError extends DeleteReply with DefaultNotFoundError with DomainError.NotFoundError
-
- case object AuthorizationError
- extends DeleteReply with DefaultAccessDeniedError with DomainError.AuthorizationError
-
- final case class CommonError(userMessage: String) extends DeleteReply with DomainError
- }
-}
-
-trait SlotArmService {
-
- import SlotArmService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def getById(armId: LongId[SlotArm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def create(draftSlotArm: SlotArm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def update(origSlotArm: SlotArm, draftSlotArm: SlotArm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(id: LongId[SlotArm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala
deleted file mode 100644
index 8af159d..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.Sorting
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.StudyDesign
-
-import scala.concurrent.Future
-
-object StudyDesignService {
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[StudyDesign], totalFound: Int) extends GetListReply
-
- case object AuthorizationError extends GetListReply with DomainError.AuthorizationError {
- def userMessage: String = "Access denied"
- }
- }
-}
-
-trait StudyDesignService {
-
- import StudyDesignService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala
deleted file mode 100644
index 96ff96d..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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.StringId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{Trial, TrialHistory}
-
-import scala.concurrent.Future
-
-object TrialHistoryService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Trial not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[TrialHistory], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListReply
-
- final case object AuthorizationError
- extends GetListReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
-}
-
-trait TrialHistoryService {
-
- import TrialHistoryService._
-
- def getListByTrialId(id: StringId[Trial],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala
deleted file mode 100644
index 433c1bc..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala
+++ /dev/null
@@ -1,95 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-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, StringId}
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuidomain.entities.{Trial, TrialIssue}
-
-import scala.concurrent.Future
-
-object TrialIssueService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "TrialIssue not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait CreateReply
- object CreateReply {
- type Error = CreateReply with DomainError
- final case class Created(x: TrialIssue) 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: TrialIssue) 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 GetListByTrialIdReply
- object GetListByTrialIdReply {
- type Error = GetListByTrialIdReply with DomainError
- final case class EntityList(xs: Seq[TrialIssue], totalFound: Int, lastUpdate: Option[LocalDateTime])
- extends GetListByTrialIdReply
- case object NotFoundError extends GetListByTrialIdReply with DomainError.NotFoundError with DefaultNotFoundError
- case object AuthorizationError
- extends GetListByTrialIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
- final case class Updated(updated: TrialIssue) 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 TrialIssueService {
-
- import TrialIssueService._
-
- def create(draft: TrialIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply]
-
- def getById(trialId: StringId[Trial], id: LongId[TrialIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getListByTrialId(trialId: StringId[Trial],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByTrialIdReply]
-
- def update(orig: TrialIssue, draft: TrialIssue)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def delete(trialId: StringId[Trial], id: LongId[TrialIssue])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply]
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala
deleted file mode 100644
index 9ae1c10..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala
+++ /dev/null
@@ -1,158 +0,0 @@
-package xyz.driver.pdsuidomain.services
-
-import java.time.LocalDateTime
-
-import akka.NotUsed
-import akka.stream.scaladsl.Source
-import akka.util.ByteString
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.entities.patient.CancerType
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.StringId
-import xyz.driver.pdsuicommon.error.DomainError
-import xyz.driver.pdsuicommon.logging._
-import xyz.driver.pdsuidomain.entities.{Trial, TrialCreationRequest}
-import xyz.driver.pdsuidomain.entities.export.trial.ExportTrialWithLabels
-
-import scala.concurrent.Future
-
-object TrialService {
-
- trait DefaultNotFoundError {
- def userMessage: String = "Trial not found"
- }
-
- trait DefaultAccessDeniedError {
- def userMessage: String = "Access denied"
- }
-
- sealed trait GetListReply
- object GetListReply {
- final case class EntityList(xs: Seq[Trial], 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: Trial) 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 GetTrialWithLabelsReply
- object GetTrialWithLabelsReply {
- type Error = GetTrialWithLabelsReply with DomainError
-
- final case class Entity(x: ExportTrialWithLabels) extends GetTrialWithLabelsReply
-
- case object NotFoundError extends GetTrialWithLabelsReply with DomainError.NotFoundError {
- def userMessage: String = "Trial not found"
- }
-
- case object AuthorizationError
- extends GetTrialWithLabelsReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait GetTrialsWithLabelsReply
- object GetTrialsWithLabelsReply {
- type Error = GetTrialsWithLabelsReply with DomainError
-
- final case class EntityList(xs: Seq[ExportTrialWithLabels]) extends GetTrialsWithLabelsReply
-
- case object NotFoundError extends GetTrialsWithLabelsReply with DomainError.NotFoundError {
- def userMessage: String = "Trials for disease are not found"
- }
-
- case object AuthorizationError
- extends GetTrialsWithLabelsReply with DomainError.AuthorizationError with DefaultAccessDeniedError
- }
-
- sealed trait UpdateReply
- object UpdateReply {
- type Error = UpdateReply with DomainError
-
- final case class Updated(updated: Trial) 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 TrialService {
-
- import TrialService._
-
- def getById(id: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply]
-
- def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialWithLabelsReply]
-
- def getTrialsWithLabels(cancerType: CancerType)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply]
-
- def getPdfSource(trialId: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]]
-
- def getHtmlSource(trialId: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]]
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply]
-
- def update(origTrial: Trial, draftTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def start(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def submit(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def restart(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def flag(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def resolve(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def archive(origTrial: Trial, comment: Option[String])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def unassign(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply]
-
- def addTrial(trial: TrialCreationRequest)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial]
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
deleted file mode 100644
index 35c518c..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeEligibilityVerificationService.scala
+++ /dev/null
@@ -1,32 +0,0 @@
-package xyz.driver.pdsuidomain.services.fake
-
-import xyz.driver.core.rest.AuthorizedServiceRequestContext
-import xyz.driver.core.{Id, generators}
-import xyz.driver.entities.patient
-import xyz.driver.entities.patient.Patient
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuidomain.entities.eligibility.MismatchRankedLabels
-import xyz.driver.pdsuidomain.entities.{EligibilityArm, eligibility}
-import xyz.driver.pdsuidomain.services.EligibilityVerificationService
-
-import scala.concurrent.Future
-import scalaz.ListT
-
-class FakeEligibilityVerificationService extends EligibilityVerificationService {
-
- override def getMatchedPatients()(
- implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): ListT[Future, eligibility.MatchedPatient] =
- ListT.listT[Future](
- Future.successful(List(xyz.driver.pdsuidomain.fakes.entities.eligibility.nextMatchedPatient())))
-
- override def getMismatchRankedLabels(patientId: Id[Patient],
- cancerType: patient.CancerType,
- excludedArms: Seq[LongId[EligibilityArm]])(
- implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[eligibility.MismatchRankedLabels] =
- Future.successful(
- MismatchRankedLabels(
- generators.seqOf(xyz.driver.pdsuidomain.fakes.entities.eligibility.nextLabelMismatchRank()),
- labelVersion = generators.nextInt(10)
- ))
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
deleted file mode 100644
index 221e56c..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
+++ /dev/null
@@ -1,136 +0,0 @@
-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)
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala
deleted file mode 100644
index 87e2bab..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala
+++ /dev/null
@@ -1,85 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.ArmService
-
-class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends ArmService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.arm._
- import xyz.driver.pdsuidomain.services.ArmService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(
- HttpMethods.GET,
- endpointUri(baseUri, "/v1/arm", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[Arm]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
- def getById(armId: LongId[Arm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/arm/$armId"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Arm](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def create(draftArm: Arm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftArm).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/arm")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Arm](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def update(origArm: Arm, draftArm: Arm)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origArm.id
- val request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/arm/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Arm](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def delete(id: LongId[Arm])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/arm/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala
deleted file mode 100644
index 33be27e..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala
+++ /dev/null
@@ -1,88 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.CriterionService
-
-class RestCriterionService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends CriterionService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.criterion._
- import xyz.driver.pdsuidomain.services.CriterionService._
-
- def create(draftRichCriterion: RichCriterion)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftRichCriterion).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/criterion")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichCriterion](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def getById(id: LongId[Criterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/criterion/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichCriterion](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- s"/v1/criterion",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[RichCriterion]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
- }
- }
-
- def update(origRichCriterion: RichCriterion, draftRichCriterion: RichCriterion)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origRichCriterion.criterion.id
- for {
- entity <- Marshal(draftRichCriterion).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/criterion/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichCriterion](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def delete(id: LongId[Criterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/criterion/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala
deleted file mode 100644
index bfe5e8f..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala
+++ /dev/null
@@ -1,121 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.DocumentService
-
-class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends DocumentService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.document._
- import xyz.driver.pdsuidomain.services.DocumentService._
-
- def getById(id: LongId[Document])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/document/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Document](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
-
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- "/v1/document",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[Document]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
- }
- }
-
- def create(draftDocument: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftDocument).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/document")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Document](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def update(orig: Document, draft: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- for {
- entity <- Marshal(draft).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/document/${orig.id}")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Document](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def delete(id: LongId[Document])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/document/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
- private def editAction(orig: Document, action: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = orig.id.toString
- val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/document/$id/$action"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Document](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def start(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "start")
- def submit(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "submit")
- def restart(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "restart")
- def flag(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "flag")
- def resolve(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "resolve")
- def unassign(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "unassign")
- def archive(orig: Document)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "archive")
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala
deleted file mode 100644
index 6157cc3..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.DocumentType
-import xyz.driver.pdsuidomain.services.DocumentTypeService
-
-class RestDocumentTypeService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends DocumentTypeService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.document.documentTypeFormat
- import xyz.driver.pdsuidomain.services.DocumentTypeService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/document-type", sortingQuery(sorting)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[DocumentType]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilitySnapshotService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilitySnapshotService.scala
deleted file mode 100644
index 2187ec2..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilitySnapshotService.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.model.{HttpMethods, HttpRequest, Uri}
-import akka.stream.Materializer
-import xyz.driver.core.rest.{AuthorizedServiceRequestContext, ServiceTransport}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuidomain.entities.eligibility.EligibleTrial
-import xyz.driver.pdsuidomain.entities.{Patient, eligibility}
-import xyz.driver.pdsuidomain.services.EligibilitySnapshotService
-
-import scala.concurrent.{ExecutionContext, Future}
-
-class RestEligibilitySnapshotService(transport: ServiceTransport, baseUrl: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext) extends EligibilitySnapshotService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import spray.json.DefaultJsonProtocol._
- import xyz.driver.pdsuidomain.formats.json.eligibility._
-
- override def eligibilitySnapshot(patientId: UuidId[Patient])
- (implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]):
- Future[Seq[eligibility.EligibleTrial]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUrl, s"/v1/patient/$patientId/eligibilitySnapshot"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Seq[EligibleTrial]](response)
- } yield {
- reply
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
deleted file mode 100644
index e057c55..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestEligibilityVerificationService.scala
+++ /dev/null
@@ -1,53 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.model.Uri
-import akka.stream.Materializer
-import spray.json.DefaultJsonProtocol
-import xyz.driver.core.Id
-import xyz.driver.core.rest.{AuthorizedServiceRequestContext, RestService, ServiceTransport}
-import xyz.driver.entities.patient
-import xyz.driver.entities.patient.Patient
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.domain.LongId
-import xyz.driver.pdsuidomain.entities.eligibility.{MatchedPatient, MismatchRankedLabels}
-import xyz.driver.pdsuidomain.entities.{EligibilityArm, eligibility}
-import xyz.driver.pdsuidomain.services.EligibilityVerificationService
-
-import scala.concurrent.{ExecutionContext, Future}
-import scalaz.ListT
-import scalaz.Scalaz.futureInstance
-
-class RestEligibilityVerificationService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext
-) extends EligibilityVerificationService with RestService {
-
- import DefaultJsonProtocol._
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.eligibility._
-
- override def getMatchedPatients()(
- implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): ListT[Future, eligibility.MatchedPatient] = {
- val request = get(baseUri, s"/v1/patients")
- listResponse[MatchedPatient](transport.sendRequest(ctx)(request))
- }
-
- override def getMismatchRankedLabels(patientId: Id[Patient],
- cancerType: patient.CancerType,
- excludedArms: Seq[LongId[EligibilityArm]])(
- implicit ctx: AuthorizedServiceRequestContext[AuthUserInfo]): Future[eligibility.MismatchRankedLabels] = {
-
- val query = Seq("disease" -> cancerType.toString.toUpperCase) ++ (if (excludedArms.nonEmpty) {
- Seq(
- "ineligible_arms" -> excludedArms
- .map(_.id)
- .mkString(","))
- } else {
- Seq.empty[(String, String)]
- })
-
- val request = get(baseUri, s"/v1/patients/$patientId/labels", query)
- optionalResponse[MismatchRankedLabels](transport.sendRequest(ctx)(request))
- .getOrElse(throw new Exception(s"The data of patient $patientId is not ready yet"))
- }
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala
deleted file mode 100644
index 24c5436..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala
+++ /dev/null
@@ -1,100 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.entities.export.patient.ExportPatientWithLabels
-import xyz.driver.pdsuidomain.services.ExtractedDataService
-import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.formats.json.export._
-
-class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends ExtractedDataService with RestHelper {
-
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.extracteddata._
- import xyz.driver.pdsuidomain.services.ExtractedDataService._
-
- def getById(id: LongId[ExtractedData])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/extracted-data/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichExtractedData](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- "/v1/extracted-data",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[RichExtractedData]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
- def create(draftRichExtractedData: RichExtractedData)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftRichExtractedData).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/extracted-data")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichExtractedData](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
- def update(origRichExtractedData: RichExtractedData, draftRichExtractedData: RichExtractedData)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origRichExtractedData.extractedData.id
- for {
- entity <- Marshal(draftRichExtractedData).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/extracted-data/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[RichExtractedData](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def delete(id: LongId[ExtractedData])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/export-data/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
- def getPatientLabels(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetPatientLabelsReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/patient/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ExportPatientWithLabels](response)
- } yield {
- GetPatientLabelsReply.Entity(reply)
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala
deleted file mode 100644
index 8ed2651..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala
+++ /dev/null
@@ -1,107 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model.{HttpResponse, ResponseEntity, StatusCodes, Uri}
-import akka.http.scaladsl.unmarshalling.{Unmarshal, Unmarshaller}
-import akka.stream.Materializer
-import xyz.driver.core.rest.errors.{InvalidActionException, InvalidInputException, ResourceNotFoundException}
-import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterBinaryOperation, SearchFilterExpr, SearchFilterNAryOperation, Sorting, SortingOrder}
-import xyz.driver.pdsuicommon.error._
-
-trait RestHelper {
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import ErrorsResponse._
-
- implicit protected val materializer: Materializer
- implicit protected val exec: ExecutionContext
-
- protected def endpointUri(baseUri: Uri, path: String) =
- baseUri.withPath(Uri.Path(path))
-
- protected def endpointUri(baseUri: Uri, path: String, query: Seq[(String, String)]) =
- baseUri.withPath(Uri.Path(path)).withQuery(Uri.Query(query: _*))
-
- def sortingQuery(sorting: Option[Sorting]): Seq[(String, String)] = {
- def dimensionQuery(dimension: Sorting.Dimension) = {
- val ord = dimension.order match {
- case SortingOrder.Ascending => ""
- case SortingOrder.Descending => "-"
- }
- s"$ord${dimension.name}"
- }
-
- sorting match {
- case None => Seq.empty
- case Some(dimension: Sorting.Dimension) => Seq("sort" -> dimensionQuery(dimension))
- case Some(Sorting.Sequential(dimensions)) => Seq("sort" -> dimensions.map(dimensionQuery).mkString(","))
- }
- }
-
- def filterQuery(expr: SearchFilterExpr): Seq[(String, String)] = {
- def opToString(op: SearchFilterBinaryOperation) = op match {
- case SearchFilterBinaryOperation.Eq => "eq"
- case SearchFilterBinaryOperation.NotEq => "ne"
- case SearchFilterBinaryOperation.Like => "like"
- case SearchFilterBinaryOperation.Gt => "gt"
- case SearchFilterBinaryOperation.GtEq => "ge"
- case SearchFilterBinaryOperation.Lt => "lt"
- case SearchFilterBinaryOperation.LtEq => "le"
- }
-
- def exprToQuery(expr: SearchFilterExpr): Seq[(String, String)] = expr match {
- case SearchFilterExpr.Empty => Seq.empty
- case SearchFilterExpr.Atom.Binary(dimension, op, value) =>
- Seq("filters" -> s"${dimension.tableName.fold("")(t => s"$t.") + dimension.name} ${opToString(op)} $value")
- case SearchFilterExpr.Atom.NAry(dimension, SearchFilterNAryOperation.In, values) =>
- Seq("filters" -> s"${dimension.tableName.fold("")(t => s"$t.") + dimension.name} in ${values.mkString(",")}")
- case SearchFilterExpr.Intersection(ops) =>
- ops.flatMap(op => exprToQuery(op))
- case expr => sys.error(s"No parser available for filter expression $expr.")
- }
-
- exprToQuery(expr)
- }
-
- def paginationQuery(pagination: Option[Pagination]): Seq[(String, String)] = pagination match {
- case None => Seq.empty
- case Some(pp) =>
- Seq(
- "pageNumber" -> pp.pageNumber.toString,
- "pageSize" -> pp.pageSize.toString
- )
- }
-
- /** Utility method to parse responses from records-acquisition-server.
- *
- * Non-2xx HTTP error codes will be cause the returned future to fail with a corresponding
- * `DomainException`.
- * @tparam ApiReply The type of the serialized reply object, contained in the HTTP entity
- * @param response The HTTP response to parse.
- * @param unmarshaller An unmarshaller that converts a successful response to an api reply.
- */
- def apiResponse[ApiReply](response: HttpResponse)(
- implicit unmarshaller: Unmarshaller[ResponseEntity, ApiReply]): Future[ApiReply] = {
-
- def extractErrorMessage(response: HttpResponse): Future[String] = {
- Unmarshal(response.entity)
- .to[ErrorsResponse]
- .transform(
- response => response.errors.map(_.message).mkString(", "),
- ex => InvalidInputException(s"Response has invalid format: ${ex.getMessage}")
- )
- }
-
- if (response.status.isSuccess) {
- Unmarshal(response.entity).to[ApiReply]
- } else {
- extractErrorMessage(response).flatMap { message =>
- Future.failed(response.status match {
- case StatusCodes.Forbidden => InvalidActionException(message)
- case StatusCodes.NotFound => ResourceNotFoundException(message)
- case other =>
- InvalidInputException(s"Unhandled domain error for HTTP status ${other.value}. $message")
- })
- }
- }
- }
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala
deleted file mode 100644
index 11adb8f..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.marshalling.Marshal
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest._
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain.UuidId
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.Hypothesis
-import xyz.driver.pdsuidomain.services.HypothesisService
-
-class RestHypothesisService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends HypothesisService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.hypothesis._
- import xyz.driver.pdsuidomain.services.HypothesisService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/hypothesis", sortingQuery(sorting)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[Hypothesis]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
- def create(draftHypothesis: Hypothesis)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftHypothesis).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/hypothesis")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Hypothesis](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def delete(id: UuidId[Hypothesis])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/hypothesis/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala
deleted file mode 100644
index c4add4a..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala
+++ /dev/null
@@ -1,88 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.InterventionService
-
-class RestInterventionService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends InterventionService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.intervention._
- import xyz.driver.pdsuidomain.services.InterventionService._
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- "/v1/intervention",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[InterventionWithArms]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
- def getById(id: LongId[Intervention])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/intervention/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[InterventionWithArms](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def update(origIntervention: InterventionWithArms, draftIntervention: InterventionWithArms)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origIntervention.intervention.id
- for {
- entity <- Marshal(draftIntervention).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/intervention/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[InterventionWithArms](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def create(draftIntervention: InterventionWithArms)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftIntervention).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/intervention")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[InterventionWithArms](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def delete(id: LongId[Intervention])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/intervention/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala
deleted file mode 100644
index 825b936..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest._
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.InterventionType
-import xyz.driver.pdsuidomain.services.InterventionTypeService
-
-class RestInterventionTypeService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends InterventionTypeService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.intervention.interventionTypeFormat
- import xyz.driver.pdsuidomain.services.InterventionTypeService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/intervention-type", sortingQuery(sorting)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[InterventionType]](response)
- } yield {
- {
- val domain = reply.items
- GetListReply.EntityList(domain.toList, reply.meta.itemsCount)
- }
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala
deleted file mode 100644
index 6af6707..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala
+++ /dev/null
@@ -1,129 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.NotUsed
-import akka.stream.scaladsl.Source
-import akka.util.ByteString
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.MedicalRecordService
-
-class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends MedicalRecordService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.record._
- import xyz.driver.pdsuidomain.services.MedicalRecordService._
-
- def getById(recordId: LongId[MedicalRecord])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/record/$recordId"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[MedicalRecord](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def getPdfSource(recordId: LongId[MedicalRecord])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
- ): Future[Source[ByteString, NotUsed]] = {
-
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/record/$recordId/source"))
-
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[HttpEntity](response)
- } yield {
- reply.dataBytes.mapMaterializedValue(_ => NotUsed)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
-
- val request = HttpRequest(
- HttpMethods.GET,
- endpointUri(baseUri, "/v1/record", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[MedicalRecord]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
- }
- }
-
- def create(draftRecord: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = {
- for {
- entity <- Marshal(draftRecord).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/record")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[MedicalRecord](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- def update(origRecord: MedicalRecord, draftRecord: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origRecord.id.toString
- for {
- entity <- Marshal(draftRecord).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/record/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[MedicalRecord](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- private def editAction(orig: MedicalRecord, action: String)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = orig.id.toString
- val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/record/$id/$action"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[MedicalRecord](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def start(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "start")
- def submit(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "submit")
- def restart(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "restart")
- def flag(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "flag")
- def resolve(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "resolve")
- def unassign(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "unassign")
- def archive(orig: MedicalRecord)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- editAction(orig, "archive")
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala
deleted file mode 100644
index cc66142..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala
+++ /dev/null
@@ -1,81 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.{Pagination, _}
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientCriterionService
-
-import scala.concurrent.{ExecutionContext, Future}
-
-class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends PatientCriterionService with RestHelper {
-
- import spray.json.DefaultJsonProtocol._
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.patientcriterion._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
-
- def getAll(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientCriterion]] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- s"/v1/patient/$patientId/criterion",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(Some(pagination))))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[RichPatientCriterion]](response)
- } yield {
- reply
- }
- }
-
- def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[RichPatientCriterion]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/criterion/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- entity <- apiResponse[RichPatientCriterion](response)
- } yield {
- Option(entity)
- }
- }
-
- def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])(
- 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)
- _ <- apiResponse[RichPatientCriterion](response)
- } yield {
- ()
- }
- }
-
- def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])(
- 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)
- entity <- apiResponse[RichPatientCriterion](response)
- } yield {
- 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
deleted file mode 100644
index 932e123..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala
+++ /dev/null
@@ -1,84 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.labels.Label
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.{Pagination, _}
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientLabelService
-
-import scala.concurrent.{ExecutionContext, Future}
-
-class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends PatientLabelService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.patientlabel._
-
- def getAll(patientId: UuidId[Patient],
- filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[RichPatientLabel]] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri,
- s"/v1/patient/$patientId/label",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(Some(pagination))))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[RichPatientLabel]](response)
- } yield {
- reply
- }
- }
-
- def getDefiningCriteriaList(patientId: UuidId[Patient],
- hypothesisId: UuidId[Hypothesis],
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
- ): Future[ListResponse[PatientLabel]] = {
- val request = HttpRequest(HttpMethods.GET,
- endpointUri(baseUri, s"/patient/$patientId/hypothesis", paginationQuery(Some(pagination))))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[PatientLabel]](response)
- } yield {
- reply
- }
- }
-
- def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[RichPatientLabel]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/label/$labelId"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- entity <- apiResponse[RichPatientLabel](response)
- } yield {
- Option(entity)
- }
- }
-
- def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[RichPatientLabel] = {
- for {
- entity <- Marshal(draftPatientLabel).to[RequestEntity]
- request = HttpRequest(
- HttpMethods.PATCH,
- endpointUri(baseUri, s"/v1/patient/${origPatientLabel.patientId}/label/${origPatientLabel.labelId}"))
- .withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- entity <- apiResponse[RichPatientLabel](response)
- } yield {
- 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
deleted file mode 100644
index 67f4e38..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala
+++ /dev/null
@@ -1,78 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db.{Pagination, _}
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.services.PatientService
-
-class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends PatientService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.patient._
-
- def getById(id: UuidId[Patient])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Option[Patient]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- entity <- apiResponse[Patient](response)
- } yield {
- Option(entity)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Pagination = Pagination.Default)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[ListResponse[Patient]] = {
- val request = HttpRequest(
- HttpMethods.GET,
- endpointUri(baseUri, "/v1/patient", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(Some(pagination))))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[Patient]](response)
- } yield {
- reply
- }
- }
-
- private def editAction(orig: Patient, action: String)(
- 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)
- entity <- apiResponse[Patient](response)
- } yield {
- entity
- }
- }
-
- def unassign(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "unassign")
- def start(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "start")
- def submit(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "submit")
- def restart(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "restart")
- def flag(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "flag")
- def resolve(origPatient: Patient)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Patient] =
- editAction(origPatient, "resolve")
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala
deleted file mode 100644
index ffde086..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.ProviderType
-import xyz.driver.pdsuidomain.services.ProviderTypeService
-
-class RestProviderTypeService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends ProviderTypeService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.record.providerTypeFormat
- import xyz.driver.pdsuidomain.services.ProviderTypeService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/provider-type", sortingQuery(sorting)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[ProviderType]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala
deleted file mode 100644
index f8ce502..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest._
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.StudyDesign
-import xyz.driver.pdsuidomain.services.StudyDesignService
-
-class RestStudyDesignService(transport: ServiceTransport, baseUri: Uri)(
- implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends StudyDesignService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.studydesign._
- import xyz.driver.pdsuidomain.services.StudyDesignService._
-
- def getAll(sorting: Option[Sorting] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/study-design", sortingQuery(sorting)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[StudyDesign]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount)
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala
deleted file mode 100644
index b14d35b..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialIssueService.scala
+++ /dev/null
@@ -1,103 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import spray.json.RootJsonReader
-import xyz.driver.core.rest.{AuthorizedServiceRequestContext, ServiceTransport}
-import xyz.driver.entities.users
-import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting}
-import xyz.driver.pdsuicommon.domain.{LongId, StringId}
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.entities.{Trial, TrialIssue}
-import xyz.driver.pdsuidomain.services.TrialIssueService
-
-import scala.concurrent.ExecutionContext
-
-class RestTrialIssueService(transport: ServiceTransport, baseUri: Uri)
- (implicit
- protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends TrialIssueService with RestHelper{
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.trialissue._
- import xyz.driver.pdsuidomain.services.TrialIssueService._
-
- override def create(draft: TrialIssue)
- (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = {
- val trialId = draft.trialId
-
- implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId)
-
- for {
- entity <- Marshal(draft).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/$trialId/issue")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[TrialIssue](response)
- } yield {
- CreateReply.Created(reply)
- }
- }
-
- override def getListByTrialId(trialId: StringId[Trial],
- filter: SearchFilterExpr,
- sorting: Option[Sorting],
- pagination: Option[Pagination])
- (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = {
- implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId)
-
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/issue",
- filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination))
- )
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[TrialIssue]](response)
- } yield {
- GetListByTrialIdReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
- }
- }
-
- override def getById(trialId: StringId[Trial], id: LongId[TrialIssue])
- (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = {
- implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId)
-
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[TrialIssue](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- override def update(orig: TrialIssue, draft: TrialIssue)
- (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = {
- val trialId = draft.trialId
- val id = orig.id.id
-
- implicit val jsonReader: RootJsonReader[TrialIssue] = trialIssueReader(trialId)
-
- for {
- entity <- Marshal(draft).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[TrialIssue](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- override def delete(trialId: StringId[Trial], id: LongId[TrialIssue])
- (implicit requestContext: AuthorizedServiceRequestContext[users.AuthUserInfo]) = {
- val request = HttpRequest(HttpMethods.DELETE, endpointUri(baseUri, s"/v1/trial/$trialId/issue/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- _ <- apiResponse[HttpEntity](response)
- } yield {
- DeleteReply.Deleted
- }
- }
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
deleted file mode 100644
index 94e1c63..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
+++ /dev/null
@@ -1,173 +0,0 @@
-package xyz.driver.pdsuidomain.services.rest
-
-import scala.concurrent.{ExecutionContext, Future}
-import akka.NotUsed
-import akka.stream.scaladsl.Source
-import akka.util.ByteString
-import akka.http.scaladsl.marshalling.Marshal
-import akka.http.scaladsl.model._
-import akka.stream.Materializer
-import xyz.driver.core.rest.{Pagination => _, _}
-import xyz.driver.pdsuicommon.db._
-import xyz.driver.pdsuicommon.domain._
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuidomain.entities.export.trial.ExportTrialWithLabels
-import xyz.driver.pdsuidomain.services.TrialService
-import spray.json.DefaultJsonProtocol._
-import xyz.driver.entities.patient.CancerType
-import xyz.driver.entities.users.AuthUserInfo
-import xyz.driver.pdsuidomain.ListResponse
-import xyz.driver.pdsuidomain.formats.json.export._
-
-class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit protected val materializer: Materializer,
- protected val exec: ExecutionContext)
- extends TrialService with RestHelper {
-
- import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
- import xyz.driver.pdsuidomain.formats.json.listresponse._
- import xyz.driver.pdsuidomain.formats.json.trial._
- import xyz.driver.pdsuidomain.services.TrialService._
-
- def getById(id: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$id"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Trial](response)
- } yield {
- GetByIdReply.Entity(reply)
- }
- }
-
- def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialWithLabelsReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/trial/$cancerType/$trialId"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ExportTrialWithLabels](response)
- } yield {
- GetTrialWithLabelsReply.Entity(reply)
- }
- }
-
- def getTrialsWithLabels(cancerType: CancerType)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/trial/$cancerType"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Seq[ExportTrialWithLabels]](response)
- } yield {
- GetTrialsWithLabelsReply.EntityList(reply)
- }
- }
-
- def getPdfSource(trialId: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
- ): Future[Source[ByteString, NotUsed]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/source"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[HttpEntity](response)
- } yield {
- reply.dataBytes.mapMaterializedValue(_ => NotUsed)
- }
- }
-
- def getHtmlSource(trialId: StringId[Trial])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]
- ): Future[Source[ByteString, NotUsed]] = {
- val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/source.html"))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[HttpEntity](response)
- } yield {
- reply.dataBytes.mapMaterializedValue(_ => NotUsed)
- }
- }
-
- def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty,
- sorting: Option[Sorting] = None,
- pagination: Option[Pagination] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = {
- val request = HttpRequest(
- HttpMethods.GET,
- endpointUri(baseUri, "/v1/trial", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination)))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[ListResponse[Trial]](response)
- } yield {
- GetListReply.EntityList(reply.items, reply.meta.itemsCount, reply.meta.lastUpdate)
- }
- }
-
- def update(origTrial: Trial, draftTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
- val id = origTrial.id.id
- for {
- entity <- Marshal(draftTrial).to[RequestEntity]
- request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/trial/$id")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Trial](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- private def singleAction(origTrial: Trial, action: String, comment: Option[String] = None)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = {
-
- val query = comment match {
- case Some(s) => Seq("comment" -> s)
- case None => Seq.empty[(String, String)]
- }
-
- val id = origTrial.id.id
- val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/$id/$action", query))
- for {
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Trial](response)
- } yield {
- UpdateReply.Updated(reply)
- }
- }
-
- def start(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "start")
-
- def submit(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "submit")
-
- def restart(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "restart")
-
- def flag(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "flag")
-
- def resolve(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "resolve")
-
- def archive(origTrial: Trial, comment: Option[String])(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "archive", comment)
-
- def unassign(origTrial: Trial)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] =
- singleAction(origTrial, "unassign")
-
- override def addTrial(trial: TrialCreationRequest)(
- implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial] = {
- for {
- entity <- Marshal(trial).to[RequestEntity]
- request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/${trial.nctId}")).withEntity(entity)
- response <- transport.sendRequestGetResponse(requestContext)(request)
- reply <- apiResponse[Trial](response)
- } yield {
- reply
- }
- }
-}