diff options
author | vlad <vlad@driver.xyz> | 2017-06-27 17:13:02 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-06-27 17:13:02 -0700 |
commit | 5832f63b84d7388441d1200f2442dc1e9de0225c (patch) | |
tree | 32f63acdc920c14effc3d0d2822c05c125ad49e4 /src/main/scala/xyz/driver/pdsuidomain/entities | |
parent | 9dd50590d4c8f8b9442d7c21ddd1def9dd453d5e (diff) | |
download | rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.gz rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.bz2 rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.zip |
All PDS UI domain models, API case classes, service traits and necessary utils moved to pdsui-commonv0.1.11
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/entities')
15 files changed, 161 insertions, 302 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Arm.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Arm.scala index 70b84ff..2190b8d 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Arm.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Arm.scala @@ -5,11 +5,11 @@ import java.time.LocalDateTime import xyz.driver.pdsuicommon.domain.{LongId, StringId} import xyz.driver.pdsuicommon.logging._ -case class Arm(id: LongId[Arm], - name: String, - originalName: String, - trialId: StringId[Trial], - deleted: Option[LocalDateTime] = None) +final case class Arm(id: LongId[Arm], + name: String, + originalName: String, + trialId: StringId[Trial], + deleted: Option[LocalDateTime] = None) object Arm { diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala index 19c0021..5af00bc 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala @@ -34,7 +34,7 @@ object DocumentType { object Document { - case class Meta(predicted: Option[Boolean], startPage: Double, endPage: Double) { + final case class Meta(predicted: Option[Boolean], startPage: Double, endPage: Double) { /** * Return a regular meta: this meta is considered as not predicted @@ -121,20 +121,20 @@ object Document { } @JsonIgnoreProperties(value = Array("valid")) -case class Document(id: LongId[Document] = LongId(0L), - status: Document.Status, - previousStatus: Option[Document.Status], - assignee: Option[LongId[User]], - previousAssignee: Option[LongId[User]], - recordId: LongId[MedicalRecord], - physician: Option[String], - typeId: Option[LongId[DocumentType]], // not null - providerName: Option[String], // not null - providerTypeId: Option[LongId[ProviderType]], // not null - meta: Option[TextJson[Meta]], // not null - startDate: Option[LocalDate], // not null - endDate: Option[LocalDate], - lastUpdate: LocalDateTime) { +final case class Document(id: LongId[Document] = LongId(0L), + status: Document.Status, + previousStatus: Option[Document.Status], + assignee: Option[LongId[User]], + previousAssignee: Option[LongId[User]], + recordId: LongId[MedicalRecord], + physician: Option[String], + typeId: Option[LongId[DocumentType]], // not null + providerName: Option[String], // not null + providerTypeId: Option[LongId[ProviderType]], // not null + meta: Option[TextJson[Meta]], // not null + startDate: Option[LocalDate], // not null + endDate: Option[LocalDate], + lastUpdate: LocalDateTime) { import Document.Status._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala index bc80ce3..93262a4 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Patient.scala @@ -50,17 +50,17 @@ object Patient { } } -case class Patient(id: UuidId[Patient], - status: Patient.Status, - name: String, - dob: LocalDate, - assignee: Option[LongId[User]], - previousStatus: Option[Patient.Status], - previousAssignee: Option[LongId[User]], - isUpdateRequired: Boolean, - condition: String, - orderId: PatientOrderId, - lastUpdate: LocalDateTime) { +final case class Patient(id: UuidId[Patient], + status: Patient.Status, + name: String, + dob: LocalDate, + assignee: Option[LongId[User]], + previousStatus: Option[Patient.Status], + previousAssignee: Option[LongId[User]], + isUpdateRequired: Boolean, + condition: String, + orderId: PatientOrderId, + lastUpdate: LocalDateTime) { import Patient.Status._ diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHypothesis.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHypothesis.scala index 146b1c3..23bb546 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHypothesis.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientHypothesis.scala @@ -11,8 +11,8 @@ object PatientHypothesis { } } -case class PatientHypothesis(id: UuidId[PatientHypothesis], - patientId: UuidId[Patient], - hypothesisId: UuidId[Hypothesis], - rationale: Option[String], - matchedTrials: Long) +final case class PatientHypothesis(id: UuidId[PatientHypothesis], + patientId: UuidId[Patient], + hypothesisId: UuidId[Hypothesis], + rationale: Option[String], + matchedTrials: Long) diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala index 63d38f8..633a347 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/PatientLabel.scala @@ -29,10 +29,10 @@ object PatientLabelEvidence { } } -case class PatientLabelEvidence(id: LongId[PatientLabelEvidence], - patientLabelId: LongId[PatientLabel], - value: FuzzyValue, - evidenceText: String, - reportId: Option[UuidId[DirectReport]], - documentId: Option[LongId[Document]], - evidenceId: Option[LongId[ExtractedData]]) +final case class PatientLabelEvidence(id: LongId[PatientLabelEvidence], + patientLabelId: LongId[PatientLabel], + value: FuzzyValue, + evidenceText: String, + reportId: Option[UuidId[DirectReport]], + documentId: Option[LongId[Document]], + evidenceId: Option[LongId[ExtractedData]]) diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientLabel.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientLabel.scala index 052b2fa..e7956a8 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientLabel.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/RawPatientLabel.scala @@ -5,19 +5,19 @@ import java.time.LocalDate import xyz.driver.pdsuicommon.domain.{FuzzyValue, LongId, UuidId} import xyz.driver.pdsuicommon.logging._ -case class RawPatientLabel(patientId: UuidId[Patient], - labelId: LongId[Label], - label: String, - value: FuzzyValue, - evidenceId: LongId[ExtractedData], - evidenceText: String, - disease: String, - documentId: LongId[Document], - requestId: RecordRequestId, - documentType: String, - providerType: String, - startDate: LocalDate, - endDate: Option[LocalDate]) +final case class RawPatientLabel(patientId: UuidId[Patient], + labelId: LongId[Label], + label: String, + value: FuzzyValue, + evidenceId: LongId[ExtractedData], + evidenceText: String, + disease: String, + documentId: LongId[Document], + requestId: RecordRequestId, + documentType: String, + providerType: String, + startDate: LocalDate, + endDate: Option[LocalDate]) object RawPatientLabel { @@ -29,5 +29,4 @@ object RawPatientLabel { phi"documentType=${Unsafe(documentType)}, providerType=${Unsafe(providerType)}, " + phi"startDate=$startDate, endDate=$endDate)" } - } diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/ScrapedTrial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/ScrapedTrial.scala new file mode 100644 index 0000000..40e84c9 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/ScrapedTrial.scala @@ -0,0 +1,105 @@ +package xyz.driver.pdsuidomain.entities + +import java.time.LocalDateTime +import java.util.UUID + +import xyz.driver.pdsuicommon.logging._ +import xyz.driver.pdsuicommon.domain.UuidId + +final case class ScrapedStudyDesign(value: String) + +final case class ScrapedOverall(affiliation: String, + status: String, + facilityName: Option[String], + firstName: Option[String], + lastName: Option[String], + phone: Option[String], + phoneExt: Option[String], + email: Option[String], + isBackup: Boolean) + +final case class ScrapedLocationContact(firstName: Option[String], + lastName: Option[String], + phone: Option[String], + phoneExt: Option[String], + email: Option[String], + isBackup: Boolean) + +final case class ScrapedLocation(id: UuidId[ScrapedLocation], + createdAt: LocalDateTime, + facilityName: Option[String], + city: Option[String], + state: Option[String], + zip: Option[String], + country: Option[String], + latitude: Option[Double], + longitude: Option[Double], + preferredName: Option[String], + partnershipStatus: Option[String], + lastReviewed: LocalDateTime, + contacts: Set[ScrapedLocationContact]) + +final case class ScrapedInterventionType(value: String) + +final case class ScrapedIntervention(name: String, + kind: ScrapedInterventionType, + description: Option[String], + isSynonym: Boolean) + +object ScrapedIntervention { + + implicit def toPhiString(x: ScrapedIntervention): PhiString = phi"ScrapedIntervention(${Unsafe(x.name)})" +} + +final case class ScrapedArm(name: String, + kind: Option[String], + interventions: Set[ScrapedIntervention]) + +object ScrapedArm { + + implicit def toPhiString(x: ScrapedArm): PhiString = { + import x._ + phi"ScrapedArm(name=${Unsafe(name)}, inverventions=$interventions)" + } +} + +final case class ScrapedTrialChecksum(eligibilityCriteria: String, + briefSummary: String, + detailedDescription: String, + armDescription: String) + +object ScrapedTrialChecksum { + + implicit def toPhiString(x: ScrapedTrialChecksum): PhiString = { + import x._ + phi"ScrapedTrialChecksum(eligibilityCriteria=${Unsafe(eligibilityCriteria)}, briefSummary=${Unsafe(briefSummary)}, " + + phi"detailedDescription=${Unsafe(detailedDescription)}, armDescription=${Unsafe(armDescription)}" + } +} + +object ScrapedTrial { + + implicit def toPhiString(x: ScrapedTrial): PhiString = { + import x._ + phi"ScrapedTrial(rawId=$rawId, nctId=${Unsafe(nctId)}, " + + phi"location.size=${Unsafe(locations.size)}, arms=$arms, checksum=$checksum)" + } +} + +final case class ScrapedTrial(rawId: UuidId[ScrapedTrial], + createdAt: LocalDateTime, + disease: String, + nctId: String, + nctUuid: UUID, + title: Option[String], + startDate: Option[LocalDateTime], + phase: String, + studyDesign: Option[ScrapedStudyDesign], + overall: Set[ScrapedOverall], + locations: Set[ScrapedLocation], + // // see ClinicalTrialRaw + // trialHtml: String, + // eligibilityText: String, + lastReviewed: LocalDateTime, + arms: Set[ScrapedArm], + checksum: ScrapedTrialChecksum) diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabel.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabel.scala deleted file mode 100644 index 3b7a6ad..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabel.scala +++ /dev/null @@ -1,28 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.patient - -import xyz.driver.pdsuicommon.domain.LongId -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{Label, RawPatientLabel} - -case class ExportPatientLabel(id: LongId[Label], name: String, evidences: List[ExportPatientLabelEvidence]) - -object ExportPatientLabel extends PhiLogging { - - implicit def toPhiString(x: ExportPatientLabel): PhiString = { - import x._ - phi"ExportPatientLabel(id=$id, evidences=$evidences)" - } - - def fromRaw(labelId: LongId[Label], rawPatientLabels: List[RawPatientLabel]): ExportPatientLabel = { - val firstLabel = rawPatientLabels.headOption - if (firstLabel.isEmpty) { - logger.warn(phi"rawPatientLabels is empty, labelId: $labelId") - } - - ExportPatientLabel( - id = labelId, - name = firstLabel.map(_.label).getOrElse(""), - evidences = rawPatientLabels.map(ExportPatientLabelEvidence.fromRaw) - ) - } -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidence.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidence.scala deleted file mode 100644 index ff0fb6c..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidence.scala +++ /dev/null @@ -1,32 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.patient - -import xyz.driver.pdsuicommon.domain.{FuzzyValue, LongId} -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{ExtractedData, RawPatientLabel} - -case class ExportPatientLabelEvidence(id: LongId[ExtractedData], - value: FuzzyValue, - evidenceText: String, - document: ExportPatientLabelEvidenceDocument) - -object ExportPatientLabelEvidence { - - implicit def toPhiString(x: ExportPatientLabelEvidence): PhiString = { - import x._ - phi"ExportPatientLabelEvidence(id=${Unsafe(id)}, value=$value, " + - phi"evidenceText=${Unsafe(evidenceText)}, document=$document)" - } - - def fromRaw(x: RawPatientLabel) = ExportPatientLabelEvidence( - id = x.evidenceId, - value = x.value, - evidenceText = x.evidenceText, - document = ExportPatientLabelEvidenceDocument( - x.documentId, - x.requestId, - x.documentType, - x.providerType, - x.startDate - ) - ) -} 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 deleted file mode 100644 index 978c4b8..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientLabelEvidenceDocument.scala +++ /dev/null @@ -1,30 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.patient - -import java.time.LocalDate - -import xyz.driver.pdsuicommon.domain.LongId -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{Document, RawPatientLabel, RecordRequestId} - -case class ExportPatientLabelEvidenceDocument(documentId: LongId[Document], - requestId: RecordRequestId, - documentType: String, - providerType: String, - date: LocalDate) - -object ExportPatientLabelEvidenceDocument extends PhiLogging { - - implicit def toPhiString(x: ExportPatientLabelEvidenceDocument): PhiString = { - import x._ - phi"ExportPatientLabelEvidenceDocument(documentId=$documentId, requestId=$requestId, " + - phi"documentType=${Unsafe(documentType)}, providerType=${Unsafe(providerType)}, date=$date)" - } - - def fromRaw(x: RawPatientLabel) = ExportPatientLabelEvidenceDocument( - documentId = x.documentId, - requestId = x.requestId, - documentType = x.documentType, - providerType = x.providerType, - date = x.startDate - ) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientWithLabels.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientWithLabels.scala deleted file mode 100644 index 718255b..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/patient/ExportPatientWithLabels.scala +++ /dev/null @@ -1,25 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.patient - -import xyz.driver.pdsuicommon.domain.UuidId -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{Patient, RawPatientLabel} - -import scala.collection.breakOut - -case class ExportPatientWithLabels(patientId: UuidId[Patient], labelVersion: Long, labels: List[ExportPatientLabel]) - -object ExportPatientWithLabels { - - implicit def toPhiString(x: ExportPatientWithLabels): PhiString = { - import x._ - phi"ExportPatientWithLabels(patientId=$patientId, version=${Unsafe(labelVersion)}, labels=$labels)" - } - - def fromRaw(patientId: UuidId[Patient], rawPatientRefs: List[RawPatientLabel]) = ExportPatientWithLabels( - patientId = patientId, - labelVersion = 1L, // TODO It is needed to replace this mock label version. - labels = rawPatientRefs - .groupBy(_.labelId) - .map(Function.tupled(ExportPatientLabel.fromRaw))(breakOut) - ) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrial.scala deleted file mode 100644 index a3a0e90..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrial.scala +++ /dev/null @@ -1,27 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.trial - -import java.time.LocalDateTime - -import xyz.driver.pdsuicommon.domain.{StringId, UuidId} -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.Trial - -case class ExportTrial(nctId: StringId[Trial], - trialId: UuidId[Trial], - condition: Trial.Condition, - lastReviewed: LocalDateTime) - -object ExportTrial { - - implicit def toPhiString(x: ExportTrial): PhiString = { - import x._ - phi"ExportTrial(nctId=$nctId, trialId=$trialId, condition=${Unsafe(condition)}, lastReviewed=$lastReviewed)" - } - - def fromDomain(x: Trial) = ExportTrial( - nctId = x.id, - trialId = x.externalId, - condition = x.condition, - lastReviewed = x.lastUpdate - ) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialArm.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialArm.scala deleted file mode 100644 index abdade4..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialArm.scala +++ /dev/null @@ -1,15 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.trial - -import xyz.driver.pdsuicommon.domain.LongId -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.Arm - -case class ExportTrialArm(armId: LongId[Arm], armName: String) - -object ExportTrialArm { - - implicit def toPhiString(x: ExportTrialArm): PhiString = { - import x._ - phi"ExportTrialArm(armId=$armId, armName=${Unsafe(armName)})" - } -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialLabelCriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialLabelCriterion.scala deleted file mode 100644 index 1dccaa5..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialLabelCriterion.scala +++ /dev/null @@ -1,32 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.trial - -import xyz.driver.pdsuicommon.domain.LongId -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{Arm, Criterion, Label, RawTrialLabel} - -case class ExportTrialLabelCriterion(criterionId: LongId[Criterion], - value: Option[Boolean], - labelId: LongId[Label], - armIds: Set[LongId[Arm]], - criteria: String, - isCompound: Boolean, - isDefining: Boolean) - -object ExportTrialLabelCriterion { - - implicit def toPhiString(x: ExportTrialLabelCriterion): PhiString = { - import x._ - phi"TrialLabelCriterion(criterionId=$criterionId, value=$value, labelId=$labelId, " + - phi"criteria=${Unsafe(criteria)}, isCompound=$isCompound, isDefining=$isDefining)" - } - - def fromRaw(x: RawTrialLabel, armIds: Set[LongId[Arm]]) = ExportTrialLabelCriterion( - criterionId = x.criterionId, - value = x.value, - labelId = x.labelId, - armIds = armIds, - criteria = x.criteria, - isCompound = x.isCompound, - isDefining = x.isDefining - ) -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialWithLabels.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialWithLabels.scala deleted file mode 100644 index 2580e54..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/export/trial/ExportTrialWithLabels.scala +++ /dev/null @@ -1,56 +0,0 @@ -package xyz.driver.pdsuidomain.entities.export.trial - -import java.time.LocalDateTime - -import xyz.driver.pdsuicommon.domain.{StringId, UuidId} -import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.{RawTrialLabel, Trial} - -import scala.collection.breakOut - -case class ExportTrialWithLabels(nctId: StringId[Trial], - trialId: UuidId[Trial], - condition: String, - lastReviewed: LocalDateTime, - labelVersion: Long, - arms: List[ExportTrialArm], - criteria: List[ExportTrialLabelCriterion]) - -object ExportTrialWithLabels { - - implicit def toPhiString(x: ExportTrialWithLabels): PhiString = { - import x._ - phi"TrialWithLabels(nctId=$nctId, trialId=$trialId, condition=${Unsafe(condition)}, " + - phi"lastReviewed=$lastReviewed, labelVersion=${Unsafe(labelVersion)}, arms=$arms, criteria=$criteria)" - } - - def fromRaw(rawData: List[RawTrialLabel]): ExportTrialWithLabels = { - val trials: Set[StringId[Trial]] = rawData.map(_.nctId)(breakOut) - - assert(trials.size == 1, "There are more than one trials in the rawData") - val trial = rawData.head - - ExportTrialWithLabels( - nctId = trial.nctId, - trialId = trial.trialId, - condition = trial.condition, - lastReviewed = trial.lastReviewed, - labelVersion = 1, // TODO It is needed to replace this mock label version. - arms = rawData - .groupBy(_.armId) - .map { - case (armId, rawTrials) => - ExportTrialArm(armId, rawTrials.head.armName) - }(breakOut), - criteria = rawData - .groupBy { x => - (x.criterionId, x.labelId) - } - .map { - case (_, rawTrialLabels) => - val armIds = rawTrialLabels.map(_.criterionArmId).toSet - ExportTrialLabelCriterion.fromRaw(rawTrialLabels.head, armIds) - }(breakOut) - ) - } -} |