From b331892f87846945f69a28e9f3ee786cd4b93577 Mon Sep 17 00:00:00 2001 From: vlad Date: Thu, 2 Nov 2017 16:22:11 -0700 Subject: Using common request contexts and user objects --- .../scala/xyz/driver/pdsuicommon/acl/ACL.scala | 46 +++--- .../pdsuicommon/auth/AnonymousRequestContext.scala | 11 -- .../auth/AuthenticatedRequestContext.scala | 36 ----- .../xyz/driver/pdsuicommon/auth/RequestId.scala | 14 -- .../xyz/driver/pdsuicommon/domain/Email.scala | 3 - .../scala/xyz/driver/pdsuicommon/domain/User.scala | 163 --------------------- .../driver/pdsuicommon/error/ErrorsResponse.scala | 9 +- .../xyz/driver/pdsuicommon/http/Directives.scala | 29 +--- .../driver/pdsuicommon/logging/TimeLogger.scala | 3 +- .../xyz/driver/pdsuidomain/entities/CaseId.scala | 10 -- .../xyz/driver/pdsuidomain/entities/Document.scala | 1 + .../pdsuidomain/entities/DocumentHistory.scala | 1 + .../pdsuidomain/entities/DocumentIssue.scala | 3 +- .../pdsuidomain/entities/MedicalRecord.scala | 7 +- .../entities/MedicalRecordHistory.scala | 1 + .../pdsuidomain/entities/MedicalRecordIssue.scala | 3 +- .../xyz/driver/pdsuidomain/entities/Message.scala | 3 +- .../xyz/driver/pdsuidomain/entities/Patient.scala | 20 +-- .../pdsuidomain/entities/PatientHistory.scala | 3 +- .../driver/pdsuidomain/entities/PatientIssue.scala | 1 + .../pdsuidomain/entities/PatientOrderId.scala | 14 -- .../pdsuidomain/entities/RawPatientDocument.scala | 6 +- .../pdsuidomain/entities/RecordRequestId.scala | 15 -- .../xyz/driver/pdsuidomain/entities/Trial.scala | 3 +- .../driver/pdsuidomain/entities/TrialHistory.scala | 1 + .../driver/pdsuidomain/entities/TrialIssue.scala | 3 +- .../driver/pdsuidomain/entities/UserHistory.scala | 1 + .../ExportPatientLabelEvidenceDocument.scala | 7 +- .../driver/pdsuidomain/fakes/entities/export.scala | 11 +- .../fakes/entities/recordprocessing.scala | 19 +-- .../fakes/entities/treatmentmatching.scala | 9 +- .../pdsuidomain/fakes/entities/trialcuration.scala | 3 +- .../pdsuidomain/formats/json/documentissue.scala | 3 +- .../driver/pdsuidomain/formats/json/export.scala | 1 + .../driver/pdsuidomain/formats/json/patient.scala | 16 +- .../pdsuidomain/formats/json/patientissue.scala | 3 +- .../driver/pdsuidomain/formats/json/record.scala | 27 +--- .../pdsuidomain/formats/json/recordissue.scala | 5 +- .../driver/pdsuidomain/formats/json/trial.scala | 3 +- .../pdsuidomain/formats/json/trialissue.scala | 3 +- .../driver/pdsuidomain/services/ArmService.scala | 20 ++- .../pdsuidomain/services/CriterionService.scala | 18 ++- .../services/DocumentHistoryService.scala | 5 +- .../services/DocumentIssueService.scala | 14 +- .../pdsuidomain/services/DocumentService.scala | 39 +++-- .../pdsuidomain/services/DocumentTypeService.scala | 5 +- .../services/EligibilityArmService.scala | 19 ++- .../services/ExtractedDataService.scala | 17 ++- .../pdsuidomain/services/HypothesisService.scala | 11 +- .../pdsuidomain/services/InterventionService.scala | 18 ++- .../services/InterventionTypeService.scala | 5 +- .../services/MedicalRecordHistoryService.scala | 5 +- .../services/MedicalRecordIssueService.scala | 14 +- .../services/MedicalRecordService.scala | 36 +++-- .../services/PatientCriterionService.scala | 11 +- .../services/PatientEligibleTrialService.scala | 11 +- .../services/PatientHistoryService.scala | 5 +- .../services/PatientHypothesisService.scala | 9 +- .../pdsuidomain/services/PatientIssueService.scala | 14 +- .../services/PatientLabelEvidenceService.scala | 7 +- .../pdsuidomain/services/PatientLabelService.scala | 11 +- .../pdsuidomain/services/PatientService.scala | 29 ++-- .../pdsuidomain/services/ProviderTypeService.scala | 5 +- .../pdsuidomain/services/QueueUploadService.scala | 14 +- .../pdsuidomain/services/SlotArmService.scala | 19 ++- .../pdsuidomain/services/StudyDesignService.scala | 5 +- .../pdsuidomain/services/TrialHistoryService.scala | 5 +- .../pdsuidomain/services/TrialIssueService.scala | 14 +- .../driver/pdsuidomain/services/TrialService.scala | 40 +++-- .../services/fake/FakeTrialService.scala | 38 +++-- .../pdsuidomain/services/rest/RestArmService.scala | 16 +- .../services/rest/RestCriterionService.scala | 14 +- .../services/rest/RestDocumentService.scala | 38 +++-- .../services/rest/RestDocumentTypeService.scala | 4 +- .../services/rest/RestExtractedDataService.scala | 16 +- .../pdsuidomain/services/rest/RestHelper.scala | 17 +-- .../services/rest/RestHypothesisService.scala | 10 +- .../services/rest/RestInterventionService.scala | 14 +- .../rest/RestInterventionTypeService.scala | 4 +- .../services/rest/RestMedicalRecordService.scala | 39 +++-- .../rest/RestPatientCriterionService.scala | 10 +- .../services/rest/RestPatientLabelService.scala | 11 +- .../services/rest/RestPatientService.scala | 28 ++-- .../services/rest/RestProviderTypeService.scala | 4 +- .../services/rest/RestStudyDesignService.scala | 4 +- .../services/rest/RestTrialService.scala | 39 +++-- .../scala/xyz/driver/pdsuicommon/BaseSuite.scala | 23 --- .../xyz/driver/pdsuidomain/DocumentSuite.scala | 10 +- .../formats/json/ExportFormatSuite.scala | 7 +- .../formats/json/ListResponseFormatSuite.scala | 7 +- .../formats/json/MedicalRecordFormatSuite.scala | 9 +- .../formats/json/PatientFormatSuite.scala | 6 +- 92 files changed, 579 insertions(+), 734 deletions(-) delete mode 100644 src/main/scala/xyz/driver/pdsuicommon/auth/AnonymousRequestContext.scala delete mode 100644 src/main/scala/xyz/driver/pdsuicommon/auth/AuthenticatedRequestContext.scala delete mode 100644 src/main/scala/xyz/driver/pdsuicommon/auth/RequestId.scala delete mode 100644 src/main/scala/xyz/driver/pdsuicommon/domain/Email.scala delete mode 100644 src/main/scala/xyz/driver/pdsuicommon/domain/User.scala delete mode 100644 src/main/scala/xyz/driver/pdsuidomain/entities/CaseId.scala delete mode 100644 src/main/scala/xyz/driver/pdsuidomain/entities/PatientOrderId.scala delete mode 100644 src/main/scala/xyz/driver/pdsuidomain/entities/RecordRequestId.scala delete mode 100644 src/test/scala/xyz/driver/pdsuicommon/BaseSuite.scala diff --git a/src/main/scala/xyz/driver/pdsuicommon/acl/ACL.scala b/src/main/scala/xyz/driver/pdsuicommon/acl/ACL.scala index 3eb1a65..c1907cd 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/acl/ACL.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/acl/ACL.scala @@ -1,22 +1,32 @@ package xyz.driver.pdsuicommon.acl +import xyz.driver.core.auth.Role +import xyz.driver.core.rest.AuthorizedServiceRequestContext +import xyz.driver.entities.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext /** * @see https://driverinc.atlassian.net/wiki/display/RA/User+permissions#UserPermissions-AccessControlList */ object ACL extends PhiLogging { - import xyz.driver.pdsuicommon.domain.User.Role - import Role._ - type AclCheck = Role => Boolean val Forbid: AclCheck = _ => false val Allow: AclCheck = _ => true + val RepRoles: Set[Role] = Set[Role](RecordAdmin, RecordCleaner, RecordOrganizer, DocumentExtractor) + + val TcRoles: Set[Role] = Set[Role](TrialSummarizer, CriteriaCurator, TrialAdmin) + + val TreatmentMatchingRoles: Set[Role] = Set[Role](RoutesCurator, EligibilityVerifier, TreatmentMatchingAdmin) + + val PepRoles: Set[Role] = Set[Role](ResearchOncologist) + + val All: Set[Role] = RepRoles ++ TcRoles ++ TreatmentMatchingRoles ++ PepRoles + AdministratorRole + // Common object UserHistory @@ -28,9 +38,9 @@ object ACL extends PhiLogging { object Queue extends BaseACL( label = "queue", - create = Set(SystemUser), - read = Set(SystemUser), - update = Set(SystemUser) + create = Set(AdministratorRole), + read = Set(AdministratorRole), + update = Set(AdministratorRole) ) // REP @@ -38,7 +48,7 @@ object ACL extends PhiLogging { object MedicalRecord extends BaseACL( label = "medical record", - read = RepRoles + RoutesCurator + TreatmentMatchingAdmin + ResearchOncologist + SystemUser, + read = RepRoles + RoutesCurator + TreatmentMatchingAdmin + ResearchOncologist + AdministratorRole, update = RepRoles - DocumentExtractor ) @@ -116,7 +126,7 @@ object ACL extends PhiLogging { object Trial extends BaseACL( label = "trial", - read = TcRoles + RoutesCurator + TreatmentMatchingAdmin + ResearchOncologist + SystemUser, + read = TcRoles + RoutesCurator + TreatmentMatchingAdmin + ResearchOncologist + AdministratorRole, update = TcRoles ) @@ -187,7 +197,7 @@ object ACL extends PhiLogging { object Patient extends BaseACL( label = "patient", - read = TreatmentMatchingRoles + ResearchOncologist + SystemUser, + read = TreatmentMatchingRoles + ResearchOncologist + AdministratorRole, update = TreatmentMatchingRoles ) @@ -248,20 +258,20 @@ object ACL extends PhiLogging { update: AclCheck = Forbid, delete: AclCheck = Forbid) { - def isCreateAllow()(implicit requestContext: AuthenticatedRequestContext): Boolean = { - check("create", create)(requestContext.executor.roles) + def isCreateAllow()(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Boolean = { + check("create", create)(requestContext.authenticatedUser.roles) } - def isReadAllow()(implicit requestContext: AuthenticatedRequestContext): Boolean = { - check("read", read)(requestContext.executor.roles) + def isReadAllow()(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Boolean = { + check("read", read)(requestContext.authenticatedUser.roles) } - def isUpdateAllow()(implicit requestContext: AuthenticatedRequestContext): Boolean = { - check("update", update)(requestContext.executor.roles) + def isUpdateAllow()(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Boolean = { + check("update", update)(requestContext.authenticatedUser.roles) } - def isDeleteAllow()(implicit requestContext: AuthenticatedRequestContext): Boolean = { - check("delete", delete)(requestContext.executor.roles) + def isDeleteAllow()(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Boolean = { + check("delete", delete)(requestContext.authenticatedUser.roles) } private def check(action: String, isAllowed: AclCheck)(executorRoles: Set[Role]): Boolean = { diff --git a/src/main/scala/xyz/driver/pdsuicommon/auth/AnonymousRequestContext.scala b/src/main/scala/xyz/driver/pdsuicommon/auth/AnonymousRequestContext.scala deleted file mode 100644 index c677ef8..0000000 --- a/src/main/scala/xyz/driver/pdsuicommon/auth/AnonymousRequestContext.scala +++ /dev/null @@ -1,11 +0,0 @@ -package xyz.driver.pdsuicommon.auth - -class AnonymousRequestContext(val requestId: RequestId) { - - override def equals(that: Any): Boolean = { - that.getClass == classOf[AnonymousRequestContext] && - that.asInstanceOf[AnonymousRequestContext].requestId == requestId - } - - override def hashCode(): Int = requestId.hashCode() -} diff --git a/src/main/scala/xyz/driver/pdsuicommon/auth/AuthenticatedRequestContext.scala b/src/main/scala/xyz/driver/pdsuicommon/auth/AuthenticatedRequestContext.scala deleted file mode 100644 index 5c07a9a..0000000 --- a/src/main/scala/xyz/driver/pdsuicommon/auth/AuthenticatedRequestContext.scala +++ /dev/null @@ -1,36 +0,0 @@ -package xyz.driver.pdsuicommon.auth - -import xyz.driver.entities.users.AuthUserInfo -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuicommon.domain.User - -class AuthenticatedRequestContext(val driverUser: AuthUserInfo, - override val requestId: RequestId, - val authToken: String) - extends AnonymousRequestContext(requestId) { - - val executor: User = new User(driverUser) - - override def equals(that: Any): Boolean = { - that.getClass == this.getClass && { - val another = that.asInstanceOf[AuthenticatedRequestContext] - another.executor == executor && another.requestId == requestId - } - } - - override def hashCode(): Int = { - val initial = 37 - val first = initial * 17 + executor.hashCode() - first * 17 + requestId.hashCode() - } -} - -object AuthenticatedRequestContext { - - def apply(driverUser: AuthUserInfo, authToken: String = "") = - new AuthenticatedRequestContext(driverUser, RequestId(), authToken) - - implicit def toPhiString(x: AuthenticatedRequestContext): PhiString = { - phi"AuthenticatedRequestContext(executor=${x.executor}, requestId=${x.requestId})" - } -} diff --git a/src/main/scala/xyz/driver/pdsuicommon/auth/RequestId.scala b/src/main/scala/xyz/driver/pdsuicommon/auth/RequestId.scala deleted file mode 100644 index 9982bb0..0000000 --- a/src/main/scala/xyz/driver/pdsuicommon/auth/RequestId.scala +++ /dev/null @@ -1,14 +0,0 @@ -package xyz.driver.pdsuicommon.auth - -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuicommon.auth.RequestId._ -import xyz.driver.pdsuicommon.utils.RandomUtils - -final case class RequestId(value: String = RandomUtils.randomString(IdLength)) - -object RequestId { - - private val IdLength = 20 - - implicit def toPhiString(x: RequestId): PhiString = phi"RequestId(${Unsafe(x.value)})" -} diff --git a/src/main/scala/xyz/driver/pdsuicommon/domain/Email.scala b/src/main/scala/xyz/driver/pdsuicommon/domain/Email.scala deleted file mode 100644 index 092ad40..0000000 --- a/src/main/scala/xyz/driver/pdsuicommon/domain/Email.scala +++ /dev/null @@ -1,3 +0,0 @@ -package xyz.driver.pdsuicommon.domain - -final case class Email(value: String) diff --git a/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala b/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala deleted file mode 100644 index f75f391..0000000 --- a/src/main/scala/xyz/driver/pdsuicommon/domain/User.scala +++ /dev/null @@ -1,163 +0,0 @@ -package xyz.driver.pdsuicommon.domain - -import java.math.BigInteger -import java.security.SecureRandom -import java.time.{Instant, LocalDateTime, ZoneId} - -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuicommon.domain.User.Role -import xyz.driver.pdsuicommon.utils.Utils - -final case class User(id: StringId[User], - email: Email, - name: String, - roles: Set[Role], - latestActivity: Option[LocalDateTime], - deleted: Option[LocalDateTime]) { - - def this(driverUser: xyz.driver.entities.users.AuthUserInfo) { - this( - id = StringId[xyz.driver.pdsuicommon.domain.User](driverUser.id.value), - email = Email(driverUser.email.toString), - name = driverUser.name.toString, - roles = driverUser.roles.flatMap(User.mapRoles), - latestActivity = - driverUser.lastLoginTime.map(t => Instant.ofEpochMilli(t.millis).atZone(ZoneId.of("Z")).toLocalDateTime), - deleted = Option.empty[LocalDateTime] - ) - } -} - -object User { - - sealed trait Role extends Product with Serializable { - - /** - * Bit representation of this role - */ - def bit: Int - - def is(that: Role): Boolean = this == that - - def oneOf(roles: Role*): Boolean = roles.contains(this) - - def oneOf(roles: Set[Role]): Boolean = roles.contains(this) - } - - object Role extends PhiLogging { - case object RecordAdmin extends Role { val bit = 1 << 0 } - case object RecordCleaner extends Role { val bit = 1 << 1 } - case object RecordOrganizer extends Role { val bit = 1 << 2 } - case object DocumentExtractor extends Role { val bit = 1 << 3 } - case object TrialSummarizer extends Role { val bit = 1 << 4 } - case object CriteriaCurator extends Role { val bit = 1 << 5 } - case object TrialAdmin extends Role { val bit = 1 << 6 } - case object EligibilityVerifier extends Role { val bit = 1 << 7 } - case object TreatmentMatchingAdmin extends Role { val bit = 1 << 8 } - case object RoutesCurator extends Role { val bit = 1 << 9 } - case object SystemUser extends Role { val bit = 1 << 10 } - case object ResearchOncologist extends Role { val bit = 1 << 11 } - - val RepRoles = Set[Role](RecordAdmin, RecordCleaner, RecordOrganizer, DocumentExtractor) - - val TcRoles = Set[Role](TrialSummarizer, CriteriaCurator, TrialAdmin) - - val TreatmentMatchingRoles = Set[Role](RoutesCurator, EligibilityVerifier, TreatmentMatchingAdmin) - - val PepRoles = Set[Role](ResearchOncologist) - - val All = RepRoles ++ TcRoles ++ TreatmentMatchingRoles ++ PepRoles + SystemUser - - def apply(bitMask: Int): Role = { - def extractRole(role: Role): Set[Role] = - if ((bitMask & role.bit) != 0) Set(role) else Set.empty[Role] - - val roles = All.flatMap(extractRole) - roles.size match { - case 1 => roles.head - case _ => - logger.error(phi"Can't convert a bit mask ${Unsafe(bitMask)} to any role") - throw new IllegalArgumentException() - } - } - - implicit def toPhiString(x: Role): PhiString = Unsafe(Utils.getClassSimpleName(x.getClass)) - } - - implicit def toPhiString(x: User): PhiString = { - import x._ - phi"User(id=$id, roles=${Unsafe(roles.map(_.toString).mkString(", "))})" - } - - // SecureRandom is thread-safe, see the implementation - private val random = new SecureRandom() - - def createPassword: String = new BigInteger(240, random).toString(32) - - def mapRoles(coreRole: xyz.driver.core.auth.Role): Set[xyz.driver.pdsuicommon.domain.User.Role] = { - coreRole match { - case xyz.driver.entities.auth.AdministratorRole => - Set( - xyz.driver.pdsuicommon.domain.User.Role.SystemUser, - xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin, - xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin, - xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin - ) - case xyz.driver.entities.auth.RecordAdmin => - Set(xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin) - case xyz.driver.entities.auth.RecordCleaner => - Set(xyz.driver.pdsuicommon.domain.User.Role.RecordCleaner) - case xyz.driver.entities.auth.RecordOrganizer => - Set(xyz.driver.pdsuicommon.domain.User.Role.RecordOrganizer) - case xyz.driver.entities.auth.DocumentExtractor => - Set(xyz.driver.pdsuicommon.domain.User.Role.DocumentExtractor) - case xyz.driver.entities.auth.TrialSummarizer => - Set(xyz.driver.pdsuicommon.domain.User.Role.TrialSummarizer) - case xyz.driver.entities.auth.CriteriaCurator => - Set(xyz.driver.pdsuicommon.domain.User.Role.CriteriaCurator) - case xyz.driver.entities.auth.TrialAdmin => - Set(xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin) - case xyz.driver.entities.auth.EligibilityVerifier => - Set(xyz.driver.pdsuicommon.domain.User.Role.EligibilityVerifier) - case xyz.driver.entities.auth.TreatmentMatchingAdmin => - Set(xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin) - case xyz.driver.entities.auth.RoutesCurator => - Set(xyz.driver.pdsuicommon.domain.User.Role.RoutesCurator) - case xyz.driver.entities.auth.ResearchOncologist => - Set(xyz.driver.pdsuicommon.domain.User.Role.ResearchOncologist) - case _ => - Set.empty[xyz.driver.pdsuicommon.domain.User.Role] - } - } - - def mapRolesToDriver(pdsuiRole: xyz.driver.pdsuicommon.domain.User.Role): Set[xyz.driver.core.auth.Role] = { - pdsuiRole match { - case xyz.driver.pdsuicommon.domain.User.Role.SystemUser => - Set(xyz.driver.entities.auth.AdministratorRole) - case xyz.driver.pdsuicommon.domain.User.Role.RecordAdmin => - Set(xyz.driver.entities.auth.RecordAdmin) - case xyz.driver.pdsuicommon.domain.User.Role.RecordCleaner => - Set(xyz.driver.entities.auth.RecordCleaner) - case xyz.driver.pdsuicommon.domain.User.Role.RecordOrganizer => - Set(xyz.driver.entities.auth.RecordOrganizer) - case xyz.driver.pdsuicommon.domain.User.Role.DocumentExtractor => - Set(xyz.driver.entities.auth.DocumentExtractor) - case xyz.driver.pdsuicommon.domain.User.Role.TrialSummarizer => - Set(xyz.driver.entities.auth.TrialSummarizer) - case xyz.driver.pdsuicommon.domain.User.Role.CriteriaCurator => - Set(xyz.driver.entities.auth.CriteriaCurator) - case xyz.driver.pdsuicommon.domain.User.Role.TrialAdmin => - Set(xyz.driver.entities.auth.TrialAdmin) - case xyz.driver.pdsuicommon.domain.User.Role.EligibilityVerifier => - Set(xyz.driver.entities.auth.EligibilityVerifier) - case xyz.driver.pdsuicommon.domain.User.Role.TreatmentMatchingAdmin => - Set(xyz.driver.entities.auth.TreatmentMatchingAdmin) - case xyz.driver.pdsuicommon.domain.User.Role.RoutesCurator => - Set(xyz.driver.entities.auth.RoutesCurator) - case xyz.driver.pdsuicommon.domain.User.Role.ResearchOncologist => - Set(xyz.driver.entities.auth.ResearchOncologist) - case _ => - Set.empty[xyz.driver.core.auth.Role] - } - } -} diff --git a/src/main/scala/xyz/driver/pdsuicommon/error/ErrorsResponse.scala b/src/main/scala/xyz/driver/pdsuicommon/error/ErrorsResponse.scala index ccb84c2..4d6aa0b 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/error/ErrorsResponse.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/error/ErrorsResponse.scala @@ -2,9 +2,8 @@ package xyz.driver.pdsuicommon.error import spray.json._ import ErrorsResponse.ResponseError -import xyz.driver.pdsuicommon.auth.RequestId -final case class ErrorsResponse(errors: Seq[ResponseError], requestId: RequestId) +final case class ErrorsResponse(errors: Seq[ResponseError], requestId: String) object ErrorsResponse { import DefaultJsonProtocol._ @@ -28,11 +27,11 @@ object ErrorsResponse { override def write(obj: ErrorsResponse): JsValue = { JsObject( "errors" -> obj.errors.map(_.toJson).toJson, - "requestId" -> obj.requestId.value.toJson + "requestId" -> obj.requestId.toJson ) } - override def read(json: JsValue) = json match { + override def read(json: JsValue): ErrorsResponse = json match { case JsObject(fields) => val errors = fields .get("errors") @@ -41,7 +40,7 @@ object ErrorsResponse { val requestId = fields .get("requestId") - .map(id => RequestId(id.convertTo[String])) + .map(id => id.convertTo[String]) .getOrElse(deserializationError(s"ErrorsResponse json object does not contain `requestId` field: $json")) ErrorsResponse(errors, requestId) diff --git a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala index 4f5cd8a..93eb62f 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala @@ -4,9 +4,6 @@ import akka.http.scaladsl.server._ import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.model._ import xyz.driver.core.app.DriverApp -import xyz.driver.core.rest.ContextHeaders -import xyz.driver.entities.users.AuthUserInfo -import xyz.driver.pdsuicommon.auth._ import xyz.driver.pdsuicommon.error._ import xyz.driver.pdsuicommon.error.DomainError._ import xyz.driver.pdsuicommon.error.ErrorsResponse.ResponseError @@ -14,7 +11,9 @@ import xyz.driver.pdsuicommon.parsers._ import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting} import xyz.driver.pdsuicommon.domain._ import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ -import xyz.driver.core.rest.auth.AuthProvider +import xyz.driver.core.generators +import xyz.driver.core.rest.ContextHeaders + import scala.util.control._ import scala.util._ @@ -69,7 +68,7 @@ trait Directives { case other => other } - def domainExceptionHandler(req: RequestId): ExceptionHandler = { + def domainExceptionHandler(req: String): ExceptionHandler = { def errorResponse(ex: Throwable) = ErrorsResponse(Seq(ResponseError(None, ex.getMessage, 1)), req) ExceptionHandler { @@ -81,7 +80,7 @@ trait Directives { } } - def domainRejectionHandler(req: RequestId): RejectionHandler = { + def domainRejectionHandler(req: String): RejectionHandler = { def wrapContent(message: String) = { import ErrorsResponse._ val err: ErrorsResponse = ErrorsResponse(Seq(ResponseError(None, message, 1)), req) @@ -95,27 +94,15 @@ trait Directives { } } - val tracked: Directive1[RequestId] = optionalHeaderValueByName(ContextHeaders.TrackingIdHeader) flatMap { - case Some(id) => provide(RequestId(id)) - case None => provide(RequestId()) + val tracked: Directive1[String] = optionalHeaderValueByName(ContextHeaders.TrackingIdHeader) flatMap { + case Some(id) => provide(id) + case None => provide(generators.nextUuid().toString) } val domainResponse: Directive0 = tracked.flatMap { id => handleExceptions(domainExceptionHandler(id)) & handleRejections(domainRejectionHandler(id)) } - implicit class AuthProviderWrapper(provider: AuthProvider[AuthUserInfo]) { - val authenticated: Directive1[AuthenticatedRequestContext] = (provider.authorize() & tracked) tflatMap { - case (core, requestId) => - provide( - new AuthenticatedRequestContext( - core.authenticatedUser, - requestId, - core.contextHeaders(ContextHeaders.AuthenticationTokenHeader) - )) - } - } - } object Directives extends Directives diff --git a/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala b/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala index 297b0e1..349d925 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuicommon.logging import java.time.{LocalDateTime, ZoneId} -import xyz.driver.pdsuicommon.domain.{StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.StringId object TimeLogger extends PhiLogging { diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/CaseId.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/CaseId.scala deleted file mode 100644 index 751545e..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/CaseId.scala +++ /dev/null @@ -1,10 +0,0 @@ -package xyz.driver.pdsuidomain.entities - -import java.util.UUID - -final case class CaseId(id: String) - -object CaseId { - - def apply() = new CaseId(UUID.randomUUID().toString) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala index fa5f4ce..4a0c5ca 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.core.{JsonGenerator, JsonParser} import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.databind.annotation.{JsonDeserialize, JsonSerialize} +import xyz.driver.core.auth.User import xyz.driver.pdsuicommon.compat.Implicits._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala index a82da12..cbbeaee 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala @@ -2,6 +2,7 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDateTime, ZoneId} +import xyz.driver.core.auth.User import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala index 0ec8b00..074c96e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuicommon.logging._ final case class DocumentIssue(id: LongId[DocumentIssue], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala index 591b8bd..4794c00 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala @@ -5,6 +5,9 @@ import java.time.LocalDateTime import com.fasterxml.jackson.annotation.JsonSubTypes.Type import com.fasterxml.jackson.annotation.{JsonProperty, JsonSubTypes, JsonTypeInfo} +import xyz.driver.core.auth.User +import xyz.driver.entities.assays.PatientCase +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils @@ -151,9 +154,9 @@ final case class MedicalRecord(id: LongId[MedicalRecord], previousAssignee: Option[StringId[User]], lastActiveUserId: Option[StringId[User]], patientId: UuidId[Patient], - requestId: RecordRequestId, + requestId: xyz.driver.core.Id[ClinicalRecord], disease: String, - caseId: Option[CaseId], + caseId: Option[xyz.driver.core.Id[PatientCase]], physician: Option[String], meta: Option[TextJson[List[Meta]]], lastUpdate: LocalDateTime, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala index d01433c..3e141e5 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala @@ -2,6 +2,7 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDateTime, ZoneId} +import xyz.driver.core.auth.User import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala index 0d5a498..c768958 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuicommon.logging._ final case class MedicalRecordIssue(id: LongId[MedicalRecordIssue], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala index 3bdbac8..5192410 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User, UuidId} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuicommon.logging._ final case class Message(id: LongId[Message], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala index 598b11e..7f29c0a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala @@ -2,6 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDate, LocalDateTime} +import xyz.driver.core.auth.User +import xyz.driver.entities.clinic.TestOrder import xyz.driver.entities.common.FullName import xyz.driver.entities.patient.CancerType import xyz.driver.pdsuicommon.domain._ @@ -26,21 +28,9 @@ object Patient { case object Flagged extends Status case object Done extends Status - val AllPrevious = Set[Status]( - New, - Verified, - Reviewed, - Curated - ) + val AllPrevious: Set[Status] = Set[Status](New, Verified, Reviewed, Curated) - val All = Set[Status]( - New, - Verified, - Reviewed, - Curated, - Flagged, - Done - ) + val All: Set[Status] = Set[Status](New, Verified, Reviewed, Curated, Flagged, Done) implicit def toPhiString(x: Status): PhiString = Unsafe(Utils.getClassSimpleName(x.getClass)) } @@ -62,7 +52,7 @@ final case class Patient(id: UuidId[Patient], lastActiveUserId: Option[StringId[User]], isUpdateRequired: Boolean, disease: CancerType, - orderId: PatientOrderId, + orderId: xyz.driver.core.Id[TestOrder], lastUpdate: LocalDateTime) { import Patient.Status._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala index 39817c4..c67fa6f 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDateTime, ZoneId} -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User, UuidId} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils import xyz.driver.pdsuidomain.entities.PatientHistory.{Action, State} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala index f616754..b83ec82 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala @@ -2,6 +2,7 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime +import xyz.driver.core.auth.User import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientOrderId.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientOrderId.scala deleted file mode 100644 index 50a97ce..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientOrderId.scala +++ /dev/null @@ -1,14 +0,0 @@ -package xyz.driver.pdsuidomain.entities - -import java.util.UUID - -final case class PatientOrderId(id: UUID) { - override def toString: String = id.toString -} - -object PatientOrderId { - - def apply() = new PatientOrderId(UUID.randomUUID()) - - def apply(x: String) = new PatientOrderId(UUID.fromString(x)) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientDocument.scala index b66483c..45cdc4e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientDocument.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientDocument.scala @@ -2,12 +2,14 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDate +import xyz.driver.core.Id +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuicommon.logging._ final case class RawPatientDocument(disease: String, patientId: UuidId[Patient], - requestId: RecordRequestId, + requestId: Id[ClinicalRecord], recordId: LongId[MedicalRecord], recordStatus: MedicalRecord.Status, documentId: LongId[Document], @@ -20,7 +22,7 @@ object RawPatientDocument { implicit def toPhiString(x: RawPatientDocument): PhiString = { import x._ - phi"RawPatientDocument(disease=${Unsafe(disease)}, patientId=$patientId, requestId=$requestId, " + + phi"RawPatientDocument(disease=${Unsafe(disease)}, patientId=$patientId, requestId=${Unsafe(requestId)}, " + phi"recordId=$recordId, recordStatus=$recordStatus, documentId=$documentId, " + phi"documentType=${Unsafe(documentType)}, providerType=${Unsafe(documentProviderType)}, " + phi"startDate=$documentStartDate, documentStatus=$documentStatus)" diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/RecordRequestId.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/RecordRequestId.scala deleted file mode 100644 index 5df87c2..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/RecordRequestId.scala +++ /dev/null @@ -1,15 +0,0 @@ -package xyz.driver.pdsuidomain.entities - -import java.util.UUID -import xyz.driver.pdsuicommon.logging._ - -final case class RecordRequestId(id: UUID) { - override def toString: String = id.toString -} - -object RecordRequestId { - - def apply() = new RecordRequestId(UUID.randomUUID()) - - implicit def toPhiString(x: RecordRequestId): PhiString = phi"${x.id}" -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala index e734779..684f349 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User, UuidId} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils import xyz.driver.pdsuidomain.entities.Trial.Status diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala index c73aefe..7366567 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala @@ -6,6 +6,7 @@ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils import TrialHistory._ +import xyz.driver.core.auth.User object TrialHistory { diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala index 2514f4d..14610d5 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuicommon.logging._ final case class TrialIssue(id: LongId[TrialIssue], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala index 9be26b9..3528b4c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala @@ -2,6 +2,7 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDateTime, ZoneId} +import xyz.driver.core.auth.User import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidenceDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidenceDocument.scala index 467170b..1b3a6d6 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidenceDocument.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidenceDocument.scala @@ -2,12 +2,13 @@ package xyz.driver.pdsuidomain.entities.export.patient import java.time.LocalDate -import xyz.driver.pdsuicommon.domain._ +import xyz.driver.entities.clinic.ClinicalRecord +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuidomain.entities._ final case class ExportPatientLabelEvidenceDocument(documentId: LongId[Document], - requestId: RecordRequestId, + requestId: xyz.driver.core.Id[ClinicalRecord], documentType: DocumentType, providerType: ProviderType, date: LocalDate) @@ -16,7 +17,7 @@ object ExportPatientLabelEvidenceDocument extends PhiLogging { implicit def toPhiString(x: ExportPatientLabelEvidenceDocument): PhiString = { import x._ - phi"ExportPatientLabelEvidenceDocument(documentId=$documentId, requestId=$requestId, " + + phi"ExportPatientLabelEvidenceDocument(documentId=$documentId, requestId=${Unsafe(requestId)}, " + phi"documentType=${Unsafe(documentType)}, providerType=${Unsafe(providerType)}, date=$date)" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/export.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/export.scala index 33da392..12eff61 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/export.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/export.scala @@ -1,13 +1,10 @@ package xyz.driver.pdsuidomain.fakes.entities +import xyz.driver.core.generators +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.entities.labels.Label import xyz.driver.fakes -import xyz.driver.pdsuidomain.entities.export.patient.{ - ExportPatientLabel, - ExportPatientLabelEvidence, - ExportPatientLabelEvidenceDocument, - ExportPatientWithLabels -} +import xyz.driver.pdsuidomain.entities.export.patient._ import xyz.driver.pdsuidomain.entities.export.trial._ import xyz.driver.pdsuidomain.entities._ @@ -45,7 +42,7 @@ object export { def nextExportPatientLabelEvidenceDocument(): ExportPatientLabelEvidenceDocument = { ExportPatientLabelEvidenceDocument( documentId = nextLongId[Document], - requestId = recordprocessing.nextRecordRequestId(), + requestId = generators.nextId[ClinicalRecord](), documentType = nextDocumentType(), providerType = nextProviderType(), date = nextLocalDate diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala index 3a018fa..199be29 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala @@ -2,10 +2,13 @@ package xyz.driver.pdsuidomain.fakes.entities import java.time.LocalDate +import xyz.driver.core.auth.User import xyz.driver.core.generators import xyz.driver.core.generators._ +import xyz.driver.entities.assays.PatientCase +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.entities.labels.{Label, LabelCategory, LabelValue} -import xyz.driver.pdsuicommon.domain.{LongId, TextJson, User} +import xyz.driver.pdsuicommon.domain.{LongId, TextJson} import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.ExtractedData.Meta import xyz.driver.pdsuidomain.entities._ @@ -101,19 +104,17 @@ object recordprocessing { def nextMedicalRecordMeta(): MedicalRecord.Meta = generators.oneOf(medicalRecordMeta)() - def nextRecordRequestId(): RecordRequestId = RecordRequestId(generators.nextUuid()) - def nextMedicalRecord(): MedicalRecord = MedicalRecord( id = nextLongId[MedicalRecord], status = nextMedicalRecordStatus(), previousStatus = nextOption(generators.oneOf[MedicalRecord.Status](MedicalRecord.Status.AllPrevious)), - assignee = nextOption(nextStringId), - previousAssignee = nextOption(nextStringId), - lastActiveUserId = nextOption(nextStringId), - patientId = nextUuidId, - requestId = nextRecordRequestId(), + assignee = nextOption(nextStringId[User]), + previousAssignee = nextOption(nextStringId[User]), + lastActiveUserId = nextOption(nextStringId[User]), + patientId = nextUuidId[Patient], + requestId = generators.nextId[ClinicalRecord](), disease = generators.nextString(), - caseId = nextOption(CaseId(generators.nextString())), + caseId = nextOption(generators.nextId[PatientCase]()), physician = nextOption(generators.nextString()), meta = nextOption(nextMedicalRecordMetaJson()), lastUpdate = nextLocalDateTime, diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala index f350f0f..b35418d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala @@ -3,13 +3,14 @@ package xyz.driver.pdsuidomain.fakes.entities import eu.timepit.refined.numeric.NonNegative import xyz.driver.entities.labels.Label import xyz.driver.fakes -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.services.PatientCriterionService.{DraftPatientCriterion, RichPatientCriterion} import xyz.driver.pdsuidomain.services.PatientEligibleTrialService.RichPatientEligibleTrial import xyz.driver.pdsuidomain.services.PatientLabelService.RichPatientLabel -import eu.timepit.refined.{refineV, refineMV} +import eu.timepit.refined.{refineMV, refineV} +import xyz.driver.core.auth.User object treatmentmatching { import common._ @@ -35,8 +36,6 @@ object treatmentmatching { } } - def nextPatientOrderId: PatientOrderId = PatientOrderId(generators.nextUuid()) - def nextPatientAction: PatientHistory.Action = generators.oneOf[PatientHistory.Action](PatientHistory.Action.All) @@ -54,7 +53,7 @@ object treatmentmatching { lastActiveUserId = generators.nextOption(nextStringId[User]), isUpdateRequired = generators.nextBoolean(), disease = nextCancerType, - orderId = nextPatientOrderId, + orderId = generators.nextId(), lastUpdate = nextLocalDateTime ) diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala index eeec577..2bbff90 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala @@ -1,8 +1,9 @@ package xyz.driver.pdsuidomain.fakes.entities +import xyz.driver.core.auth.User import xyz.driver.core.generators._ import xyz.driver.entities.labels.{Label, LabelCategory} -import xyz.driver.pdsuicommon.domain.{LongId, User} +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala index 082fa83..b3bc95f 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala @@ -3,7 +3,8 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime import spray.json._ -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuidomain.entities._ object documentissue { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/export.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/export.scala index d70ce6f..8fb7d03 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/export.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/export.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.formats.json import spray.json._ +import xyz.driver.core.json.idFormat import xyz.driver.entities.labels.Label import xyz.driver.formats.json.labels._ import xyz.driver.pdsuicommon.domain.LongId diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala index 0830723..43062b6 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala @@ -3,12 +3,14 @@ package xyz.driver.pdsuidomain.formats.json import java.time.{LocalDate, LocalDateTime} import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.auth.User +import xyz.driver.core.json._ +import xyz.driver.entities.clinic.TestOrder import xyz.driver.entities.common.FullName import xyz.driver.entities.patient.CancerType import xyz.driver.formats.json.common._ import xyz.driver.formats.json.patient._ -import xyz.driver.pdsuicommon.domain.{StringId, User, UuidId} +import xyz.driver.pdsuicommon.domain.{StringId, UuidId} import xyz.driver.pdsuidomain.entities._ object patient { @@ -25,14 +27,6 @@ object patient { "Flagged" -> Status.Flagged ) - implicit val patientOrderIdFormat: RootJsonFormat[PatientOrderId] = new RootJsonFormat[PatientOrderId] { - override def write(orderId: PatientOrderId): JsString = JsString(orderId.toString) - override def read(json: JsValue): PatientOrderId = json match { - case JsString(value) => PatientOrderId(value) - case _ => deserializationError(s"Expected string as PatientOrderId, but got $json") - } - } - implicit val patientFormat: RootJsonFormat[Patient] = new RootJsonFormat[Patient] { override def write(patient: Patient): JsValue = JsObject( @@ -95,7 +89,7 @@ object patient { val orderId = fields .get("orderId") - .map(_.convertTo[PatientOrderId]) + .map(_.convertTo[xyz.driver.core.Id[TestOrder]]) .getOrElse(deserializationError(s"Patient create json object does not contain `orderId` field: $json")) val lastUpdate = fields diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala index 9345581..e880917 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala @@ -3,7 +3,8 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime import spray.json._ -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User, UuidId} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuidomain.entities._ object patientissue { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala index b6ed103..083796b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record.scala @@ -1,10 +1,11 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import java.util.UUID import spray.json._ -import xyz.driver.core.json.{EnumJsonFormat, GadtJsonFormat} +import xyz.driver.core.Id +import xyz.driver.core.json._ +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.pdsuicommon.domain.{LongId, TextJson, UuidId} import xyz.driver.pdsuidomain.entities.MedicalRecord.Meta._ import xyz.driver.pdsuidomain.entities._ @@ -14,7 +15,7 @@ object record { import MedicalRecord._ import common._ - implicit val recordStatusFormat = new EnumJsonFormat[Status]( + implicit val recordStatusFormat: EnumJsonFormat[Status] = new EnumJsonFormat[Status]( "PreCleaning" -> Status.PreCleaning, "Unprocessed" -> Status.Unprocessed, "PreOrganized" -> Status.PreOrganized, @@ -29,14 +30,6 @@ object record { "Archived" -> Status.Archived ) - implicit val requestIdFormat = new RootJsonFormat[RecordRequestId] { - override def write(requestId: RecordRequestId): JsString = JsString(requestId.toString) - override def read(json: JsValue): RecordRequestId = json match { - case JsString(value) => RecordRequestId(UUID.fromString(value)) - case _ => deserializationError(s"Expected string as RecordRequestId, but got $json") - } - } - implicit val providerTypeFormat: RootJsonFormat[ProviderType] = new RootJsonFormat[ProviderType] { override def read(json: JsValue): ProviderType = json match { case JsObject(fields) => @@ -56,14 +49,6 @@ object record { JsObject("id" -> obj.id.toJson, "name" -> obj.name.toJson) } - implicit val caseIdFormat = new RootJsonFormat[CaseId] { - override def write(caseId: CaseId): JsString = JsString(caseId.toString) - override def read(json: JsValue): CaseId = json match { - case JsString(value) => CaseId(value) - case _ => deserializationError(s"Expected string as CaseId, but got $json") - } - } - implicit val duplicateMetaFormat: RootJsonFormat[Duplicate] = new RootJsonFormat[Duplicate] { override def write(obj: Duplicate) = JsObject( @@ -149,7 +134,7 @@ object record { } } - implicit val recordMetaFormat = new RootJsonFormat[TextJson[List[Meta]]] { + implicit val recordMetaFormat: RootJsonFormat[TextJson[List[Meta]]] = new RootJsonFormat[TextJson[List[Meta]]] { override def write(obj: TextJson[List[Meta]]): JsArray = JsArray(obj.content.map(_.toJson).toVector) override def read(json: JsValue): TextJson[List[Meta]] = json match { case JsArray(values) => TextJson[List[Meta]](values.map(_.convertTo[Meta]).toList) @@ -191,7 +176,7 @@ object record { val requestId = fields .get("requestId") - .map(_.convertTo[RecordRequestId]) + .map(_.convertTo[Id[ClinicalRecord]]) .getOrElse(deserializationError(s"MedicalRecord json object does not contain `requestId` field: $json")) MedicalRecord( diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala index 29b12f6..4745862 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala @@ -3,7 +3,8 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime import spray.json._ -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuidomain.entities._ object recordissue { @@ -63,6 +64,6 @@ object recordissue { case _ => deserializationError(s"Expected Json Object as MedicalRecordIssue, but got $json") } - implicit val recordIssueFormat = jsonFormat9(MedicalRecordIssue.apply) + implicit val recordIssueFormat: RootJsonFormat[MedicalRecordIssue] = jsonFormat9(MedicalRecordIssue.apply) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala index dc9c5e0..f22401b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala @@ -3,8 +3,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.{LocalDateTime, ZoneId, ZonedDateTime} import spray.json._ +import xyz.driver.core.auth.User import xyz.driver.core.json.EnumJsonFormat -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User, UuidId} +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuidomain.entities._ object trial { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala index b2a3023..c22fff3 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala @@ -3,7 +3,8 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime import spray.json._ -import xyz.driver.pdsuicommon.domain.{LongId, StringId, User} +import xyz.driver.core.auth.User +import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuidomain.entities._ object trialissue { diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala index 1f907c8..d4ff62b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/ArmService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -31,7 +32,8 @@ object ArmService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError } @@ -112,13 +114,17 @@ trait ArmService { def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def getById(armId: LongId[Arm])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(armId: LongId[Arm])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] - def create(draftArm: Arm)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draftArm: Arm)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] - def update(origArm: Arm, draftArm: Arm)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def update(origArm: Arm, draftArm: Arm)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[Arm])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 7dbf0d9..9c6341c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/CriterionService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -54,7 +55,8 @@ object CriterionService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError implicit def toPhiString(reply: GetByIdReply): PhiString = reply match { @@ -106,17 +108,19 @@ trait CriterionService { import CriterionService._ def create(draftRichCriterion: RichCriterion)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] - def getById(id: LongId[Criterion])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def update(origRichCriterion: RichCriterion, draftRichCriterion: RichCriterion)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[Criterion])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 2d9679d..d209b39 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentHistoryService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -39,6 +40,6 @@ trait DocumentHistoryService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index 4315352..f7fc7b2 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentIssueService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -73,21 +74,22 @@ trait DocumentIssueService { import DocumentIssueService._ - def create(draft: DocumentIssue)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draft: DocumentIssue)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def getById(documentId: LongId[Document], id: LongId[DocumentIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListByDocumentIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByDocumentIdReply] def update(orig: DocumentIssue, draft: DocumentIssue)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def delete(documentId: LongId[Document], id: LongId[DocumentIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 9338a59..a16ac9c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -32,7 +33,8 @@ object DocumentService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError implicit def toPhiString(reply: GetByIdReply): PhiString = reply match { @@ -106,31 +108,40 @@ trait DocumentService { import DocumentService._ - def getById(id: LongId[Document])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def create(draftDocument: Document)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draftDocument: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def update(orig: Document, draft: Document)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[Document])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + def delete(id: LongId[Document])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] - def start(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def start(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def submit(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def submit(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def restart(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def restart(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def flag(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def flag(orig: Document)(implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def resolve(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def resolve(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def unassign(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def unassign(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def archive(orig: Document)(implicit requestContext: AuthenticatedRequestContext): 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 index 0f1bf76..ccaed22 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/DocumentTypeService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -21,5 +22,5 @@ object DocumentTypeService { trait DocumentTypeService { def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index 1e0f65e..300091e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/EligibilityArmService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -35,7 +36,8 @@ object EligibilityArmService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError } @@ -118,22 +120,23 @@ trait EligibilityArmService { def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def getByEligibilityId(armId: LongId[EligibilityArm])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getBySlotId(armId: LongId[SlotArm], filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def create(slotArmId: LongId[SlotArm], draftEligibilityArm: EligibilityArmWithDiseases)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def update(origEligibilityArm: EligibilityArmWithDiseases, draftEligibilityArm: EligibilityArmWithDiseases)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[EligibilityArm])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + def delete(id: LongId[EligibilityArm])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala index 9bcd921..fbfb1d2 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/ExtractedDataService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -103,21 +104,23 @@ trait ExtractedDataService { import ExtractedDataService._ - def getById(id: LongId[ExtractedData])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(id: LongId[ExtractedData])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getPatientLabels(id: UuidId[Patient])( - implicit requestContext: AuthenticatedRequestContext): Future[GetPatientLabelsReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetPatientLabelsReply] def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def create(draftRichExtractedData: RichExtractedData)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def update(origRichExtractedData: RichExtractedData, draftRichExtractedData: RichExtractedData)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[ExtractedData])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 572edb6..929dd58 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/HypothesisService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -58,9 +59,11 @@ trait HypothesisService { import HypothesisService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def create(draftHypothesis: Hypothesis)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draftHypothesis: Hypothesis)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] - def delete(id: UuidId[Hypothesis])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 1e7c7f1..85e557a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/InterventionService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -38,7 +39,8 @@ object InterventionService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError implicit def toPhiString(reply: GetByIdReply): PhiString = reply match { @@ -101,15 +103,17 @@ trait InterventionService { def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def getById(id: LongId[Intervention])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(id: LongId[Intervention])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def update(origIntervention: InterventionWithArms, draftIntervention: InterventionWithArms)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def create(draftIntervention: InterventionWithArms)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] - def delete(id: LongId[Intervention])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 298a92d..58f336d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/InterventionTypeService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -23,5 +24,5 @@ trait InterventionTypeService { import InterventionTypeService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index f8fe3be..42285b1 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordHistoryService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -39,6 +40,6 @@ trait MedicalRecordHistoryService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index 723bdfa..dc10a93 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordIssueService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -73,21 +74,22 @@ trait MedicalRecordIssueService { import MedicalRecordIssueService._ - def create(draft: MedicalRecordIssue)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draft: MedicalRecordIssue)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def getById(recordId: LongId[MedicalRecord], id: LongId[MedicalRecordIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListByRecordIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByRecordIdReply] def update(orig: MedicalRecordIssue, draft: MedicalRecordIssue)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def delete(recordId: LongId[MedicalRecord], id: LongId[MedicalRecordIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index ebcb0f9..0d2c58b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala @@ -4,7 +4,9 @@ import akka.NotUsed import akka.stream.scaladsl.Source import akka.util.ByteString import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.{AnonymousRequestContext, AuthenticatedRequestContext} + +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._ @@ -85,32 +87,40 @@ trait MedicalRecordService { import MedicalRecordService._ def getById(recordId: LongId[MedicalRecord])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getPdfSource(recordId: LongId[MedicalRecord])( - implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]] def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def create(draft: MedicalRecord)(implicit requestContext: AnonymousRequestContext): Future[CreateReply] + def create(draft: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def update(origRecord: MedicalRecord, draftRecord: MedicalRecord)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def start(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def start(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def submit(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def submit(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def restart(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def restart(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def flag(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def flag(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def resolve(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def resolve(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def unassign(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def unassign(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def archive(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): 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 index bec0c65..21ec73a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientCriterionService.scala @@ -2,8 +2,9 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime +import xyz.driver.core.rest.AuthorizedServiceRequestContext import xyz.driver.entities.labels.{Label, LabelValue} -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.error.DomainError @@ -118,14 +119,14 @@ trait PatientCriterionService { origFilter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala index d9013c6..f07f6fa 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientEligibleTrialService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -118,15 +119,15 @@ trait PatientEligibleTrialService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def getById(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getCriterionListByGroupId(patientId: UuidId[Patient], id: LongId[PatientTrialArmGroup])( - implicit requestContext: AuthenticatedRequestContext): Future[GetCriterionListOfGroupReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetCriterionListOfGroupReply] def update(origEligibleTrialWithTrial: RichPatientEligibleTrial, draftPatientTrialArmGroup: PatientTrialArmGroupView)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala index 855eddc..9ad6a56 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHistoryService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.core.rest.AuthorizedServiceRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting} import xyz.driver.pdsuicommon.domain.UuidId import xyz.driver.pdsuicommon.error.DomainError @@ -39,6 +40,6 @@ trait PatientHistoryService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala index 1e655d5..2dcfcb5 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientHypothesisService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.core.rest.AuthorizedServiceRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db.{Pagination, SearchFilterExpr, Sorting} import xyz.driver.pdsuicommon.domain.UuidId import xyz.driver.pdsuicommon.error.DomainError @@ -89,11 +90,11 @@ trait PatientHypothesisService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def getById(patientId: UuidId[Patient], hypothesisId: UuidId[Hypothesis])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def update(origPatientHypothesis: PatientHypothesis, draftPatientHypothesis: PatientHypothesis)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala index b53301d..cf47c94 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientIssueService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -73,21 +74,22 @@ trait PatientIssueService { import PatientIssueService._ - def create(draft: PatientIssue)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draft: PatientIssue)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def getById(patientId: UuidId[Patient], id: LongId[PatientIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getListByPatientId(patientId: UuidId[Patient], filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListByPatientIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByPatientIdReply] def update(orig: PatientIssue, draft: PatientIssue)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def delete(patientId: UuidId[Patient], id: LongId[PatientIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[DeleteReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala index 6871f3e..1ddf401 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelEvidenceService.scala @@ -1,7 +1,8 @@ package xyz.driver.pdsuidomain.services +import xyz.driver.core.rest.AuthorizedServiceRequestContext import xyz.driver.entities.labels.Label -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuicommon.error.DomainError @@ -54,12 +55,12 @@ trait PatientLabelEvidenceService { import PatientLabelEvidenceService._ def getById(patientId: UuidId[Patient], labelId: LongId[Label], id: LongId[PatientLabelEvidence])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getAll(patientId: UuidId[Patient], labelId: LongId[Label], filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala index cede890..048374a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientLabelService.scala @@ -1,7 +1,8 @@ package xyz.driver.pdsuidomain.services +import xyz.driver.core.rest.AuthorizedServiceRequestContext import xyz.driver.entities.labels.Label -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.error.DomainError @@ -111,16 +112,16 @@ trait PatientLabelService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def getDefiningCriteriaList(patientId: UuidId[Patient], hypothesisId: UuidId[Hypothesis], pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetDefiningCriteriaListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetDefiningCriteriaListReply] def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByLabelIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByLabelIdReply] def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala index ce70934..e23fc7a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/PatientService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.core.rest.AuthorizedServiceRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.error.DomainError @@ -41,7 +42,8 @@ object PatientService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError implicit def toPhiString(reply: GetByIdReply): PhiString = reply match { @@ -74,22 +76,29 @@ trait PatientService { import PatientService._ - def getById(id: UuidId[Patient])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(id: UuidId[Patient])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def unassign(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def unassign(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def start(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def start(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def submit(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def submit(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def restart(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def restart(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def flag(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def flag(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def resolve(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def resolve(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala index cad17a4..ab936d6 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/ProviderTypeService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -22,5 +23,5 @@ trait ProviderTypeService { import ProviderTypeService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index 340733d..6cb2051 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/QueueUploadService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -62,15 +63,18 @@ trait QueueUploadService { import QueueUploadService._ - def create(kind: String, tag: String)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(kind: String, tag: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] - def getById(kind: String, tag: String)(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def reset(kind: String, tag: String)(implicit requestContext: AuthenticatedRequestContext): Future[ResetReply] + 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 index af7084b..44e50da 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/SlotArmService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -31,7 +32,8 @@ object SlotArmService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError } @@ -112,14 +114,17 @@ trait SlotArmService { def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] - def getById(armId: LongId[SlotArm])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(armId: LongId[SlotArm])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] - def create(draftSlotArm: SlotArm)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draftSlotArm: SlotArm)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def update(origSlotArm: SlotArm, draftSlotArm: SlotArm)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def delete(id: LongId[SlotArm])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index e98c1ec..8af159d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/StudyDesignService.scala @@ -1,6 +1,7 @@ package xyz.driver.pdsuidomain.services -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -23,5 +24,5 @@ trait StudyDesignService { import StudyDesignService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index bcf1c53..96ff96d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/TrialHistoryService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -39,6 +40,6 @@ trait TrialHistoryService { filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + 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 index 726feda..433c1bc 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/TrialIssueService.scala @@ -2,7 +2,8 @@ package xyz.driver.pdsuidomain.services import java.time.LocalDateTime -import xyz.driver.pdsuicommon.auth.AuthenticatedRequestContext +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 @@ -73,21 +74,22 @@ trait TrialIssueService { import TrialIssueService._ - def create(draft: TrialIssue)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] + def create(draft: TrialIssue)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] def getById(trialId: StringId[Trial], id: LongId[TrialIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + 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: AuthenticatedRequestContext): Future[GetListByTrialIdReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListByTrialIdReply] def update(orig: TrialIssue, draft: TrialIssue)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] def delete(trialId: StringId[Trial], id: LongId[TrialIssue])( - implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] + 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 index 92233e4..2ff77f2 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala @@ -5,8 +5,9 @@ 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.pdsuicommon.auth.AuthenticatedRequestContext +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain.StringId import xyz.driver.pdsuicommon.error.DomainError @@ -46,7 +47,8 @@ object TrialService { case object AuthorizationError extends GetByIdReply with DomainError.AuthorizationError with DefaultAccessDeniedError - final case class CommonError(userMessage: String)(implicit requestContext: AuthenticatedRequestContext) + final case class CommonError(userMessage: String)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]) extends GetByIdReply with DomainError implicit def toPhiString(reply: GetByIdReply): PhiString = reply match { @@ -107,37 +109,45 @@ trait TrialService { import TrialService._ - def getById(id: StringId[Trial])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] + def getById(id: StringId[Trial])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialWithLabelsReply] def getTrialsWithLabels(cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply] def getPdfSource(trialId: StringId[Trial])( - implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]] def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] def update(origTrial: Trial, draftTrial: Trial)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def start(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def start(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def submit(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def submit(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def restart(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def restart(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def flag(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def flag(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def resolve(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def resolve(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def archive(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def archive(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] - def unassign(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] + def unassign(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala index e23449c..7eae626 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala @@ -6,9 +6,10 @@ 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.pdsuicommon.auth.AuthenticatedRequestContext +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} @@ -42,27 +43,29 @@ class FakeTrialService extends TrialService { originalTitle = "" ) - def getById(id: StringId[Trial])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = + def getById(id: StringId[Trial])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = Future.successful( GetByIdReply.Entity(trial) ) def getPdfSource(trialId: StringId[Trial])( - implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] = + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] + ): Future[Source[ByteString, NotUsed]] = Future.failed(new NotImplementedError("fake pdf download is not implemented")) def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = Future.successful(GetListReply.EntityList(Seq(trial), 1, None)) override def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply] = + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialWithLabelsReply] = Future.successful(GetTrialWithLabelsReply.Entity(nextExportTrialWithLabels())) override def getTrialsWithLabels(cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply] = + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply] = Future.successful(GetTrialsWithLabelsReply.EntityList(generators.seqOf(nextExportTrialWithLabels()))) private def nextExportTrialWithLabels() = @@ -91,28 +94,35 @@ class FakeTrialService extends TrialService { ) def update(origTrial: Trial, draftTrial: Trial)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = Future.successful(UpdateReply.Updated(draftTrial)) - def start(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def start(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def submit(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def submit(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def restart(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def restart(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def flag(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def flag(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def resolve(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def resolve(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def archive(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def archive(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) - def unassign(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def unassign(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala index e5eb18f..87e2bab 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestArmService.scala @@ -5,7 +5,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -24,7 +24,7 @@ class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protect def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest( HttpMethods.GET, endpointUri(baseUri, "/v1/arm", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination))) @@ -36,7 +36,8 @@ class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protect } } - def getById(armId: LongId[Arm])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -46,7 +47,8 @@ class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protect } } - def create(draftArm: Arm)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + 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) @@ -57,7 +59,8 @@ class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protect } } - def update(origArm: Arm, draftArm: Arm)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + 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 { @@ -68,7 +71,8 @@ class RestArmService(transport: ServiceTransport, baseUri: Uri)(implicit protect } } - def delete(id: LongId[Arm])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala index 6e2da61..33be27e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestCriterionService.scala @@ -5,7 +5,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -23,7 +23,7 @@ class RestCriterionService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.CriterionService._ def create(draftRichCriterion: RichCriterion)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = { for { entity <- Marshal(draftRichCriterion).to[RequestEntity] request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/criterion")).withEntity(entity) @@ -34,7 +34,8 @@ class RestCriterionService(transport: ServiceTransport, baseUri: Uri)( } } - def getById(id: LongId[Criterion])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -47,7 +48,7 @@ class RestCriterionService(transport: ServiceTransport, baseUri: Uri)( def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/criterion", @@ -61,7 +62,7 @@ class RestCriterionService(transport: ServiceTransport, baseUri: Uri)( } def update(origRichCriterion: RichCriterion, draftRichCriterion: RichCriterion)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origRichCriterion.criterion.id for { entity <- Marshal(draftRichCriterion).to[RequestEntity] @@ -73,7 +74,8 @@ class RestCriterionService(transport: ServiceTransport, baseUri: Uri)( } } - def delete(id: LongId[Criterion])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala index dcd7721..bfe5e8f 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentService.scala @@ -5,7 +5,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -21,7 +21,8 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr import xyz.driver.pdsuidomain.formats.json.document._ import xyz.driver.pdsuidomain.services.DocumentService._ - def getById(id: LongId[Document])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -34,7 +35,7 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, @@ -48,7 +49,8 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr } } - def create(draftDocument: Document)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + 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) @@ -60,7 +62,7 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr } def update(orig: Document, draft: Document)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + 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) @@ -71,7 +73,8 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr } } - def delete(id: LongId[Document])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) @@ -82,7 +85,7 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr } private def editAction(orig: Document, action: String)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = orig.id.toString val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/document/$id/$action")) for { @@ -93,19 +96,26 @@ class RestDocumentService(transport: ServiceTransport, baseUri: Uri)(implicit pr } } - def start(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def start(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "start") - def submit(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def submit(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "submit") - def restart(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def restart(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "restart") - def flag(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def flag(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "flag") - def resolve(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def resolve(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "resolve") - def unassign(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def unassign(orig: Document)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "unassign") - def archive(orig: Document)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + 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 index 6ddc022..6157cc3 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestDocumentTypeService.scala @@ -4,7 +4,7 @@ import scala.concurrent.{ExecutionContext, Future} import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest.{Pagination => _, _} -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.DocumentType @@ -21,7 +21,7 @@ class RestDocumentTypeService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.DocumentTypeService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/document-type", sortingQuery(sorting))) for { response <- transport.sendRequestGetResponse(requestContext)(request) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala index 8c07968..24c5436 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestExtractedDataService.scala @@ -5,13 +5,13 @@ 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.auth._ 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._ @@ -24,7 +24,8 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.formats.json.extracteddata._ import xyz.driver.pdsuidomain.services.ExtractedDataService._ - def getById(id: LongId[ExtractedData])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -37,7 +38,7 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/extracted-data", @@ -51,7 +52,7 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( } def create(draftRichExtractedData: RichExtractedData)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = { for { entity <- Marshal(draftRichExtractedData).to[RequestEntity] request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/extracted-data")).withEntity(entity) @@ -62,7 +63,7 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( } } def update(origRichExtractedData: RichExtractedData, draftRichExtractedData: RichExtractedData)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origRichExtractedData.extractedData.id for { entity <- Marshal(draftRichExtractedData).to[RequestEntity] @@ -74,7 +75,8 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( } } - def delete(id: LongId[ExtractedData])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) @@ -85,7 +87,7 @@ class RestExtractedDataService(transport: ServiceTransport, baseUri: Uri)( } def getPatientLabels(id: UuidId[Patient])( - implicit requestContext: AuthenticatedRequestContext): Future[GetPatientLabelsReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetPatientLabelsReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/patient/$id")) for { response <- transport.sendRequestGetResponse(requestContext)(request) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala index 8e75c76..527ae73 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHelper.scala @@ -4,8 +4,6 @@ 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.{ContextHeaders, ServiceRequestContext} -import xyz.driver.pdsuicommon.auth.{AnonymousRequestContext, AuthenticatedRequestContext} import xyz.driver.pdsuicommon.db.{ Pagination, SearchFilterBinaryOperation, @@ -108,22 +106,9 @@ trait RestHelper { case StatusCodes.Forbidden => new AuthorizationException(message) case StatusCodes.NotFound => new NotFoundException(message) case other => - new DomainException(s"Unhandled domain error for HTTP status ${other.value}. ${message}") + new DomainException(s"Unhandled domain error for HTTP status ${other.value}. $message") }) } } } - - implicit def toServiceRequestContext(requestContext: AnonymousRequestContext): ServiceRequestContext = { - val auth: Map[String, String] = requestContext match { - case ctx: AuthenticatedRequestContext => - Map( - ContextHeaders.AuthenticationTokenHeader -> ctx.authToken, - ContextHeaders.TrackingIdHeader -> ctx.requestId.value - ) - case _ => - Map() - } - new ServiceRequestContext(contextHeaders = auth, trackingId = requestContext.requestId.value) - } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala index 73abb0e..11adb8f 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestHypothesisService.scala @@ -6,7 +6,7 @@ import scala.concurrent.{ExecutionContext, Future} import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest._ -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain.UuidId import xyz.driver.pdsuidomain.ListResponse @@ -24,7 +24,7 @@ class RestHypothesisService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.HypothesisService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/hypothesis", sortingQuery(sorting))) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -34,7 +34,8 @@ class RestHypothesisService(transport: ServiceTransport, baseUri: Uri)( } } - def create(draftHypothesis: Hypothesis)(implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + 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) @@ -45,7 +46,8 @@ class RestHypothesisService(transport: ServiceTransport, baseUri: Uri)( } } - def delete(id: UuidId[Hypothesis])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala index 93036be..c4add4a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionService.scala @@ -5,7 +5,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -25,7 +25,7 @@ class RestInterventionService(transport: ServiceTransport, baseUri: Uri)( def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/intervention", @@ -38,7 +38,8 @@ class RestInterventionService(transport: ServiceTransport, baseUri: Uri)( } } - def getById(id: LongId[Intervention])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -49,7 +50,7 @@ class RestInterventionService(transport: ServiceTransport, baseUri: Uri)( } def update(origIntervention: InterventionWithArms, draftIntervention: InterventionWithArms)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origIntervention.intervention.id for { entity <- Marshal(draftIntervention).to[RequestEntity] @@ -62,7 +63,7 @@ class RestInterventionService(transport: ServiceTransport, baseUri: Uri)( } def create(draftIntervention: InterventionWithArms)( - implicit requestContext: AuthenticatedRequestContext): Future[CreateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[CreateReply] = { for { entity <- Marshal(draftIntervention).to[RequestEntity] request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, "/v1/intervention")).withEntity(entity) @@ -73,7 +74,8 @@ class RestInterventionService(transport: ServiceTransport, baseUri: Uri)( } } - def delete(id: LongId[Intervention])(implicit requestContext: AuthenticatedRequestContext): Future[DeleteReply] = { + 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) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala index 004d6c4..825b936 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestInterventionTypeService.scala @@ -4,7 +4,7 @@ import scala.concurrent.{ExecutionContext, Future} import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest._ -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.InterventionType @@ -21,7 +21,7 @@ class RestInterventionTypeService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.InterventionTypeService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/intervention-type", sortingQuery(sorting))) for { response <- transport.sendRequestGetResponse(requestContext)(request) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala index 0627521..6af6707 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestMedicalRecordService.scala @@ -9,7 +9,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -27,7 +27,7 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.MedicalRecordService._ def getById(recordId: LongId[MedicalRecord])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/record/$recordId")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -38,9 +38,10 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( } def getPdfSource(recordId: LongId[MedicalRecord])( - implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] + ): Future[Source[ByteString, NotUsed]] = { - val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/record/${recordId}/source")) + val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/record/$recordId/source")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -53,7 +54,7 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest( HttpMethods.GET, @@ -66,7 +67,8 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( } } - def create(draftRecord: MedicalRecord)(implicit requestContext: AnonymousRequestContext): Future[CreateReply] = { + 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) @@ -78,7 +80,7 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( } def update(origRecord: MedicalRecord, draftRecord: MedicalRecord)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origRecord.id.toString for { entity <- Marshal(draftRecord).to[RequestEntity] @@ -91,7 +93,7 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( } private def editAction(orig: MedicalRecord, action: String)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = orig.id.toString val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/record/$id/$action")) for { @@ -102,19 +104,26 @@ class RestMedicalRecordService(transport: ServiceTransport, baseUri: Uri)( } } - def start(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def start(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "start") - def submit(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def submit(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "submit") - def restart(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def restart(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "restart") - def flag(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def flag(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "flag") - def resolve(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def resolve(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "resolve") - def unassign(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def unassign(orig: MedicalRecord)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(orig, "unassign") - def archive(orig: MedicalRecord)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + 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 index 82c522f..6629cf5 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientCriterionService.scala @@ -4,7 +4,7 @@ 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.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -28,7 +28,7 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)( filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/criterion", @@ -42,7 +42,7 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)( } def getById(patientId: UuidId[Patient], id: LongId[PatientCriterion])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/criterion/$id")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -53,7 +53,7 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)( } def updateList(patientId: UuidId[Patient], draftEntities: List[DraftPatientCriterion])( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { for { entity <- Marshal(draftEntities).to[RequestEntity] request = HttpRequest(HttpMethods.PATCH, endpointUri(baseUri, s"/v1/patient/$patientId/criterion")) @@ -66,7 +66,7 @@ class RestPatientCriterionService(transport: ServiceTransport, baseUri: Uri)( } def update(origEntity: PatientCriterion, draftEntity: PatientCriterion, patientId: UuidId[Patient])( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { for { entity <- Marshal(draftEntity).to[RequestEntity] request = HttpRequest( diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala index 9b93179..a6ef5b4 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientLabelService.scala @@ -5,7 +5,7 @@ import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest.{Pagination => _, _} import xyz.driver.entities.labels.Label -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -28,7 +28,7 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)( filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/label", @@ -44,7 +44,8 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)( def getDefiningCriteriaList(patientId: UuidId[Patient], hypothesisId: UuidId[Hypothesis], pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetDefiningCriteriaListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] + ): Future[GetDefiningCriteriaListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/patient/$patientId/hypothesis", paginationQuery(pagination))) for { @@ -56,7 +57,7 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)( } def getByLabelIdOfPatient(patientId: UuidId[Patient], labelId: LongId[Label])( - implicit requestContext: AuthenticatedRequestContext): Future[GetByLabelIdReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByLabelIdReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$patientId/label/$labelId")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -67,7 +68,7 @@ class RestPatientLabelService(transport: ServiceTransport, baseUri: Uri)( } def update(origPatientLabel: PatientLabel, draftPatientLabel: PatientLabel)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { for { entity <- Marshal(draftPatientLabel).to[RequestEntity] request = HttpRequest( diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala index af3c782..8460872 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestPatientService.scala @@ -1,11 +1,10 @@ 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.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.ListResponse @@ -22,7 +21,8 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro import xyz.driver.pdsuidomain.services.PatientService._ - def getById(id: UuidId[Patient])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + def getById(id: UuidId[Patient])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetByIdReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/patient/$id")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -35,7 +35,7 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest( HttpMethods.GET, endpointUri(baseUri, "/v1/patient", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination))) @@ -48,7 +48,7 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro } private def editAction(orig: Patient, action: String)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = orig.id.toString val request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/patient/$id/$action")) for { @@ -59,16 +59,22 @@ class RestPatientService(transport: ServiceTransport, baseUri: Uri)(implicit pro } } - def unassign(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def unassign(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(origPatient, "unassign") - def start(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def start(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(origPatient, "start") - def submit(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def submit(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(origPatient, "submit") - def restart(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def restart(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(origPatient, "restart") - def flag(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def flag(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = editAction(origPatient, "flag") - def resolve(origPatient: Patient)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def resolve(origPatient: Patient)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = 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 index f038c95..ffde086 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestProviderTypeService.scala @@ -4,7 +4,7 @@ import scala.concurrent.{ExecutionContext, Future} import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest.{Pagination => _, _} -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.ProviderType @@ -21,7 +21,7 @@ class RestProviderTypeService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.ProviderTypeService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/provider-type", sortingQuery(sorting))) for { response <- transport.sendRequestGetResponse(requestContext)(request) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala index d3f0eb7..f8ce502 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestStudyDesignService.scala @@ -4,7 +4,7 @@ import scala.concurrent.{ExecutionContext, Future} import akka.http.scaladsl.model._ import akka.stream.Materializer import xyz.driver.core.rest._ -import xyz.driver.pdsuicommon.auth._ +import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.StudyDesign @@ -21,7 +21,7 @@ class RestStudyDesignService(transport: ServiceTransport, baseUri: Uri)( import xyz.driver.pdsuidomain.services.StudyDesignService._ def getAll(sorting: Option[Sorting] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, "/v1/study-design", sortingQuery(sorting))) for { response <- transport.sendRequestGetResponse(requestContext)(request) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala index 04b45fb..e978775 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala @@ -8,7 +8,6 @@ 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.auth._ import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuidomain.entities._ @@ -16,6 +15,7 @@ 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._ @@ -28,7 +28,8 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote import xyz.driver.pdsuidomain.formats.json.trial._ import xyz.driver.pdsuidomain.services.TrialService._ - def getById(id: StringId[Trial])(implicit requestContext: AuthenticatedRequestContext): Future[GetByIdReply] = { + 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) @@ -39,7 +40,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } def getTrialWithLabels(trialId: StringId[Trial], cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply] = { + 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) @@ -50,7 +51,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } def getTrialsWithLabels(cancerType: CancerType)( - implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetTrialsWithLabelsReply] = { val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/trial/$cancerType")) for { response <- transport.sendRequestGetResponse(requestContext)(request) @@ -61,7 +62,8 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } def getPdfSource(trialId: StringId[Trial])( - implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] = { + 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) @@ -74,7 +76,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( - implicit requestContext: AuthenticatedRequestContext): Future[GetListReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[GetListReply] = { val request = HttpRequest( HttpMethods.GET, endpointUri(baseUri, "/v1/trial", filterQuery(filter) ++ sortingQuery(sorting) ++ paginationQuery(pagination))) @@ -87,7 +89,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } def update(origTrial: Trial, draftTrial: Trial)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origTrial.id.id for { entity <- Marshal(draftTrial).to[RequestEntity] @@ -100,7 +102,7 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } private def singleAction(origTrial: Trial, action: String)( - implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = { + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = { val id = origTrial.id.id val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$id/$action")) for { @@ -111,18 +113,25 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } } - def start(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def start(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "start") - def submit(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def submit(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "submit") - def restart(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def restart(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "restart") - def flag(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def flag(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "flag") - def resolve(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def resolve(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "resolve") - def archive(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def archive(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "archive") - def unassign(origTrial: Trial)(implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] = + def unassign(origTrial: Trial)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "unassign") } diff --git a/src/test/scala/xyz/driver/pdsuicommon/BaseSuite.scala b/src/test/scala/xyz/driver/pdsuicommon/BaseSuite.scala deleted file mode 100644 index 29e7610..0000000 --- a/src/test/scala/xyz/driver/pdsuicommon/BaseSuite.scala +++ /dev/null @@ -1,23 +0,0 @@ -package xyz.driver.pdsuicommon - -import java.time.{LocalDateTime, ZoneId} - -import org.scalatest.FreeSpecLike -import org.scalatest.concurrent.ScalaFutures -import org.scalatest.time.{Millis, Span} -import xyz.driver.pdsuicommon.domain._ -import xyz.driver.pdsuicommon.utils.DiffUtils - -trait BaseSuite extends FreeSpecLike with DiffUtils with ScalaFutures { - - implicit val defaultPatience = PatienceConfig(timeout = Span(1000, Millis), interval = Span(20, Millis)) - - def sampleUser(role: User.Role, email: String = "test@example.com", password: String = "123") = User( - id = StringId("2001"), - email = Email(email), - name = "Test", - roles = Set(role), - latestActivity = Some(LocalDateTime.now(ZoneId.of("Z"))), - deleted = None - ) -} diff --git a/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala index 915e4e7..63c4aa2 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala @@ -3,11 +3,17 @@ package xyz.driver.pdsuidomain import java.time.{LocalDate, LocalDateTime} import java.time.temporal.ChronoUnit -import xyz.driver.pdsuicommon.BaseSuite +import org.scalatest.FreeSpecLike +import org.scalatest.concurrent.ScalaFutures +import org.scalatest.time.{Millis, Span} import xyz.driver.pdsuicommon.domain.{LongId, TextJson} +import xyz.driver.pdsuicommon.utils.DiffUtils import xyz.driver.pdsuidomain.entities.Document -class DocumentSuite extends BaseSuite { +class DocumentSuite extends FreeSpecLike with DiffUtils with ScalaFutures { + + implicit val defaultPatience: PatienceConfig = + PatienceConfig(timeout = Span(1000, Millis), interval = Span(20, Millis)) "validation" - { "can't submit invalid data" - { diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/ExportFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/ExportFormatSuite.scala index c976243..9c53d3b 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/ExportFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/ExportFormatSuite.scala @@ -1,13 +1,14 @@ package xyz.driver.pdsuidomain.formats.json import java.time.{LocalDate, LocalDateTime} -import java.util.UUID import org.scalatest.{FlatSpec, Matchers} import spray.json._ +import xyz.driver.core.Id +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.entities.labels.LabelValue import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} -import xyz.driver.pdsuidomain.entities.{DocumentType, ProviderType, RecordRequestId} +import xyz.driver.pdsuidomain.entities.{DocumentType, ProviderType} class ExportFormatSuite extends FlatSpec with Matchers { import xyz.driver.pdsuidomain.formats.json.export._ @@ -16,7 +17,7 @@ class ExportFormatSuite extends FlatSpec with Matchers { import xyz.driver.pdsuidomain.entities.export.patient._ val document = ExportPatientLabelEvidenceDocument( documentId = LongId(101), - requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), + requestId = Id[ClinicalRecord]("7b54a75d-4197-4b27-9045-b9b6cb131be9"), documentType = DocumentType.OutpatientPhysicianNote, providerType = ProviderType.Surgery, date = LocalDate.parse("2017-08-10") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/ListResponseFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/ListResponseFormatSuite.scala index c561412..e43e922 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/ListResponseFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/ListResponseFormatSuite.scala @@ -1,10 +1,11 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import java.util.UUID import spray.json._ import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.Id +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuidomain.ListResponse import xyz.driver.pdsuidomain.entities.MedicalRecord.Status @@ -18,7 +19,7 @@ class ListResponseFormatSuite extends FlatSpec with Matchers { private val lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00") private val lastUpdateToLocal = "2017-08-10T18:00Z" - def metaJsonObjectAsString(meta: ListResponse.Meta) = { + def metaJsonObjectAsString(meta: ListResponse.Meta): String = { import meta._ val lastUpdate = meta.lastUpdate .map(_ => s""","lastUpdate":"$lastUpdateToLocal"""") @@ -74,7 +75,7 @@ class ListResponseFormatSuite extends FlatSpec with Matchers { physician = Some("physician"), meta = None, disease = "Breast", - requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), + requestId = Id[ClinicalRecord]("7b54a75d-4197-4b27-9045-b9b6cb131be9"), caseId = None, patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343"), totalPages = 10 diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordFormatSuite.scala index b4e37a2..86462b2 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordFormatSuite.scala @@ -1,12 +1,13 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import java.util.UUID import spray.json._ import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.Id +import xyz.driver.entities.clinic.ClinicalRecord import xyz.driver.pdsuicommon.domain.{LongId, TextJson, UuidId} -import xyz.driver.pdsuidomain.entities.{MedicalRecord, RecordRequestId} +import xyz.driver.pdsuidomain.entities.MedicalRecord class MedicalRecordFormatSuite extends FlatSpec with Matchers { import xyz.driver.pdsuidomain.formats.json.record._ @@ -98,7 +99,7 @@ class MedicalRecordFormatSuite extends FlatSpec with Matchers { physician = Some("physician"), meta = None, disease = "Breast", - requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), + requestId = Id[ClinicalRecord]("7b54a75d-4197-4b27-9045-b9b6cb131be9"), caseId = None, patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343"), totalPages = 10 @@ -120,7 +121,7 @@ class MedicalRecordFormatSuite extends FlatSpec with Matchers { previousAssignee = None, lastActiveUserId = None, patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343"), - requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), + requestId = Id[ClinicalRecord]("7b54a75d-4197-4b27-9045-b9b6cb131be9"), disease = "Breast", caseId = None, physician = None, diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientFormatSuite.scala index c296f84..6cddb45 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientFormatSuite.scala @@ -4,10 +4,12 @@ import java.time.{LocalDate, LocalDateTime} import spray.json._ import org.scalatest.{FlatSpec, Matchers} +import xyz.driver.core.Id +import xyz.driver.entities.clinic.TestOrder import xyz.driver.entities.common.FullName import xyz.driver.entities.patient.CancerType import xyz.driver.pdsuicommon.domain.UuidId -import xyz.driver.pdsuidomain.entities.{Patient, PatientOrderId} +import xyz.driver.pdsuidomain.entities.Patient class PatientFormatSuite extends FlatSpec with Matchers { import xyz.driver.pdsuidomain.formats.json.patient._ @@ -24,7 +26,7 @@ class PatientFormatSuite extends FlatSpec with Matchers { lastActiveUserId = None, isUpdateRequired = false, disease = CancerType.Breast, - orderId = PatientOrderId("7b54a75d-4197-4b27-9045-b9b6cb131be9"), + orderId = Id[TestOrder]("7b54a75d-4197-4b27-9045-b9b6cb131be9"), lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00") ) val writtenJson = patientFormat.write(orig) -- cgit v1.2.3 From 5515c834853cbe3ce60460a4819a94805cfe24f7 Mon Sep 17 00:00:00 2001 From: vlad Date: Thu, 2 Nov 2017 17:37:25 -0700 Subject: Unifying user ids --- .../xyz/driver/pdsuicommon/logging/TimeLogger.scala | 5 ++--- .../xyz/driver/pdsuidomain/entities/Document.scala | 11 ++++++----- .../pdsuidomain/entities/DocumentHistory.scala | 4 ++-- .../driver/pdsuidomain/entities/DocumentIssue.scala | 6 +++--- .../driver/pdsuidomain/entities/MedicalRecord.scala | 14 +++++++------- .../pdsuidomain/entities/MedicalRecordHistory.scala | 4 ++-- .../pdsuidomain/entities/MedicalRecordIssue.scala | 6 +++--- .../xyz/driver/pdsuidomain/entities/Message.scala | 4 ++-- .../xyz/driver/pdsuidomain/entities/Patient.scala | 10 +++++----- .../driver/pdsuidomain/entities/PatientHistory.scala | 7 ++++--- .../driver/pdsuidomain/entities/PatientIssue.scala | 4 ++-- .../xyz/driver/pdsuidomain/entities/Trial.scala | 8 ++++---- .../driver/pdsuidomain/entities/TrialHistory.scala | 4 ++-- .../xyz/driver/pdsuidomain/entities/TrialIssue.scala | 4 ++-- .../driver/pdsuidomain/entities/UserHistory.scala | 10 +++++----- .../fakes/entities/recordprocessing.scala | 20 ++++++++++---------- .../fakes/entities/treatmentmatching.scala | 10 +++++----- .../pdsuidomain/fakes/entities/trialcuration.scala | 10 +++++----- .../driver/pdsuidomain/formats/json/document.scala | 2 +- .../pdsuidomain/formats/json/documenthistory.scala | 2 +- .../pdsuidomain/formats/json/documentissue.scala | 7 +++++-- .../driver/pdsuidomain/formats/json/patient.scala | 8 ++++---- .../pdsuidomain/formats/json/patienthistory.scala | 6 +++--- .../pdsuidomain/formats/json/patientissue.scala | 7 +++++-- .../pdsuidomain/formats/json/recordhistory.scala | 2 +- .../pdsuidomain/formats/json/recordissue.scala | 5 +++-- .../xyz/driver/pdsuidomain/formats/json/trial.scala | 8 ++++---- .../pdsuidomain/formats/json/trialhistory.scala | 2 +- .../driver/pdsuidomain/formats/json/trialissue.scala | 3 ++- .../formats/json/DocumentHistoryFormatSuite.scala | 6 +++--- .../formats/json/DocumentIssueFormatSuite.scala | 8 ++++---- .../json/MedicalRecordHistoryFormatSuite.scala | 6 +++--- .../formats/json/MedicalRecordIssueFormatSuite.scala | 8 ++++---- .../formats/json/PatientHistoryFormatSuite.scala | 6 +++--- .../formats/json/PatientIssueFormatSuite.scala | 6 +++--- .../formats/json/TrialHistoryFormatSuite.scala | 2 +- .../formats/json/TrialIssueFormatSuite.scala | 4 ++-- 37 files changed, 124 insertions(+), 115 deletions(-) diff --git a/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala b/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala index 349d925..fbd17eb 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/logging/TimeLogger.scala @@ -3,12 +3,11 @@ package xyz.driver.pdsuicommon.logging import java.time.{LocalDateTime, ZoneId} import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.StringId object TimeLogger extends PhiLogging { - def logTime(userId: StringId[User], label: String, obj: String): Unit = { + def logTime(userId: xyz.driver.core.Id[User], label: String, obj: String): Unit = { val now = LocalDateTime.now(ZoneId.of("Z")) - logger.info(phi"User id=$userId performed an action at ${Unsafe(label)}=$now with a ${Unsafe(obj)} ") + logger.info(phi"User id=${Unsafe(userId)} performed an action at ${Unsafe(label)}=$now with a ${Unsafe(obj)} ") } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala index 4a0c5ca..471d345 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala @@ -404,8 +404,9 @@ object Document { implicit def toPhiString(x: Document): PhiString = { import x._ - phi"Document(id=$id, status=$status, assignee=$assignee, " + - phi"previousAssignee=$previousAssignee, lastActiveUserId=$lastActiveUserId, recordId=$recordId)" + phi"Document(id=$id, status=$status, assignee=${Unsafe(assignee)}, " + + phi"previousAssignee=${Unsafe(previousAssignee)}, " + + phi"lastActiveUserId=${Unsafe(lastActiveUserId)}, recordId=$recordId)" } val validator: Validator[Document, Document] = { input => @@ -444,9 +445,9 @@ object Document { final case class Document(id: LongId[Document] = LongId(0L), status: Document.Status, previousStatus: Option[Document.Status], - assignee: Option[StringId[User]], - previousAssignee: Option[StringId[User]], - lastActiveUserId: Option[StringId[User]], + assignee: Option[xyz.driver.core.Id[User]], + previousAssignee: Option[xyz.driver.core.Id[User]], + lastActiveUserId: Option[xyz.driver.core.Id[User]], recordId: LongId[MedicalRecord], physician: Option[String], typeId: Option[LongId[DocumentType]], // not null diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala index cbbeaee..0a8480b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentHistory.scala @@ -12,7 +12,7 @@ object DocumentHistory { implicit def toPhiString(x: DocumentHistory): PhiString = { import x._ - phi"DocumentHistory(id=$id, executor=$executor, documentId=$documentId, state=$state, action=$action, " + + phi"DocumentHistory(id=$id, executor=${Unsafe(executor)}, documentId=$documentId, state=$state, action=$action, " + phi"created=$created)" } @@ -84,7 +84,7 @@ object DocumentHistory { } final case class DocumentHistory(id: LongId[DocumentHistory], - executor: StringId[User], + executor: xyz.driver.core.Id[User], documentId: LongId[Document], state: State, action: Action, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala index 074c96e..279ef38 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/DocumentIssue.scala @@ -3,11 +3,11 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuicommon.logging._ final case class DocumentIssue(id: LongId[DocumentIssue], - userId: StringId[User], + userId: xyz.driver.core.Id[User], documentId: LongId[Document], startPage: Option[Double], endPage: Option[Double], @@ -19,6 +19,6 @@ final case class DocumentIssue(id: LongId[DocumentIssue], object DocumentIssue { implicit def toPhiString(x: DocumentIssue): PhiString = { import x._ - phi"DocumentIssue(id=$id, userId=$userId, documentId=$documentId)" + phi"DocumentIssue(id=$id, userId=${Unsafe(userId)}, documentId=$documentId)" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala index 4794c00..d3bc56e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala @@ -112,7 +112,7 @@ object MedicalRecord { case _ => None } - val All = Set[Status]( + val All: Set[Status] = Set[Status]( Unprocessed, PreCleaning, New, @@ -126,7 +126,7 @@ object MedicalRecord { Archived ) - val AllPrevious = Set[Status](New, Cleaned, Reviewed, Organized) + val AllPrevious: Set[Status] = Set[Status](New, Cleaned, Reviewed, Organized) implicit def toPhiString(x: Status): PhiString = Unsafe(Utils.getClassSimpleName(x.getClass)) } @@ -142,17 +142,17 @@ object MedicalRecord { implicit def toPhiString(x: MedicalRecord): PhiString = { import x._ - phi"MedicalRecord(id=$id, status=$status, assignee=$assignee, " + - phi"previousAssignee=$previousAssignee, lastActiveUserId=$lastActiveUserId)" + phi"MedicalRecord(id=$id, status=$status, assignee=${Unsafe(assignee)}, " + + phi"previousAssignee=${Unsafe(previousAssignee)}, lastActiveUserId=${Unsafe(lastActiveUserId)})" } } final case class MedicalRecord(id: LongId[MedicalRecord], status: MedicalRecord.Status, previousStatus: Option[MedicalRecord.Status], - assignee: Option[StringId[User]], - previousAssignee: Option[StringId[User]], - lastActiveUserId: Option[StringId[User]], + assignee: Option[xyz.driver.core.Id[User]], + previousAssignee: Option[xyz.driver.core.Id[User]], + lastActiveUserId: Option[xyz.driver.core.Id[User]], patientId: UuidId[Patient], requestId: xyz.driver.core.Id[ClinicalRecord], disease: String, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala index 3e141e5..4259737 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordHistory.scala @@ -12,7 +12,7 @@ object MedicalRecordHistory { implicit def toPhiString(x: MedicalRecordHistory): PhiString = { import x._ - phi"MedicalRecordHistory(id=$id, executor=$executor, recordId=$recordId, state=$state, action=$action, " + + phi"MedicalRecordHistory(id=$id, executor=${Unsafe(executor)}, recordId=$recordId, state=$state, action=$action, " + phi"created=$created)" } @@ -87,7 +87,7 @@ object MedicalRecordHistory { } final case class MedicalRecordHistory(id: LongId[MedicalRecordHistory], - executor: StringId[User], + executor: xyz.driver.core.Id[User], recordId: LongId[MedicalRecord], state: State, action: Action, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala index c768958..6cdad49 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecordIssue.scala @@ -3,11 +3,11 @@ package xyz.driver.pdsuidomain.entities import java.time.LocalDateTime import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuicommon.logging._ final case class MedicalRecordIssue(id: LongId[MedicalRecordIssue], - userId: StringId[User], + userId: xyz.driver.core.Id[User], recordId: LongId[MedicalRecord], startPage: Option[Double], endPage: Option[Double], @@ -19,6 +19,6 @@ final case class MedicalRecordIssue(id: LongId[MedicalRecordIssue], object MedicalRecordIssue { implicit def toPhiString(x: MedicalRecordIssue): PhiString = { import x._ - phi"MedicalRecordIssue(id=$id, userId=$userId, recordId=$recordId)" + phi"MedicalRecordIssue(id=$id, userId=${Unsafe(userId)}, recordId=$recordId)" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala index 5192410..68fd5cd 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Message.scala @@ -9,7 +9,7 @@ import xyz.driver.pdsuicommon.logging._ final case class Message(id: LongId[Message], text: String, lastUpdate: LocalDateTime, - userId: StringId[User], + userId: xyz.driver.core.Id[User], isDraft: Boolean, recordId: Option[LongId[MedicalRecord]], documentId: Option[LongId[Document]], @@ -30,6 +30,6 @@ object Message { .orElse(documentId.map(_.toString)) .orElse(patientId.map(_.toString)) - phi"Message(id=$id, userId=$userId, isDraft=$isDraft, entityId=${Unsafe(entityId)}" + phi"Message(id=$id, userId=${Unsafe(userId)}, isDraft=$isDraft, entityId=${Unsafe(entityId)}" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala index 7f29c0a..c48e0d9 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala @@ -37,8 +37,8 @@ object Patient { implicit def toPhiString(x: Patient): PhiString = { import x._ - phi"Patient(id=$id, status=$status, previousStatus=$previousStatus, lastActiveUserId=$lastActiveUserId" + - phi"assignee=$assignee, previousAssignee=$previousAssignee)" + phi"Patient(id=$id, status=$status, previousStatus=$previousStatus, lastActiveUserId=${Unsafe(lastActiveUserId)}" + + phi"assignee=${Unsafe(assignee)}, previousAssignee=${Unsafe(previousAssignee)})" } } @@ -46,10 +46,10 @@ final case class Patient(id: UuidId[Patient], status: Patient.Status, name: FullName[Patient], dob: LocalDate, - assignee: Option[StringId[User]], + assignee: Option[xyz.driver.core.Id[User]], previousStatus: Option[Patient.Status], - previousAssignee: Option[StringId[User]], - lastActiveUserId: Option[StringId[User]], + previousAssignee: Option[xyz.driver.core.Id[User]], + lastActiveUserId: Option[xyz.driver.core.Id[User]], isUpdateRequired: Boolean, disease: CancerType, orderId: xyz.driver.core.Id[TestOrder], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala index c67fa6f..bea2c3b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHistory.scala @@ -3,7 +3,7 @@ package xyz.driver.pdsuidomain.entities import java.time.{LocalDateTime, ZoneId} import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} +import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils import xyz.driver.pdsuidomain.entities.PatientHistory.{Action, State} @@ -12,7 +12,8 @@ object PatientHistory { implicit def toPhiString(x: PatientHistory): PhiString = { import x._ - phi"PatientHistory(id=$id, executor=$executor, patientId=$patientId, state=$state, action=$action, created=$created)" + phi"PatientHistory(id=$id, executor=${Unsafe(executor)}, patientId=$patientId, " + + phi"state=$state, action=$action, created=$created)" } sealed trait State @@ -86,7 +87,7 @@ object PatientHistory { } final case class PatientHistory(id: LongId[PatientHistory], - executor: StringId[User], + executor: xyz.driver.core.Id[User], patientId: UuidId[Patient], state: State, action: Action, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala index b83ec82..b60c2ea 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientIssue.scala @@ -7,7 +7,7 @@ import xyz.driver.pdsuicommon.domain._ import xyz.driver.pdsuicommon.logging._ final case class PatientIssue(id: LongId[PatientIssue], - userId: StringId[User], + userId: xyz.driver.core.Id[User], patientId: UuidId[Patient], lastUpdate: LocalDateTime, isDraft: Boolean, @@ -17,6 +17,6 @@ final case class PatientIssue(id: LongId[PatientIssue], object PatientIssue { implicit def toPhiString(x: PatientIssue): PhiString = { import x._ - phi"PatientIssue(id=$id, userId=$userId, patientId=$patientId)" + phi"PatientIssue(id=$id, userId=${Unsafe(userId)}, patientId=$patientId)" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala index 684f349..cb75803 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala @@ -87,7 +87,7 @@ object Trial { implicit def toPhiString(x: Trial): PhiString = { import x._ phi"Trial(id=$id, externalId=$externalId, status=$status, previousStatus=$previousStatus, " + - phi"lastActiveUserId=$lastActiveUserId, assignee=$assignee, previousAssignee=$previousAssignee, " + phi"lastActiveUserId=${Unsafe(lastActiveUserId)}, assignee=${Unsafe(assignee)}, previousAssignee=${Unsafe(previousAssignee)})" } final case class Locations(locations: List[String]) @@ -96,10 +96,10 @@ object Trial { final case class Trial(id: StringId[Trial], externalId: UuidId[Trial], status: Status, - assignee: Option[StringId[User]], + assignee: Option[xyz.driver.core.Id[User]], previousStatus: Option[Status], - previousAssignee: Option[StringId[User]], - lastActiveUserId: Option[StringId[User]], + previousAssignee: Option[xyz.driver.core.Id[User]], + lastActiveUserId: Option[xyz.driver.core.Id[User]], lastUpdate: LocalDateTime, phase: String, hypothesisId: Option[UuidId[Hypothesis]], diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala index 7366567..c66048b 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialHistory.scala @@ -12,7 +12,7 @@ object TrialHistory { implicit def toPhiString(x: TrialHistory): PhiString = { import x._ - phi"TrialHistory(id=$id, executor=$executor, trialId=$trialId, state=$state, action=$action, created=$created)" + phi"TrialHistory(id=$id, executor=${Unsafe(executor)}, trialId=$trialId, state=$state, action=$action, created=$created)" } sealed trait State @@ -86,7 +86,7 @@ object TrialHistory { } final case class TrialHistory(id: LongId[TrialHistory], - executor: StringId[User], + executor: xyz.driver.core.Id[User], trialId: StringId[Trial], state: State, action: Action, diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala index 14610d5..f69e681 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/TrialIssue.scala @@ -7,7 +7,7 @@ import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuicommon.logging._ final case class TrialIssue(id: LongId[TrialIssue], - userId: StringId[User], + userId: xyz.driver.core.Id[User], trialId: StringId[Trial], lastUpdate: LocalDateTime, isDraft: Boolean, @@ -19,6 +19,6 @@ final case class TrialIssue(id: LongId[TrialIssue], object TrialIssue { implicit def toPhiString(x: TrialIssue): PhiString = { import x._ - phi"TrialIssue(id=$id, userId=$userId, trialId=$trialId)" + phi"TrialIssue(id=$id, userId=${Unsafe(userId)}, trialId=$trialId)" } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala index 3528b4c..6299ed4 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/UserHistory.scala @@ -8,7 +8,7 @@ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils final case class UserHistory(id: LongId[UserHistory], - executor: StringId[User], + executor: xyz.driver.core.Id[User], recordId: Option[LongId[MedicalRecord]] = None, documentId: Option[LongId[Document]] = None, trialId: Option[StringId[Trial]] = None, @@ -19,7 +19,7 @@ final case class UserHistory(id: LongId[UserHistory], object UserHistory { - def forDocument(executor: StringId[User], + def forDocument(executor: xyz.driver.core.Id[User], documentId: LongId[Document], state: UserHistory.State, action: UserHistory.Action): UserHistory = UserHistory( @@ -30,7 +30,7 @@ object UserHistory { action = action ) - def forRecord(executor: StringId[User], + def forRecord(executor: xyz.driver.core.Id[User], recordId: LongId[MedicalRecord], state: UserHistory.State, action: UserHistory.Action): UserHistory = UserHistory( @@ -41,7 +41,7 @@ object UserHistory { action = action ) - def forPatient(executor: StringId[User], + def forPatient(executor: xyz.driver.core.Id[User], patientId: UuidId[Patient], state: UserHistory.State, action: UserHistory.Action): UserHistory = UserHistory( @@ -139,7 +139,7 @@ object UserHistory { implicit def toPhiString(x: UserHistory): PhiString = { import x._ - phi"UserHistory(id=$id, executor=$executor, recordId=$recordId, " + + phi"UserHistory(id=$id, executor=${Unsafe(executor)}, recordId=$recordId, " + phi"documentId=$documentId, trialId=$trialId, patientId=$patientId, " + phi"state=$state, action=$action, created=$created)" } diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala index 199be29..5903dc8 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala @@ -108,9 +108,9 @@ object recordprocessing { id = nextLongId[MedicalRecord], status = nextMedicalRecordStatus(), previousStatus = nextOption(generators.oneOf[MedicalRecord.Status](MedicalRecord.Status.AllPrevious)), - assignee = nextOption(nextStringId[User]), - previousAssignee = nextOption(nextStringId[User]), - lastActiveUserId = nextOption(nextStringId[User]), + assignee = nextOption(generators.nextId[User]), + previousAssignee = nextOption(generators.nextId[User]), + lastActiveUserId = nextOption(generators.nextId[User]), patientId = nextUuidId[Patient], requestId = generators.nextId[ClinicalRecord](), disease = generators.nextString(), @@ -123,7 +123,7 @@ object recordprocessing { def nextMedicalRecordHistory(): MedicalRecordHistory = MedicalRecordHistory( id = nextLongId[MedicalRecordHistory], - executor = nextStringId[User], + executor = generators.nextId[User], recordId = nextLongId[MedicalRecord], state = nextMedicalRecordHistoryState(), action = nextMedicalRecordHistoryAction(), @@ -135,7 +135,7 @@ object recordprocessing { MedicalRecordIssue( id = nextLongId[MedicalRecordIssue], - userId = nextStringId[User], + userId = generators.nextId[User], recordId = nextLongId[MedicalRecord], startPage = startPage, endPage = endPage, @@ -171,9 +171,9 @@ object recordprocessing { id = nextLongId[Document], status = nextDocumentStatus(), previousStatus = nextOption(generators.oneOf[Document.Status](Document.Status.AllPrevious)), - assignee = nextOption(nextStringId[User]), - previousAssignee = nextOption(nextStringId[User]), - lastActiveUserId = nextOption(nextStringId[User]), + assignee = nextOption(generators.nextId[User]), + previousAssignee = nextOption(generators.nextId[User]), + lastActiveUserId = nextOption(generators.nextId[User]), recordId = nextLongId[MedicalRecord], physician = nextOption(nextString()), typeId = nextOption(nextLongId[DocumentType]), @@ -193,7 +193,7 @@ object recordprocessing { val (startPage, endPage) = nextStartAndEndPagesOption DocumentIssue( id = nextLongId[DocumentIssue], - userId = nextStringId[User], + userId = generators.nextId[User], documentId = nextLongId[Document], startPage = startPage, endPage = endPage, @@ -206,7 +206,7 @@ object recordprocessing { def nextDocumentHistory(): DocumentHistory = DocumentHistory( id = nextLongId[DocumentHistory], - executor = nextStringId[User], + executor = generators.nextId[User], documentId = nextLongId[Document], state = nextDocumentHistoryState(), action = nextDocumentHistoryAction(), diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala index b35418d..441c1db 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/treatmentmatching.scala @@ -47,10 +47,10 @@ object treatmentmatching { status = nextPatientStatus, name = nextFullName[Patient], dob = nextLocalDate, - assignee = generators.nextOption(nextStringId[User]), + assignee = generators.nextOption(generators.nextId[User]), previousStatus = generators.nextOption(generators.oneOf[Patient.Status](Patient.Status.AllPrevious)), - previousAssignee = generators.nextOption(nextStringId[User]), - lastActiveUserId = generators.nextOption(nextStringId[User]), + previousAssignee = generators.nextOption(generators.nextId[User]), + lastActiveUserId = generators.nextOption(generators.nextId[User]), isUpdateRequired = generators.nextBoolean(), disease = nextCancerType, orderId = generators.nextId(), @@ -171,7 +171,7 @@ object treatmentmatching { def nextPatientIssue(): PatientIssue = PatientIssue( id = nextLongId[PatientIssue], - userId = nextStringId[User], + userId = generators.nextId[User], patientId = nextUuidId[Patient], lastUpdate = nextLocalDateTime, isDraft = generators.nextBoolean(), @@ -181,7 +181,7 @@ object treatmentmatching { def nextPatientHistory(): PatientHistory = PatientHistory( id = nextLongId[PatientHistory], - executor = nextStringId[User], + executor = generators.nextId[User], patientId = nextUuidId[Patient], state = nextPatientState, action = nextPatientAction, diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala index 2bbff90..94bc27a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala @@ -20,10 +20,10 @@ object trialcuration { id = nextStringId[Trial], externalId = nextUuidId[Trial], status = nextTrialStatus, - assignee = Option(nextStringId[User]), + assignee = Option(generators.nextId[User]), previousStatus = Option(nextPreviousTrialStatus), - previousAssignee = Option(nextStringId[User]), - lastActiveUserId = Option(nextStringId[User]), + previousAssignee = Option(generators.nextId[User]), + lastActiveUserId = Option(generators.nextId[User]), lastUpdate = nextLocalDateTime, phase = generators.nextString(), hypothesisId = Option(nextUuidId[Hypothesis]), @@ -107,7 +107,7 @@ object trialcuration { def nextTrialIssue(): TrialIssue = TrialIssue( id = nextLongId[TrialIssue], - userId = nextStringId[User], + userId = generators.nextId[User], trialId = nextStringId[Trial], lastUpdate = nextLocalDateTime, isDraft = generators.nextBoolean(), @@ -119,7 +119,7 @@ object trialcuration { def nextTrialHistory(): TrialHistory = TrialHistory( id = nextLongId[TrialHistory], - executor = nextStringId[User], + executor = generators.nextId[User], trialId = nextStringId[Trial], state = nextTrialState, action = nextTrialAction, diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document.scala index aaca391..3cce5de 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document.scala @@ -3,7 +3,7 @@ package xyz.driver.pdsuidomain.formats.json import java.time.{LocalDate, LocalDateTime} import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuicommon.domain.{LongId, TextJson} import xyz.driver.pdsuidomain.entities._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documenthistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documenthistory.scala index a0eb3f5..ea79b92 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documenthistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documenthistory.scala @@ -1,7 +1,7 @@ package xyz.driver.pdsuidomain.formats.json import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuidomain.entities._ object documenthistory { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala index b3bc95f..dbf544e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/documentissue.scala @@ -4,7 +4,8 @@ import java.time.LocalDateTime import spray.json._ import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.core.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities._ object documentissue { @@ -37,7 +38,9 @@ object documentissue { } - def jsValueToDocumentIssue(json: JsValue, documentId: LongId[Document], userId: StringId[User]): DocumentIssue = + def jsValueToDocumentIssue(json: JsValue, + documentId: LongId[Document], + userId: xyz.driver.core.Id[User]): DocumentIssue = json match { case JsObject(fields) => val text = fields diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala index 43062b6..774a1ff 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient.scala @@ -10,7 +10,7 @@ import xyz.driver.entities.common.FullName import xyz.driver.entities.patient.CancerType import xyz.driver.formats.json.common._ import xyz.driver.formats.json.patient._ -import xyz.driver.pdsuicommon.domain.{StringId, UuidId} +import xyz.driver.pdsuicommon.domain.UuidId import xyz.driver.pdsuidomain.entities._ object patient { @@ -68,7 +68,7 @@ object patient { val assignee = fields .get("assignee") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val previousStatus = fields .get("previousStatus") @@ -76,11 +76,11 @@ object patient { val previousAssignee = fields .get("previousAssignee") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val lastActiveUser = fields .get("lastActiveUser") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val disease = fields .get("disease") diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienthistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienthistory.scala index bd20b27..c9cdc63 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienthistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patienthistory.scala @@ -1,7 +1,7 @@ package xyz.driver.pdsuidomain.formats.json import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuidomain.entities._ object patienthistory { @@ -9,14 +9,14 @@ object patienthistory { import PatientHistory._ import common._ - implicit val patientStateFormat = new EnumJsonFormat[State]( + implicit val patientStateFormat: RootJsonFormat[State] = new EnumJsonFormat[State]( "Verify" -> State.Verify, "Curate" -> State.Curate, "Review" -> State.Review, "Flag" -> State.Flag ) - implicit val patientActionFormat = new EnumJsonFormat[Action]( + implicit val patientActionFormat: RootJsonFormat[Action] = new EnumJsonFormat[Action]( "Start" -> Action.Start, "Submit" -> Action.Submit, "Unassign" -> Action.Unassign, diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala index e880917..0ee4c6c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patientissue.scala @@ -4,7 +4,8 @@ import java.time.LocalDateTime import spray.json._ import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} +import xyz.driver.core.json._ +import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuidomain.entities._ object patientissue { @@ -23,7 +24,9 @@ object patientissue { } } - def jsValueToPatientIssue(json: JsValue, patientId: UuidId[Patient], userId: StringId[User]): PatientIssue = { + def jsValueToPatientIssue(json: JsValue, + patientId: UuidId[Patient], + userId: xyz.driver.core.Id[User]): PatientIssue = { json.asJsObject.getFields("text") match { case Seq(text) => PatientIssue( diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordhistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordhistory.scala index 00071e1..8341f97 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordhistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordhistory.scala @@ -1,7 +1,7 @@ package xyz.driver.pdsuidomain.formats.json import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuidomain.entities._ object recordhistory { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala index 4745862..976a852 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/recordissue.scala @@ -4,7 +4,8 @@ import java.time.LocalDateTime import spray.json._ import xyz.driver.core.auth.User -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.core.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities._ object recordissue { @@ -40,7 +41,7 @@ object recordissue { def jsValueToRecordIssue(json: JsValue, recordId: LongId[MedicalRecord], - userId: StringId[User]): MedicalRecordIssue = json match { + userId: xyz.driver.core.Id[User]): MedicalRecordIssue = json match { case JsObject(fields) => val text = fields .get("text") diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala index f22401b..ac02070 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial.scala @@ -4,7 +4,7 @@ import java.time.{LocalDateTime, ZoneId, ZonedDateTime} import spray.json._ import xyz.driver.core.auth.User -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuidomain.entities._ @@ -65,16 +65,16 @@ object trial { .getOrElse(deserializationError(s"Trial create json object does not contain `status` field: $json")) val assignee = fields .get("assignee") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val previousStatus = fields .get("previousStatus") .flatMap(_.convertTo[Option[Trial.Status]]) val previousAssignee = fields .get("previousAssignee") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val lastActiveUser = fields .get("lastActiveUser") - .flatMap(_.convertTo[Option[StringId[User]]]) + .flatMap(_.convertTo[Option[xyz.driver.core.Id[User]]]) val lastUpdate = fields .get("lastUpdate") .map(_.convertTo[LocalDateTime]) diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala index 6185d5a..cc01dd1 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory.scala @@ -1,7 +1,7 @@ package xyz.driver.pdsuidomain.formats.json import spray.json._ -import xyz.driver.core.json.EnumJsonFormat +import xyz.driver.core.json._ import xyz.driver.pdsuidomain.entities._ object trialhistory { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala index c22fff3..bb431fe 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue.scala @@ -4,6 +4,7 @@ import java.time.LocalDateTime import spray.json._ import xyz.driver.core.auth.User +import xyz.driver.core.json._ import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuidomain.entities._ @@ -25,7 +26,7 @@ object trialissue { } } - def jsValueToTrialIssue(json: JsValue, trialId: StringId[Trial], userId: StringId[User]): TrialIssue = { + def jsValueToTrialIssue(json: JsValue, trialId: StringId[Trial], userId: xyz.driver.core.Id[User]): TrialIssue = { json.asJsObject.getFields("text", "evidence", "meta") match { case Seq(text, evidence, meta) => TrialIssue( diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentHistoryFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentHistoryFormatSuite.scala index e4a0733..4dc4d00 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentHistoryFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentHistoryFormatSuite.scala @@ -2,9 +2,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import spray.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities.DocumentHistory class DocumentHistoryFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class DocumentHistoryFormatSuite extends FlatSpec with Matchers { val documentHistory = DocumentHistory( id = LongId(10), documentId = LongId(1), - executor = StringId("userId-001"), + executor = xyz.driver.core.Id("userId-001"), state = DocumentHistory.State.Extract, action = DocumentHistory.Action.Start, created = LocalDateTime.parse("2017-08-10T18:00:00") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentIssueFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentIssueFormatSuite.scala index 7f34725..2ddd5e7 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentIssueFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/DocumentIssueFormatSuite.scala @@ -2,9 +2,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import spray.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities.DocumentIssue class DocumentIssueFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class DocumentIssueFormatSuite extends FlatSpec with Matchers { val documentIssue = DocumentIssue( id = LongId(10), documentId = LongId(1), - userId = StringId("userId-001"), + userId = xyz.driver.core.Id("userId-001"), lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00"), isDraft = false, text = "message text", @@ -31,7 +31,7 @@ class DocumentIssueFormatSuite extends FlatSpec with Matchers { val createDocumentIssueJson = """{"text":"message text","startPage":1.0,"endPage":2.0}""".parseJson val expectedCreatedDocumentIssue = documentIssue.copy(id = LongId(0), lastUpdate = LocalDateTime.MIN, isDraft = true) - val parsedCreateDocumentIssue = jsValueToDocumentIssue(createDocumentIssueJson, LongId(1), StringId("userId-001")) + val parsedCreateDocumentIssue = jsValueToDocumentIssue(createDocumentIssueJson, LongId(1), xyz.driver.core.Id("userId-001")) parsedCreateDocumentIssue should be(expectedCreatedDocumentIssue) val updateDocumentIssueJson = diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordHistoryFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordHistoryFormatSuite.scala index ca4058e..88240cd 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordHistoryFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordHistoryFormatSuite.scala @@ -2,9 +2,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import spray.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities.MedicalRecordHistory class MedicalRecordHistoryFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class MedicalRecordHistoryFormatSuite extends FlatSpec with Matchers { val recordHistory = MedicalRecordHistory( id = LongId(10), recordId = LongId(1), - executor = StringId("userId-001"), + executor = xyz.driver.core.Id("userId-001"), state = MedicalRecordHistory.State.Clean, action = MedicalRecordHistory.Action.Start, created = LocalDateTime.parse("2017-08-10T18:00:00") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordIssueFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordIssueFormatSuite.scala index c7c82a4..b93e2bd 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordIssueFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/MedicalRecordIssueFormatSuite.scala @@ -2,9 +2,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import spray.json._ +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities.MedicalRecordIssue class MedicalRecordIssueFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class MedicalRecordIssueFormatSuite extends FlatSpec with Matchers { val recordIssue = MedicalRecordIssue( id = LongId(10), recordId = LongId(1), - userId = StringId("userId-001"), + userId = xyz.driver.core.Id("userId-001"), lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00"), isDraft = false, text = "message text", @@ -30,7 +30,7 @@ class MedicalRecordIssueFormatSuite extends FlatSpec with Matchers { val createRecordIssueJson = """{"text":"message text","startPage":1.0,"endPage":2.0}""".parseJson val expectedCreatedRecordIssue = recordIssue.copy(id = LongId(0), lastUpdate = LocalDateTime.MIN, isDraft = true) - val parsedCreateRecordIssue = jsValueToRecordIssue(createRecordIssueJson, LongId(1), StringId("userId-001")) + val parsedCreateRecordIssue = jsValueToRecordIssue(createRecordIssueJson, LongId(1), xyz.driver.core.Id("userId-001")) parsedCreateRecordIssue should be(expectedCreatedRecordIssue) val updateRecordIssueJson = diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientHistoryFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientHistoryFormatSuite.scala index e46cf50..74f6f70 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientHistoryFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientHistoryFormatSuite.scala @@ -2,9 +2,9 @@ package xyz.driver.pdsuidomain.formats.json import java.time.LocalDateTime -import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} +import spray.json._ +import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuidomain.entities.PatientHistory class PatientHistoryFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class PatientHistoryFormatSuite extends FlatSpec with Matchers { val patientHistory = PatientHistory( id = LongId(10), patientId = UuidId("40892a07-c638-49d2-9795-1edfefbbcc7c"), - executor = StringId("userId-001"), + executor = xyz.driver.core.Id("userId-001"), state = PatientHistory.State.Verify, action = PatientHistory.Action.Start, created = LocalDateTime.parse("2017-08-10T18:00:00") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientIssueFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientIssueFormatSuite.scala index 0d56918..ee76094 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientIssueFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/PatientIssueFormatSuite.scala @@ -4,7 +4,7 @@ import java.time.LocalDateTime import spray.json._ import org.scalatest.{FlatSpec, Matchers} -import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} +import xyz.driver.pdsuicommon.domain.{LongId, UuidId} import xyz.driver.pdsuidomain.entities.PatientIssue class PatientIssueFormatSuite extends FlatSpec with Matchers { @@ -14,7 +14,7 @@ class PatientIssueFormatSuite extends FlatSpec with Matchers { val patientIssue = PatientIssue( id = LongId(10), patientId = UuidId("40892a07-c638-49d2-9795-1edfefbbcc7c"), - userId = StringId("userId-001"), + userId = xyz.driver.core.Id("userId-001"), lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00"), isDraft = false, text = "message text", @@ -29,7 +29,7 @@ class PatientIssueFormatSuite extends FlatSpec with Matchers { val expectedCreatedPatientIssue = patientIssue.copy(id = LongId(0), lastUpdate = LocalDateTime.MIN, isDraft = true) val parsedCreatePatientIssue = jsValueToPatientIssue(createPatientIssueJson, UuidId("40892a07-c638-49d2-9795-1edfefbbcc7c"), - StringId("userId-001")) + xyz.driver.core.Id("userId-001")) parsedCreatePatientIssue should be(expectedCreatedPatientIssue) val updatePatientIssueJson = diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialHistoryFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialHistoryFormatSuite.scala index aa0b404..c17327b 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialHistoryFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialHistoryFormatSuite.scala @@ -14,7 +14,7 @@ class TrialHistoryFormatSuite extends FlatSpec with Matchers { val trialHistory = TrialHistory( id = LongId(10), trialId = StringId("NCT000001"), - executor = StringId("userId-001"), + executor = xyz.driver.core.Id("userId-001"), state = TrialHistory.State.Summarize, action = TrialHistory.Action.Start, created = LocalDateTime.parse("2017-08-10T18:00:00") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialIssueFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialIssueFormatSuite.scala index 5c6aa8d..a3b5931 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialIssueFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/TrialIssueFormatSuite.scala @@ -14,7 +14,7 @@ class TrialIssueFormatSuite extends FlatSpec with Matchers { val trialIssue = TrialIssue( id = LongId(10), trialId = StringId("NCT000001"), - userId = StringId("userId-001"), + userId = xyz.driver.core.Id("userId-001"), lastUpdate = LocalDateTime.parse("2017-08-10T18:00:00"), isDraft = false, text = "message text", @@ -30,7 +30,7 @@ class TrialIssueFormatSuite extends FlatSpec with Matchers { val createTrialIssueJson = """{"text":"message text","evidence":"evidence","meta":"{}"}""".parseJson val expectedCreatedTrialIssue = trialIssue.copy(id = LongId(0), lastUpdate = LocalDateTime.MIN, isDraft = true) val parsedCreateTrialIssue = - jsValueToTrialIssue(createTrialIssueJson, StringId("NCT000001"), StringId("userId-001")) + jsValueToTrialIssue(createTrialIssueJson, StringId("NCT000001"), xyz.driver.core.Id("userId-001")) parsedCreateTrialIssue should be(expectedCreatedTrialIssue) val updateTrialIssueJson = -- cgit v1.2.3