В настоящее время скользкий запрос:
(for {
t <- userType if t.user_type === uType
h <- hand if h.work_item_uid === workItemId &&
h.user_uid === userId &&
h.user_type_id === t.user_type_id &&
h.expires_utc > cutoff
enc <- tbl if enc.work_item_uid === workItemId &&
enc.encounter_uid === h.encounter_uid
} yield (enc,h.expires_utc,h.sequence))
.sortBy(_._3)
.list match {
case Nil => None
case nonEmpty =>
nonEmpty.unzip3 match {
case (encs,tstamps,_) =>
Some(ChartQueue((tstamps.map(_.getTime).min - System.currentTimeMillis).toInt, encs))
}
}
В tbl
есть поле encounter_type
, и оно имеет строковое значение, такое как Inpatient, Outpatient и другие.и
В приведенном выше запросе набор данных сортируется по последовательности.Я хочу реализовать условную сортировку на основе encounter_type
.
То есть, если тип встречи содержит определенные строки в списке, я хочу, чтобы они были вверху.
Итак, я попробовалследующее:
val encType= List("Inpatient","Observation","Outpatient in a Bed")
и попытался применить запрос что-то вроде
priority <- enc if enc.inSet(encType) 1 else 2
, но я не могу отсортировать его по приоритету.
I 'ищу что-то вроде того, что я строю в сыром SQL:
select encounter_dos, patient_fin, encounter_type,
if(encounter_type in ('Inpatient','Observation','Outpatient in a Bed'),1,2) as priority
from cleardb.tbl_encounter
order by priority, encounter_dos;