public static ClientPretestStage Create(HtsEncounterType encounterType, Encounter obsEncounter, SubscriberSystem subscriber) { ClientPretestStage clientStage = null; if (obsEncounter.Obses.Any()) { clientStage = new ClientPretestStage(); clientStage.UserId = subscriber.GetEmrUserId(obsEncounter.UserId); var obses = obsEncounter.Obses.ToList(); clientStage.Id = obsEncounter.Id; clientStage.EncounterDate = obsEncounter.EncounterDate; clientStage.EncounterType = encounterType; clientStage.TestedAs = GetObsValue(obses, "TestedAs", subscriber, "B260401E-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.TbScreening = GetObsValue(obses, "TbScreening", subscriber, "B2605F54-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.Remarks = GetObsValue(obses, "B260665C-852F-11E7-BB31-BE2E44B06B34"); clientStage.DisabilityIndicator = GetObsValue(obses, "YesNo", subscriber, "B260695C-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.Disabilities = GetDisabilityStages(obses, "B2603C5E-852F-11E7-BB31-BE2E44B06B34", subscriber, clientStage.Id); clientStage.EverTested = GetObsValue(obses, "YesNo", subscriber, "B2603772-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.SelfTest12Months = GetObsValue(obses, "YesNo", subscriber, "B2603773-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.Strategy = GetObsValue(obses, "Strategy", subscriber, "B260417C-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.ServicePoint = GetObsValue(obses, "HTSEntryPoints", subscriber, "B26039A1-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.MonthsSinceLastTest = GetObsValue(obses, "B26039A2-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <decimal>(); clientStage.Consent = GetObsValue(obses, "YesNo", subscriber, "B2603DC6-852F-11E7-BB31-BE2E44B06B34", true, "0").SafeConvert <int>(); clientStage.ClientId = obsEncounter.ClientId; } return(clientStage); }
public async Task <IEnumerable <ClientPretestStage> > Extract(Guid?htsClientId = null) { _clientPretestStageRepository.Clear(); var subscriber = await _subscriberSystemRepository.GetDefaultAsync(); if (null == subscriber) { throw new Exception("Default EMR NOT SET"); } var pretestStages = new List <ClientPretestStage>(); var clientIds = _clientStageRepository.GetAll().Where(x => x.IsIndex).Select(x => x.ClientId).ToList(); foreach (var clientId in clientIds) { HtsEncounterType encounterType = HtsEncounterType.Initial; // Client var client = _clientRepository.GetClientStates(clientId); if (null != client) { encounterType = client.IsInAnyState(LiveState.HtsRetestedInc, LiveState.HtsRetestedPos, LiveState.HtsRetestedNeg) ? HtsEncounterType.Repeat : HtsEncounterType.Initial; } // Pretests var pretests = _clientEncounterRepository.GetPretest(clientId).ToList(); if (pretests.Any()) { foreach (var finalResult in pretests) { var stage = ClientPretestStage.Create(encounterType, finalResult, subscriber); if (null != stage) { pretestStages.Add(stage); } } } } return(pretestStages); }