From 91ac9c92f5b8232d22a41885b6d64686e22fcc3d Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Thu, 12 Oct 2017 16:48:47 +0700 Subject: Implemented format for EligibilityArmWithDiseases class; Fixed formats for other classes --- .../eligibilityarm/ApiCreateEligibilityArm.scala | 33 ++++++ .../eligibilityarm/ApiEligibilityCreateArm.scala | 33 ------ .../formats/json/sprayformats/criterion.scala | 4 +- .../formats/json/sprayformats/eligibilityarm.scala | 123 ++++++++++++++++----- .../formats/json/sprayformats/intervention.scala | 6 +- .../formats/json/sprayformats/slotarm.scala | 2 +- 6 files changed, 136 insertions(+), 65 deletions(-) create mode 100644 src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiCreateEligibilityArm.scala delete mode 100644 src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiEligibilityCreateArm.scala (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiCreateEligibilityArm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiCreateEligibilityArm.scala new file mode 100644 index 0000000..087fed5 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiCreateEligibilityArm.scala @@ -0,0 +1,33 @@ +package xyz.driver.pdsuidomain.formats.json.eligibilityarm + +import play.api.libs.json.{Format, Json} +import xyz.driver.entities.patient.CancerType +import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.pdsuidomain.entities.{EligibilityArm, EligibilityArmDisease, EligibilityArmWithDiseases} + +final case class ApiCreateEligibilityArm(name: String, trialId: String, diseases: Seq[String]) { + + def toDomain: EligibilityArmWithDiseases = { + val eligibilityArm = EligibilityArm( + id = LongId(0), + name = name, + trialId = StringId(trialId), + originalName = name + ) + + EligibilityArmWithDiseases( + eligibilityArm, + diseases.map { disease => + val condition = CancerType + .fromString(disease) + .getOrElse(throw new NoSuchElementException(s"unknown condition $disease")) + EligibilityArmDisease(eligibilityArm.id, condition) + } + ) + } +} + +object ApiCreateEligibilityArm { + + implicit val format: Format[ApiCreateEligibilityArm] = Json.format[ApiCreateEligibilityArm] +} diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiEligibilityCreateArm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiEligibilityCreateArm.scala deleted file mode 100644 index 087fed5..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/eligibilityarm/ApiEligibilityCreateArm.scala +++ /dev/null @@ -1,33 +0,0 @@ -package xyz.driver.pdsuidomain.formats.json.eligibilityarm - -import play.api.libs.json.{Format, Json} -import xyz.driver.entities.patient.CancerType -import xyz.driver.pdsuicommon.domain.{LongId, StringId} -import xyz.driver.pdsuidomain.entities.{EligibilityArm, EligibilityArmDisease, EligibilityArmWithDiseases} - -final case class ApiCreateEligibilityArm(name: String, trialId: String, diseases: Seq[String]) { - - def toDomain: EligibilityArmWithDiseases = { - val eligibilityArm = EligibilityArm( - id = LongId(0), - name = name, - trialId = StringId(trialId), - originalName = name - ) - - EligibilityArmWithDiseases( - eligibilityArm, - diseases.map { disease => - val condition = CancerType - .fromString(disease) - .getOrElse(throw new NoSuchElementException(s"unknown condition $disease")) - EligibilityArmDisease(eligibilityArm.id, condition) - } - ) - } -} - -object ApiCreateEligibilityArm { - - implicit val format: Format[ApiCreateEligibilityArm] = Json.format[ApiCreateEligibilityArm] -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala index a43e92a..52d82dc 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala @@ -10,7 +10,7 @@ object criterion { import DefaultJsonProtocol._ import common._ - implicit val criterionLabelWriter = new RootJsonWriter[CriterionLabel] { + implicit def criterionLabelWriter: RootJsonWriter[CriterionLabel] = new RootJsonWriter[CriterionLabel] { override def write(obj: CriterionLabel) = JsObject( "labelId" -> obj.labelId.toJson, "categoryId" -> obj.categoryId.toJson, @@ -103,7 +103,7 @@ object criterion { case _ => deserializationError(s"Expected Json Object as partial Criterion, but got $json") } - val richCriterionFormat = new RootJsonFormat[RichCriterion] { + implicit def richCriterionFormat: RootJsonFormat[RichCriterion] = new RootJsonFormat[RichCriterion] { override def write(obj: RichCriterion): JsValue = JsObject( "id" -> obj.criterion.id.toJson, diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala index acb790a..4b72096 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala @@ -1,44 +1,115 @@ package xyz.driver.pdsuidomain.formats.json.sprayformats import spray.json._ +import xyz.driver.entities.patient.CancerType +import xyz.driver.formats.json.patient._ import xyz.driver.pdsuicommon.domain.{LongId, StringId} -import xyz.driver.pdsuidomain.entities.{EligibilityArm, Trial} +import xyz.driver.pdsuidomain.entities._ object eligibilityarm { + import DefaultJsonProtocol._ import common._ - def applyUpdateToArm(json: JsValue, orig: EligibilityArm): EligibilityArm = json match { - case JsObject(fields) => - val name = fields - .get("name") - .map(_.convertTo[String]) - .getOrElse(deserializationError(s"Arm json object does not contain `name` field: $json")) - orig.copy(name = name) + private def deserializationErrorFieldMessage(field: String, json: JsValue)(implicit className: String) = { + deserializationError(s"$className json object do not contain '$field' field: $json") + } - case _ => deserializationError(s"Expected Json Object as partial Arm, but got $json") + private def deserializationErrorEntityMessage(json: JsValue)(implicit className: String) = { + deserializationError(s"Expected Json Object as $className, but got $json") } - def eligibilityArmFormat: RootJsonFormat[EligibilityArm] = new RootJsonFormat[EligibilityArm] { - override def write(obj: EligibilityArm): JsValue = - JsObject( - "id" -> obj.id.toJson, - "name" -> obj.name.toJson, - "originalName" -> obj.originalName.toJson, - "trialId" -> obj.trialId.toJson - ) - - override def read(json: JsValue): EligibilityArm = json.asJsObject.getFields("trialId", "name") match { - case Seq(trialId, name) => - EligibilityArm( - id = LongId(0), - name = name.convertTo[String], - trialId = trialId.convertTo[StringId[Trial]], - originalName = name.convertTo[String] + + implicit def eligibilityArmWithDiseasesWriter: RootJsonWriter[EligibilityArmWithDiseases] = + new RootJsonWriter[EligibilityArmWithDiseases] { + override def write(obj: EligibilityArmWithDiseases): JsValue = { + JsObject( + "id" -> obj.eligibilityArm.id.toJson, + "name" -> obj.eligibilityArm.name.toJson, + "originalName" -> obj.eligibilityArm.originalName.toJson, + "trialId" -> obj.eligibilityArm.trialId.toJson, + "diseases" -> obj.eligibilityArmDiseases.map(_.disease.toJson).toJson ) + } + } + + + implicit def eligibilityArmWithDiseasesReader: RootJsonReader[EligibilityArmWithDiseases] = { + new RootJsonReader[EligibilityArmWithDiseases] { + implicit val className: String = "create EligibilityArmWithDiseases" + + override def read(json: JsValue): EligibilityArmWithDiseases = { + json match { + case JsObject(fields) => + val name = fields + .get("name") + .map(_.convertTo[String]) + .getOrElse(deserializationErrorFieldMessage("name", json)) + + val trialId = fields + .get("trialId") + .map(_.convertTo[StringId[Trial]]) + .getOrElse(deserializationErrorFieldMessage("trialId", json)) + + val diseases = fields + .get("diseases") + .map(_.convertTo[Seq[String]]) + .getOrElse(deserializationErrorFieldMessage("diseases", json)) - case _ => deserializationError(s"Expected Json Object as Arm, but got $json") + + + val eligibilityArm = EligibilityArm( + id = LongId(0), + name = name, + trialId = trialId, + originalName = name + ) + + EligibilityArmWithDiseases( + eligibilityArm, + diseases.map { disease => + val condition = CancerType + .fromString(disease) + .getOrElse(throw new NoSuchElementException(s"unknown condition $disease")) + EligibilityArmDisease(eligibilityArm.id, condition) + } + ) + case _ => deserializationErrorEntityMessage(json) + } + } } } + def applyUpdateToEligibilityArmWithDiseases(json: JsValue, orig: EligibilityArmWithDiseases): EligibilityArmWithDiseases = { + implicit val className: String = "update EligibilityArmWithDiseases" + json match { + case JsObject(fields) => + val name = fields + .get("name") + .map(_.convertTo[String]) + .getOrElse(orig.eligibilityArm.name) + + val diseases = fields + .get("diseases") + .map(_.convertTo[Seq[CancerType]]) + .getOrElse(orig.eligibilityArmDiseases.map(_.disease)) + + orig.copy( + eligibilityArm = + orig + .eligibilityArm + .copy(name = name), + eligibilityArmDiseases = + orig + .eligibilityArmDiseases + .zip(diseases) + .map { + case (eligibilityArmDisease, disease) => + eligibilityArmDisease.copy(disease = disease) + } + ) + + case _ => deserializationErrorEntityMessage(json) + } + } } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala index 2ced434..0fcc61f 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala @@ -9,7 +9,7 @@ object intervention { import DefaultJsonProtocol._ import common._ - implicit val interventionFormat: JsonFormat[InterventionWithArms] = new RootJsonFormat[InterventionWithArms] { + implicit def interventionFormat: RootJsonFormat[InterventionWithArms] = new RootJsonFormat[InterventionWithArms] { override def write(obj: InterventionWithArms) = JsObject( "id" -> obj.intervention.id.toJson, @@ -120,8 +120,8 @@ object intervention { case _ => deserializationError(s"Expected Json Object as partial Intervention, but got $json") } - implicit val interventionTypeFormat: JsonFormat[InterventionType] = new RootJsonFormat[InterventionType] { - override def read(json: JsValue) = json match { + implicit def interventionTypeFormat: JsonFormat[InterventionType] = new RootJsonFormat[InterventionType] { + override def read(json: JsValue): InterventionType = json match { case JsObject(fields) => val name = fields .get("name") diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/slotarm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/slotarm.scala index 192bd6a..1d74916 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/slotarm.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/slotarm.scala @@ -19,7 +19,7 @@ object slotarm { case _ => deserializationError(s"Expected Json Object as partial Arm, but got $json") } - def slotArmFormat: RootJsonFormat[SlotArm] = new RootJsonFormat[SlotArm] { + implicit def slotArmFormat: RootJsonFormat[SlotArm] = new RootJsonFormat[SlotArm] { override def write(obj: SlotArm): JsValue = JsObject( "id" -> obj.id.toJson, -- cgit v1.2.3 From 6a925b07d0ffb084cb07051ed334ce17defab128 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Thu, 12 Oct 2017 16:49:49 +0700 Subject: Code is formatted --- .../formats/json/sprayformats/eligibilityarm.scala | 35 +++++++++------------- 1 file changed, 14 insertions(+), 21 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala index 4b72096..039e088 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/eligibilityarm.scala @@ -19,21 +19,19 @@ object eligibilityarm { deserializationError(s"Expected Json Object as $className, but got $json") } - implicit def eligibilityArmWithDiseasesWriter: RootJsonWriter[EligibilityArmWithDiseases] = new RootJsonWriter[EligibilityArmWithDiseases] { override def write(obj: EligibilityArmWithDiseases): JsValue = { JsObject( - "id" -> obj.eligibilityArm.id.toJson, - "name" -> obj.eligibilityArm.name.toJson, + "id" -> obj.eligibilityArm.id.toJson, + "name" -> obj.eligibilityArm.name.toJson, "originalName" -> obj.eligibilityArm.originalName.toJson, - "trialId" -> obj.eligibilityArm.trialId.toJson, - "diseases" -> obj.eligibilityArmDiseases.map(_.disease.toJson).toJson + "trialId" -> obj.eligibilityArm.trialId.toJson, + "diseases" -> obj.eligibilityArmDiseases.map(_.disease.toJson).toJson ) } } - implicit def eligibilityArmWithDiseasesReader: RootJsonReader[EligibilityArmWithDiseases] = { new RootJsonReader[EligibilityArmWithDiseases] { implicit val className: String = "create EligibilityArmWithDiseases" @@ -56,8 +54,6 @@ object eligibilityarm { .map(_.convertTo[Seq[String]]) .getOrElse(deserializationErrorFieldMessage("diseases", json)) - - val eligibilityArm = EligibilityArm( id = LongId(0), name = name, @@ -80,7 +76,8 @@ object eligibilityarm { } } - def applyUpdateToEligibilityArmWithDiseases(json: JsValue, orig: EligibilityArmWithDiseases): EligibilityArmWithDiseases = { + def applyUpdateToEligibilityArmWithDiseases(json: JsValue, + orig: EligibilityArmWithDiseases): EligibilityArmWithDiseases = { implicit val className: String = "update EligibilityArmWithDiseases" json match { case JsObject(fields) => @@ -95,18 +92,14 @@ object eligibilityarm { .getOrElse(orig.eligibilityArmDiseases.map(_.disease)) orig.copy( - eligibilityArm = - orig - .eligibilityArm - .copy(name = name), - eligibilityArmDiseases = - orig - .eligibilityArmDiseases - .zip(diseases) - .map { - case (eligibilityArmDisease, disease) => - eligibilityArmDisease.copy(disease = disease) - } + eligibilityArm = orig.eligibilityArm + .copy(name = name), + eligibilityArmDiseases = orig.eligibilityArmDiseases + .zip(diseases) + .map { + case (eligibilityArmDisease, disease) => + eligibilityArmDisease.copy(disease = disease) + } ) case _ => deserializationErrorEntityMessage(json) -- cgit v1.2.3 From f466bbbdb2cea1f64f7b3781795f890aaf390acf Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Fri, 13 Oct 2017 13:38:09 +0700 Subject: Fixed criterion and intervention formats --- .../formats/json/sprayformats/criterion.scala | 29 +++++++++++----------- .../formats/json/sprayformats/intervention.scala | 14 +++++------ 2 files changed, 21 insertions(+), 22 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala index 52d82dc..47a46d1 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala @@ -26,20 +26,21 @@ object criterion { case JsObject(fields) => val labelId = fields .get("labelId") - .map(_.convertTo[LongId[Label]]) + .flatMap(_.convertTo[Option[LongId[Label]]]) val categoryId = fields .get("categoryId") - .map(_.convertTo[LongId[LabelCategory]]) + .flatMap(_.convertTo[Option[LongId[LabelCategory]]]) val value = fields .get("value") - .map(_.convertTo[String] match { + .flatMap(_.convertTo[Option[String]]) + .map { case "Yes" => true - case "No" => false + case "No" => false case other => deserializationError(s"Unknown `value` of CriterionLabel object: expected `yes` or `no`, but got $other") - }) + } val isDefining = fields .get("isDefining") @@ -125,7 +126,7 @@ object criterion { val text = fields .get("text") - .map(_.convertTo[String]) + .flatMap(_.convertTo[Option[String]]) val isCompound = fields .get("isCompound") @@ -133,24 +134,22 @@ object criterion { val meta = fields .get("meta") - .map(_.convertTo[String]) - .getOrElse("") + .flatMap(_.convertTo[Option[String]]) val inclusion = fields .get("inclusion") - .map(_.convertTo[Option[Boolean]]) - .getOrElse(None) + .flatMap(_.convertTo[Option[Boolean]]) val arms = fields .get("arms") - .map(_.convertTo[List[LongId[EligibilityArm]]]) - .getOrElse(List.empty[LongId[EligibilityArm]]) + .map(_.convertTo[Seq[LongId[EligibilityArm]]]) + .getOrElse(Seq.empty[LongId[EligibilityArm]]) val labels = fields .get("labels") - .map(_.convertTo[List[JsValue]]) + .map(_.convertTo[Seq[JsValue]]) .map(_.map(l => jsValueToCriterionLabel(l, LongId(0)))) - .getOrElse(List.empty[CriterionLabel]) + .getOrElse(Seq.empty[CriterionLabel]) RichCriterion( criterion = Criterion( @@ -158,7 +157,7 @@ object criterion { trialId = trialId, text = text, isCompound = isCompound, - meta = meta, + meta = meta.getOrElse(""), inclusion = inclusion ), armIds = arms, diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala index 0fcc61f..f0d1a0a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala @@ -34,7 +34,7 @@ object intervention { val typeId = fields .get("typeId") - .map(_.convertTo[LongId[InterventionType]]) + .flatMap(_.convertTo[Option[LongId[InterventionType]]]) val name = fields .get("name") @@ -44,7 +44,6 @@ object intervention { val dosage = fields .get("dosage") .map(_.convertTo[String]) - .getOrElse("") val isActive = fields .get("isActive") @@ -52,23 +51,24 @@ object intervention { val deliveryMethod = fields .get("deliveryMethod") - .map(_.convertTo[String]) + .flatMap(_.convertTo[Option[String]]) val arms = fields .get("arms") - .map(_.convertTo[List[LongId[SlotArm]]].map(x => InterventionArm(armId = x, interventionId = LongId(0)))) + .map(_.convertTo[List[LongId[SlotArm]]]) + .map(_ map(x => InterventionArm(armId = x, interventionId = LongId(0L)))) .getOrElse(List.empty[InterventionArm]) InterventionWithArms( intervention = Intervention( - id = LongId(0), + id = LongId(0L), trialId = trialId, name = name, originalName = name, typeId = typeId, originalType = None, - dosage = dosage, - originalDosage = dosage, + dosage = dosage.getOrElse(""), + originalDosage = dosage.getOrElse(""), isActive = isActive, deliveryMethod = deliveryMethod ), -- cgit v1.2.3 From 2a1bba7d8b5fbc6a2d665c10ffea110bc7d89b46 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Fri, 13 Oct 2017 14:13:28 +0700 Subject: Added swagger annotations for new entities --- .../utils/CustomSwaggerJsonFormats.scala | 7 +++- .../pdsuidomain/fakes/entities/trialcuration.scala | 47 ++++++++++++++++++++++ .../formats/json/sprayformats/criterion.scala | 2 +- .../formats/json/sprayformats/intervention.scala | 2 +- 4 files changed, 55 insertions(+), 3 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala index 6d2a068..b718c1f 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala @@ -7,6 +7,8 @@ import spray.json.JsValue import xyz.driver.pdsuicommon.domain.{LongId, StringId, TextJson, UuidId} import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.formats.json.sprayformats.arm._ +import xyz.driver.pdsuidomain.formats.json.sprayformats.slotarm._ +import xyz.driver.pdsuidomain.formats.json.sprayformats.eligibilityarm._ import xyz.driver.pdsuidomain.formats.json.sprayformats.criterion._ import xyz.driver.pdsuidomain.formats.json.sprayformats.intervention._ import xyz.driver.pdsuidomain.formats.json.sprayformats.hypothesis._ @@ -54,7 +56,10 @@ object CustomSwaggerJsonFormats { classOf[Hypothesis] -> hypothesisFormat.write( xyz.driver.pdsuidomain.fakes.entities.trialcuration.nextHypothesis()), classOf[StudyDesign] -> studyDesignFormat.write( - xyz.driver.pdsuidomain.fakes.entities.trialcuration.nextStudyDesign()) + xyz.driver.pdsuidomain.fakes.entities.trialcuration.nextStudyDesign()), + classOf[EligibilityArmWithDiseases] -> eligibilityArmWithDiseasesWriter.write( + xyz.driver.pdsuidomain.fakes.entities.trialcuration.nextEligibilityArmWithDiseases()), + classOf[SlotArm] -> slotArmFormat.write(xyz.driver.pdsuidomain.fakes.entities.trialcuration.nextSlotArm()) ) // records-processing-service 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 ade0115..d323e86 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala @@ -1,15 +1,20 @@ package xyz.driver.pdsuidomain.fakes.entities +import xyz.driver.core.generators._ import xyz.driver.entities.labels.{Label, LabelCategory} +import xyz.driver.entities.patient.CancerType import xyz.driver.pdsuicommon.domain.{LongId, User} import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion object trialcuration { + import common._ import xyz.driver.core.generators import xyz.driver.pdsuidomain.entities.InterventionType._ + private val maxItemsInCollectionNumber: Int = 5 + def nextTrial(): Trial = Trial( id = nextStringId[Trial], externalId = nextUuidId[Trial], @@ -144,4 +149,46 @@ object trialcuration { SurgeryProcedure ) + EligibilityArmDisease + + def nextEligibilityArm(): EligibilityArm = EligibilityArm( + id = nextLongId, + name = nextString(), + originalName = nextString(), + trialId = nextStringId + ) + + def nextPatientCancerType(): CancerType = generators.oneOf[CancerType]( + CancerType.Lung, + CancerType.Breast, + CancerType.Prostate + ) + + def nextEligibilityArmDisease(): EligibilityArmDisease = EligibilityArmDisease( + eligibilityArmId = nextLongId, + disease = nextPatientCancerType() + ) + + private def nextEligibilityArmDiseaseCollection(count: Int): Seq[EligibilityArmDisease] = + Seq.fill(count)(nextEligibilityArmDisease()) + + def nextEligibilityArmWithDiseases(): EligibilityArmWithDiseases = { + val entity = nextEligibilityArm() + val id = entity.id + val collection = nextEligibilityArmDiseaseCollection( + nextInt(maxItemsInCollectionNumber, minValue = 0) + ).map(_.copy(eligibilityArmId = id)) + + EligibilityArmWithDiseases( + entity, + collection + ) + } + + def nextSlotArm(): SlotArm = SlotArm( + id = nextLongId, + name = nextString(), + originalName = nextString(), + trialId = nextStringId + ) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala index 47a46d1..dca107c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala @@ -37,7 +37,7 @@ object criterion { .flatMap(_.convertTo[Option[String]]) .map { case "Yes" => true - case "No" => false + case "No" => false case other => deserializationError(s"Unknown `value` of CriterionLabel object: expected `yes` or `no`, but got $other") } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala index f0d1a0a..bd68566 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala @@ -56,7 +56,7 @@ object intervention { val arms = fields .get("arms") .map(_.convertTo[List[LongId[SlotArm]]]) - .map(_ map(x => InterventionArm(armId = x, interventionId = LongId(0L)))) + .map(_ map (x => InterventionArm(armId = x, interventionId = LongId(0L)))) .getOrElse(List.empty[InterventionArm]) InterventionWithArms( -- cgit v1.2.3 From e9acf0e1f5d2adfcf38140e62151d718814391f7 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Fri, 13 Oct 2017 14:35:47 +0700 Subject: Corrected criterion implicit attrbutes --- .../xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala index dca107c..acf952d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala @@ -10,7 +10,7 @@ object criterion { import DefaultJsonProtocol._ import common._ - implicit def criterionLabelWriter: RootJsonWriter[CriterionLabel] = new RootJsonWriter[CriterionLabel] { + implicit val criterionLabelWriter: RootJsonWriter[CriterionLabel] = new RootJsonWriter[CriterionLabel] { override def write(obj: CriterionLabel) = JsObject( "labelId" -> obj.labelId.toJson, "categoryId" -> obj.categoryId.toJson, @@ -104,7 +104,7 @@ object criterion { case _ => deserializationError(s"Expected Json Object as partial Criterion, but got $json") } - implicit def richCriterionFormat: RootJsonFormat[RichCriterion] = new RootJsonFormat[RichCriterion] { + implicit val richCriterionFormat: RootJsonFormat[RichCriterion] = new RootJsonFormat[RichCriterion] { override def write(obj: RichCriterion): JsValue = JsObject( "id" -> obj.criterion.id.toJson, -- cgit v1.2.3 From fec0a0315ace61d63d05e1bcd71900777a229463 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Mon, 16 Oct 2017 16:14:17 +0700 Subject: Resolved conflicts on merge with master --- .../driver/pdsuidomain/formats/json/sprayformats/extracteddata.scala | 2 +- .../scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/extracteddata.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/extracteddata.scala index 5d5585a..66b710e 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/extracteddata.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/extracteddata.scala @@ -100,7 +100,7 @@ object extracteddata { implicit val extractedDataFormat: RootJsonFormat[RichExtractedData] = new RootJsonFormat[RichExtractedData] { override def write(richData: RichExtractedData): JsValue = JsObject( - "id" -> richData.extractedData.id.id.toJson, + "id" -> richData.extractedData.id.toJson, "documentId" -> richData.extractedData.documentId.toJson, "keywordId" -> richData.extractedData.keywordId.toJson, "evidence" -> richData.extractedData.evidenceText.toJson, 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 e8c0b94..eac5ea7 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 @@ -160,7 +160,7 @@ object record { new RootJsonFormat[MedicalRecord] { override def write(record: MedicalRecord): JsValue = JsObject( - "id" -> record.id.id.toJson, + "id" -> record.id.toJson, "patientId" -> record.patientId.toJson, "caseId" -> record.caseId.toJson, "disease" -> record.disease.toJson, -- cgit v1.2.3 From d96c7fbd36cdfe5d0fba702986ece4d0e1b351ed Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 17 Oct 2017 16:35:05 +0700 Subject: Code is formatted --- .../pdsuicommon/utils/CustomSwaggerJsonFormats.scala | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/main/scala') diff --git a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala index 55311ac..d2e70f2 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala @@ -65,16 +65,16 @@ object CustomSwaggerJsonFormats { ) ++ customCommonProperties val customTrialCurationObjectsExamples = immutable.Map[Class[_], JsValue]( - classOf[Trial] -> trialWriter.write(nextTrial()), - classOf[Arm] -> armFormat.write(nextArm()), - classOf[TrialHistory] -> trialHistoryFormat.write(nextTrialHistory()), - classOf[TrialIssue] -> trialIssueWriter.write(nextTrialIssue()), - classOf[RichCriterion] -> richCriterionFormat.write(nextRichCriterion()), - classOf[InterventionWithArms] -> interventionFormat.write(nextInterventionWithArms()), - classOf[InterventionType] -> interventionTypeFormat.write(nextInterventionType()), - classOf[Hypothesis] -> hypothesisFormat.write(nextHypothesis()), - classOf[StudyDesign] -> studyDesignFormat.write(nextStudyDesign()), - classOf[ExportTrialWithLabels] -> trialWithLabelsFormat.write(export.nextExportTrialWithLabels()), + classOf[Trial] -> trialWriter.write(nextTrial()), + classOf[Arm] -> armFormat.write(nextArm()), + classOf[TrialHistory] -> trialHistoryFormat.write(nextTrialHistory()), + classOf[TrialIssue] -> trialIssueWriter.write(nextTrialIssue()), + classOf[RichCriterion] -> richCriterionFormat.write(nextRichCriterion()), + classOf[InterventionWithArms] -> interventionFormat.write(nextInterventionWithArms()), + classOf[InterventionType] -> interventionTypeFormat.write(nextInterventionType()), + classOf[Hypothesis] -> hypothesisFormat.write(nextHypothesis()), + classOf[StudyDesign] -> studyDesignFormat.write(nextStudyDesign()), + classOf[ExportTrialWithLabels] -> trialWithLabelsFormat.write(export.nextExportTrialWithLabels()), classOf[EligibilityArmWithDiseases] -> eligibilityArmWithDiseasesWriter.write(nextEligibilityArmWithDiseases()), classOf[SlotArm] -> slotArmFormat.write(nextSlotArm()) ) -- cgit v1.2.3 From 9997ad1a778d6ed32f5dd90634be371986e4cca9 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 17 Oct 2017 16:43:15 +0700 Subject: Removed unused import --- src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/scala') 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 e618305..84dcb88 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/trialcuration.scala @@ -2,7 +2,6 @@ package xyz.driver.pdsuidomain.fakes.entities import xyz.driver.core.generators._ import xyz.driver.entities.labels.{Label, LabelCategory} -import xyz.driver.entities.patient.CancerType import xyz.driver.pdsuicommon.domain.{LongId, User} import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion -- cgit v1.2.3