FHIR Chat · Mode · cql

Stream: cql

Topic: Mode


view this post on Zulip Erich Schulz (Jul 10 2016 at 09:03):

bit worried about the "Mode" operation @Bryn Rhodes - it is polymorphic in that it can return either a list or a single item... seems like a bit of an outlier...

view this post on Zulip Erich Schulz (Jul 10 2016 at 09:04):

ie this is my current implementation:

function mode(values, defaults) {                           
  if (!values.length) return null                           
  var clusterFunction = function(a) { return a.toString() } 
  var max = 0, mode = []                                    
  var counted = _.countBy(values, clusterFunction)          
  max = _.max(_.values(counted))                            
  _.forIn(counted, function(v,k) {                          
    if (v === max) mode.push(parseFloat(k))                 
  })                                                        
  formalise(mode, defaults) // add in type etc              
  var res = mode.length > 1                                 
    ? {value: mode, type: 'List'}                           
    : mode[0]                                               
  return res                                                
}                                                           

view this post on Zulip Bryn Rhodes (Jul 12 2016 at 04:08):

Yeah, that's a good question. I would tend to argue that it should be the same return type, always returning a list of elements, even if there is only a single result. That's a change to the spec though, the spec actually defines it as returning a single value, and the behavior for ties is unspecified. That should be made explicit in the spec. Do you mind submitting a comment and we can discuss it on the next CDS WG call?


Last updated: Apr 12 2022 at 19:14 UTC