aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandr <ognelisar@gmail.com>2017-09-21 16:42:49 +0700
committerAleksandr <ognelisar@gmail.com>2017-09-21 16:42:49 +0700
commit8166ef497437567c8e7aaa9b2a8d6482752c017b (patch)
tree047fd3220a87fc40afe1ee184451a15b5781cb3a
parentc466ce359ec923d8c1f9a8188191ecee8085312c (diff)
downloadrest-query-8166ef497437567c8e7aaa9b2a8d6482752c017b.tar.gz
rest-query-8166ef497437567c8e7aaa9b2a8d6482752c017b.tar.bz2
rest-query-8166ef497437567c8e7aaa9b2a8d6482752c017b.zip
Fixed meta attribute filling of MedicalRecord when one transforms it from ApiRecord; Fixed FuzzyValue fromString method: on proviedstring it transformes the string to lower case and capitalize it
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/domain/FuzzyValue.scala31
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala94
2 files changed, 73 insertions, 52 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/domain/FuzzyValue.scala b/src/main/scala/xyz/driver/pdsuicommon/domain/FuzzyValue.scala
index 4e98f40..b0ee436 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/domain/FuzzyValue.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/domain/FuzzyValue.scala
@@ -10,21 +10,34 @@ object FuzzyValue {
case object No extends FuzzyValue
case object Maybe extends FuzzyValue
- val All: Set[FuzzyValue] = Set(Yes, No, Maybe)
+ private val yes = "Yes"
+ private val no = "No"
+ private val maybe = "Maybe"
- def fromBoolean(x: Boolean): FuzzyValue = if (x) Yes else No
+ val All: Set[FuzzyValue] = {
+ Set(Yes, No, Maybe)
+ }
+
+ def fromBoolean(x: Boolean): FuzzyValue = {
+ if (x) Yes else No
+ }
+
+ implicit def toPhiString(x: FuzzyValue): PhiString = {
+ Unsafe(Utils.getClassSimpleName(x.getClass))
+ }
- implicit def toPhiString(x: FuzzyValue): PhiString = Unsafe(Utils.getClassSimpleName(x.getClass))
val fromString: PartialFunction[String, FuzzyValue] = {
- case "Yes" => Yes
- case "No" => No
- case "Maybe" => Maybe
+ case fuzzy => fuzzy.toLowerCase.capitalize match {
+ case `yes` => Yes
+ case `no` => No
+ case `maybe` => Maybe
+ }
}
def valueToString(x: FuzzyValue): String = x match {
- case Yes => "Yes"
- case No => "No"
- case Maybe => "Maybe"
+ case Yes => `yes`
+ case No => `no`
+ case Maybe => `maybe`
}
}
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 b255892..6e85021 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
@@ -13,49 +13,11 @@ import play.api.libs.json._
import xyz.driver.pdsuicommon.json.JsonSerializer
import xyz.driver.pdsuicommon.domain.{LongId, StringId, TextJson, UuidId}
-final case class ApiRecord(id: Long,
- patientId: String,
- caseId: Option[String],
- disease: String,
- physician: Option[String],
- lastUpdate: ZonedDateTime,
- status: String,
- previousStatus: Option[String],
- assignee: Option[String],
- previousAssignee: Option[String],
- lastActiveUser: Option[String],
- requestId: UUID,
- meta: String) {
-
- private def extractStatus(status: String): Status =
- Status
- .fromString(status)
- .getOrElse(
- throw new NoSuchElementException(s"Status $status not found")
- )
-
- def toDomain = MedicalRecord(
- id = LongId(this.id),
- status = extractStatus(this.status),
- previousStatus = this.previousStatus.map(extractStatus),
- assignee = this.assignee.map(StringId(_)),
- previousAssignee = this.previousAssignee.map(StringId(_)),
- lastActiveUserId = this.lastActiveUser.map(StringId(_)),
- patientId = UuidId(patientId),
- requestId = RecordRequestId(this.requestId),
- disease = this.disease,
- caseId = caseId.map(CaseId(_)),
- physician = this.physician,
- meta = Some(TextJson(JsonSerializer.deserialize[List[MedicalRecord.Meta]](this.meta))),
- predictedMeta = None,
- predictedDocuments = None,
- lastUpdate = this.lastUpdate.toLocalDateTime()
- )
-
-}
-
object ApiRecord {
+ private val emptyMeta: String =
+ "[]"
+
private val statusFormat = Format(
Reads.StringReads.filter(ValidationError("unknown status")) {
case x if MedicalRecordStatus.statusFromString.isDefinedAt(x) => true
@@ -80,7 +42,7 @@ object ApiRecord {
(JsPath \ "meta").format(Format(Reads { x =>
JsSuccess(Json.stringify(x))
}, Writes[String](Json.parse)))
- )(ApiRecord.apply, unlift(ApiRecord.unapply))
+ )(ApiRecord.apply, unlift(ApiRecord.unapply))
def fromDomain(record: MedicalRecord) = ApiRecord(
id = record.id.id,
@@ -95,6 +57,52 @@ 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("[]")
+ meta = record.meta.map(x => JsonSerializer.serialize(x.content)).getOrElse(emptyMeta)
)
}
+
+final case class ApiRecord(id: Long,
+ patientId: String,
+ caseId: Option[String],
+ disease: String,
+ physician: Option[String],
+ lastUpdate: ZonedDateTime,
+ status: String,
+ previousStatus: Option[String],
+ assignee: Option[String],
+ previousAssignee: Option[String],
+ lastActiveUser: Option[String],
+ requestId: UUID,
+ meta: String) {
+
+ private def extractStatus(status: String): Status =
+ Status
+ .fromString(status)
+ .getOrElse(
+ throw new NoSuchElementException(s"Status $status not found")
+ )
+
+ def toDomain = MedicalRecord(
+ id = LongId(this.id),
+ status = extractStatus(this.status),
+ previousStatus = this.previousStatus.map(extractStatus),
+ assignee = this.assignee.map(StringId(_)),
+ previousAssignee = this.previousAssignee.map(StringId(_)),
+ lastActiveUserId = this.lastActiveUser.map(StringId(_)),
+ patientId = UuidId(patientId),
+ requestId = RecordRequestId(this.requestId),
+ disease = this.disease,
+ caseId = caseId.map(CaseId(_)),
+ physician = this.physician,
+ meta = {
+ if (this.meta == ApiRecord.emptyMeta) {
+ None
+ } else {
+ Some(TextJson(JsonSerializer.deserialize[List[MedicalRecord.Meta]](this.meta)))
+ }
+ },
+ predictedMeta = None,
+ predictedDocuments = None,
+ lastUpdate = this.lastUpdate.toLocalDateTime()
+ )
+} \ No newline at end of file