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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
package xyz.driver.pdsuidomain.entities
import java.time.{LocalDateTime, ZoneId}
import xyz.driver.core.auth.User
import xyz.driver.pdsuicommon.domain._
import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuicommon.utils.Utils
import xyz.driver.pdsuidomain.entities.MedicalRecordHistory._
import scala.collection.immutable
object MedicalRecordHistory {
implicit def toPhiString(x: MedicalRecordHistory): PhiString = {
import x._
phi"MedicalRecordHistory(id=$id, executor=${Unsafe(executor)}, recordId=$recordId, state=$state, action=$action, " +
phi"created=$created)"
}
sealed trait State
object State {
case object Clean extends State
case object Organize extends State
case object Review extends State
case object Flag extends State
private val stateToName = immutable.Map[State, String](
State.Clean -> "Clean",
State.Organize -> "Organize",
State.Review -> "Review",
State.Flag -> "Flag"
)
val All: Set[State] = stateToName.keySet
val fromString: PartialFunction[String, State] =
for ((k, v) <- stateToName) yield (v, k)
def stateToString: State => String = stateToName
implicit def toPhiString(x: State): PhiString =
Unsafe(Utils.getClassSimpleName(x.getClass))
}
sealed trait Action extends Product with Serializable {
def oneOf(xs: Action*): Boolean = xs.contains(this)
def oneOf(xs: Set[Action]): Boolean = xs.contains(this)
}
object Action {
case object Start extends Action
case object Submit extends Action
case object Unassign extends Action
case object Resolve extends Action
case object Flag extends Action
case object Archive extends Action
case object SavedDuplicate extends Action
case object SavedReorder extends Action
case object SavedRotation extends Action
case object DeletedDuplicate extends Action
case object DeletedReorder extends Action
case object DeletedRotation extends Action
case object CreatedDocument extends Action
case object DeletedDocument extends Action
case object CreatedRecord extends Action
case object ReadRecord extends Action
private val actionToName = immutable.Map[Action, String](
Action.Start -> "Start",
Action.Submit -> "Submit",
Action.Unassign -> "Unassign",
Action.Resolve -> "Resolve",
Action.Flag -> "Flag",
Action.Archive -> "Archive",
Action.SavedDuplicate -> "SavedDuplicate",
Action.SavedReorder -> "SavedReorder",
Action.SavedRotation -> "SavedRotate",
Action.DeletedDuplicate -> "DeletedDuplicate",
Action.DeletedReorder -> "DeletedReorder",
Action.DeletedRotation -> "DeletedRotation",
Action.CreatedDocument -> "CreatedDocument",
Action.DeletedDocument -> "DeletedDocument",
Action.CreatedRecord -> "CreatedRecord",
Action.ReadRecord -> "ReadRecord"
)
val fromString: PartialFunction[String, Action] =
for ((k, v) <- actionToName) yield (v, k)
val All: Set[Action] = actionToName.keySet
def actionToString: Action => String = actionToName
implicit def toPhiString(x: Action): PhiString =
Unsafe(Utils.getClassSimpleName(x.getClass))
}
}
final case class MedicalRecordHistory(id: LongId[MedicalRecordHistory],
executor: xyz.driver.core.Id[User],
recordId: LongId[MedicalRecord],
state: State,
action: Action,
created: LocalDateTime = LocalDateTime.now(ZoneId.of("Z")))
|