blob: 233495ec8f47fb4e7213f603a75ff780ce36be19 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package xyz.driver.pdsuidomain.services
import xyz.driver.pdsuicommon.error.DomainError
import xyz.driver.pdsuidomain.entities.ScrapedTrial
import scala.concurrent.Future
object ScrapedTrialsService {
sealed trait GetRawTrialReply
object GetRawTrialReply {
type Error = GetRawTrialReply with DomainError
final case class TrialRawEntity(rawTrial: ScrapedTrial) extends GetRawTrialReply
case object NotFoundError extends GetRawTrialReply with DomainError.NotFoundError {
override def userMessage: String = "Raw clinical trial not found"
}
}
sealed trait GetRawTrialOptReply
object GetRawTrialOptReply {
final case class TrialRawEntity(rawTrial: Option[ScrapedTrial]) extends GetRawTrialOptReply
}
sealed trait GetAllRawTrialsExceptReply
object GetAllRawTrialsExceptReply {
final case class MultipleRawTrials(rawTrials: Seq[ScrapedTrial]) extends GetAllRawTrialsExceptReply
}
sealed trait GetHtmlForReply
object GetHtmlForReply {
type TrialHtmlMap = Map[String, String]
/**
* @param trialHtmlMap nctId -> html
*/
final case class HtmlMap(trialHtmlMap: TrialHtmlMap) extends GetHtmlForReply
}
}
trait ScrapedTrialsService {
import ScrapedTrialsService._
def getRawTrial(nctId: String): Future[GetRawTrialReply]
def getRawTrialOpt(nctId: String): Future[GetRawTrialOptReply]
def getAllRawTrialsExcept(nctIds: Seq[String], limit: Int): Future[GetAllRawTrialsExceptReply]
def getHtmlFor(nctIds: Set[String]): Future[GetHtmlForReply]
}
|