//public async Task<Dictionary<string, string>> GetMedicationTypeLookup(Action<Dictionary<string, string>> onResultFetch = null)
        //{
        //    string token = _httpContext.Session.GetString("access_token");

        //    var dataDictionary = _httpContext.Session.GetObject<Dictionary<string, string>>(SynapseSession.FormularyMedicationTypeLkpKey);

        //    if (!dataDictionary.IsCollectionValid())
        //    {
        //        var recordStatusLkp = await TerminologyAPIService.GetMedicationTypes(token);

        //        if (recordStatusLkp.IsCollectionValid())
        //        {
        //            dataDictionary = recordStatusLkp.Where(rec => rec.recordstatus == 1).ToDictionary(k => k.cd.ToString(), v => v.desc);

        //            _httpContext.Session.SetObject(SynapseSession.FormularyMedicationTypeLkpKey, dataDictionary);
        //        }
        //    }

        //    dataDictionary = dataDictionary ?? new Dictionary<string, string>();

        //    onResultFetch?.Invoke(dataDictionary);
        //    return dataDictionary;
        //}

        public async Task <Dictionary <string, string> > GetBasisOfPreferredName(Action <Dictionary <string, string> > onResultFetch = null)
        {
            string token = _httpContext.Session.GetString("access_token");

            var dataDictionary = _httpContext.Session.GetObject <Dictionary <string, string> >(SynapseSession.BasisOfPreferredName);

            if (!dataDictionary.IsCollectionValid())
            {
                var basisOfPreferredNameLkp = await TerminologyAPIService.GetBasisOfPreferredName(token);

                if (basisOfPreferredNameLkp.IsCollectionValid())
                {
                    dataDictionary = basisOfPreferredNameLkp.Where(rec => rec.Recordstatus == 1).ToDictionary(k => k.Cd.ToString(), v => v.Desc);

                    _httpContext.Session.SetObject(SynapseSession.BasisOfPreferredName, dataDictionary);
                }
            }

            dataDictionary = dataDictionary ?? new Dictionary <string, string>();

            onResultFetch?.Invoke(dataDictionary);
            return(dataDictionary);
        }