FirelyTeam / firely-cql-sdk

BSD 3-Clause "New" or "Revised" License
28 stars 16 forks source link

Discuss with community on how to handle profiled overloads #438

Open ewoutkramer opened 1 month ago

ewoutkramer commented 1 month ago

In QICoreCommon there are two overloads that differ only by a profiled type. After compilation by the Java stack, these profiled types are erased and replaced by the actual unprofiled resource, which in both cases is MedicationRequest. This means that we have two overloads with exactly the same signatures, resulting in an error in our compiler stack. For now, we have fixed this in our ELM preprocessing using the AmbiguousOverloadCorrector.

It is unclear whether this is allowed or not, in any case, the resulting ELM is ambiguous. This should be discussed with the community and when the solution has been implemented, we should remove the AmbiguousOverloadCorrector from our ELM preprocessing.

using QICore version '4.1.1'

/*
@description: Returns true if the given MedicationRequest has a category of Community
*/
define fluent function isCommunity(medicationRequest MedicationRequest):
  exists (medicationRequest.category C
    where C ~ Community
  )

/*
@description: Returns true if the given MedicationRequest has a category of Community
*/
define fluent function isCommunity(medicationRequest MedicationNotRequested):
  exists (medicationRequest.category C
    where C ~ Community
  )