From d93f220502fd2aa20a2b4bc4b5f1d58b4089bdad Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Tue, 10 Oct 2017 13:47:28 +0700 Subject: PDSUI-2265 Added total_pages field to MedicalRecord --- .../xyz/driver/pdsuidomain/entities/MedicalRecord.scala | 3 ++- .../pdsuidomain/fakes/entities/rep/MedicalRecordGen.scala | 3 ++- .../pdsuidomain/formats/json/record/ApiCreateRecord.scala | 3 ++- .../driver/pdsuidomain/formats/json/record/ApiRecord.scala | 12 ++++++++---- .../pdsuidomain/formats/json/sprayformats/record.scala | 6 ++++-- .../formats/json/sprayformats/ListResponseSuite.scala | 5 +++-- .../formats/json/sprayformats/MedicalRecordFormatSuite.scala | 8 +++++--- 7 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala index ed35db4..591b8bd 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/MedicalRecord.scala @@ -156,7 +156,8 @@ final case class MedicalRecord(id: LongId[MedicalRecord], caseId: Option[CaseId], physician: Option[String], meta: Option[TextJson[List[Meta]]], - lastUpdate: LocalDateTime) { + lastUpdate: LocalDateTime, + totalPages: Int) { import MedicalRecord.Status._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/MedicalRecordGen.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/MedicalRecordGen.scala index 254968a..eb475b4 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/MedicalRecordGen.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/MedicalRecordGen.scala @@ -93,7 +93,8 @@ object MedicalRecordGen { caseId = nextOption(CaseId(generators.nextString())), physician = nextOption(generators.nextString()), meta = nextOption(nextMedicalRecordMetasJson()), - lastUpdate = nextLocalDateTime + lastUpdate = nextLocalDateTime, + totalPages = nextInt(1, 10) ) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiCreateRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiCreateRecord.scala index 1f8c683..fd14f7c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiCreateRecord.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiCreateRecord.scala @@ -22,7 +22,8 @@ final case class ApiCreateRecord(disease: String, patientId: String, requestId: caseId = None, physician = None, meta = None, - lastUpdate = LocalDateTime.now() + lastUpdate = LocalDateTime.now(), + totalPages = 0 ) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala index fc0a2e7..00441a1 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala @@ -41,7 +41,8 @@ object ApiRecord { (JsPath \ "requestId").format[UUID] and (JsPath \ "meta").format(Format(Reads { x => JsSuccess(Json.stringify(x)) - }, Writes[String](Json.parse))) + }, Writes[String](Json.parse))) and + (JsPath \ "totalPages").format[Int] )(ApiRecord.apply, unlift(ApiRecord.unapply)) def fromDomain(record: MedicalRecord) = ApiRecord( @@ -57,7 +58,8 @@ object ApiRecord { previousAssignee = record.previousAssignee.map(_.id), lastActiveUser = record.lastActiveUserId.map(_.id), requestId = record.requestId.id, - meta = record.meta.map(x => JsonSerializer.serialize(x.content)).getOrElse(emptyMeta) + meta = record.meta.map(x => JsonSerializer.serialize(x.content)).getOrElse(emptyMeta), + totalPages = record.totalPages ) } @@ -73,7 +75,8 @@ final case class ApiRecord(id: Long, previousAssignee: Option[String], lastActiveUser: Option[String], requestId: UUID, - meta: String) { + meta: String, + totalPages: Int) { private def extractStatus(status: String): Status = Status @@ -101,6 +104,7 @@ final case class ApiRecord(id: Long, Some(TextJson(JsonSerializer.deserialize[List[MedicalRecord.Meta]](this.meta))) } }, - lastUpdate = this.lastUpdate.toLocalDateTime() + lastUpdate = this.lastUpdate.toLocalDateTime, + totalPages = 0 ) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala index 65687c1..e8c0b94 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala @@ -172,7 +172,8 @@ object record { "requestId" -> record.requestId.toJson, "meta" -> record.meta.getOrElse(TextJson[List[Meta]](List.empty)).toJson, "lastActiveUser" -> record.lastActiveUserId.toJson, - "lastUpdate" -> record.lastUpdate.toJson + "lastUpdate" -> record.lastUpdate.toJson, + "totalPages" -> record.totalPages.toJson ) override def read(json: JsValue): MedicalRecord = json match { @@ -205,7 +206,8 @@ object record { caseId = None, physician = None, meta = None, - lastUpdate = LocalDateTime.now() + lastUpdate = LocalDateTime.now(), + totalPages = 0 ) case _ => deserializationError(s"Expected Json Object as MedicalRecord, but got $json") diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponseSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponseSuite.scala index 2e7481a..65024a3 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponseSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/ListResponseSuite.scala @@ -83,13 +83,14 @@ class ListResponseSuite extends FlatSpec with Matchers { disease = "Breast", requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), caseId = None, - patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343") + patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343"), + totalPages = 10 ) val recordJsonAsString = """{"id":1,"status":"New","assignee":null,"previousStatus":null,"previousAssignee":null,"lastActiveUser":null, "lastUpdate":"2017-08-10T18:00Z","meta":[],"patientId":"748b5884-3528-4cb9-904b-7a8151d6e343","caseId":null, - "requestId":"7b54a75d-4197-4b27-9045-b9b6cb131be9","disease":"Breast","physician":"physician"}""" + "requestId":"7b54a75d-4197-4b27-9045-b9b6cb131be9","disease":"Breast","physician":"physician","totalPages":10}""" val meta = ListResponse.Meta( diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/MedicalRecordFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/MedicalRecordFormatSuite.scala index dd074e5..90d5b6e 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/MedicalRecordFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/MedicalRecordFormatSuite.scala @@ -26,14 +26,15 @@ class MedicalRecordFormatSuite extends FlatSpec with Matchers { disease = "Breast", requestId = RecordRequestId(UUID.fromString("7b54a75d-4197-4b27-9045-b9b6cb131be9")), caseId = None, - patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343") + patientId = UuidId("748b5884-3528-4cb9-904b-7a8151d6e343"), + totalPages = 10 ) val writtenJson = recordFormat.write(orig) writtenJson should be ( """{"id":1,"status":"New","assignee":null,"previousStatus":null,"previousAssignee":null,"lastActiveUser":null, "lastUpdate":"2017-08-10T18:00Z","meta":[],"patientId":"748b5884-3528-4cb9-904b-7a8151d6e343","caseId":null, - "requestId":"7b54a75d-4197-4b27-9045-b9b6cb131be9","disease":"Breast","physician":"physician"}""".parseJson) + "requestId":"7b54a75d-4197-4b27-9045-b9b6cb131be9","disease":"Breast","physician":"physician","totalPages":10}""".parseJson) val createRecordJson = """{"disease":"Breast","patientId":"748b5884-3528-4cb9-904b-7a8151d6e343","requestId":"7b54a75d-4197-4b27-9045-b9b6cb131be9"}""".parseJson @@ -50,7 +51,8 @@ class MedicalRecordFormatSuite extends FlatSpec with Matchers { caseId = None, physician = None, meta = None, - lastUpdate = LocalDateTime.now() + lastUpdate = LocalDateTime.now(), + totalPages = 0 ) val parsedCreatedRecord = recordFormat.read(createRecordJson).copy(lastUpdate = expectedCreatedRecord.lastUpdate) parsedCreatedRecord should be(expectedCreatedRecord) -- cgit v1.2.3 From 3ad026d3de39a0e04f5f1ea32081d49d9cda21fa Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Tue, 10 Oct 2017 18:24:20 +0700 Subject: PDSUI-2265 Added 'Error' to MedicalRecordService.CreateReply --- .../scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala index 7a0502b..ebcb0f9 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/MedicalRecordService.scala @@ -56,7 +56,11 @@ object MedicalRecordService { sealed trait CreateReply object CreateReply { + type Error = CreateReply with DomainError + final case class Created(x: MedicalRecord) extends CreateReply + + final case class CommonError(userMessage: String) extends CreateReply with DomainError } sealed trait UpdateReply -- cgit v1.2.3