コード例 #1
0
        public static List <ClientTestingStage> Create(Encounter testingEncounter, SubscriberSystem subscriber, Guid?pretestEncounterId)
        {
            var clientTestingStages = new List <ClientTestingStage>();

            if (testingEncounter.ObsTestResults.Any())
            {
                foreach (var testResult in testingEncounter.ObsTestResults)
                {
                    var clientTestingStage = new ClientTestingStage();
                    clientTestingStage.UserId             = subscriber.GetEmrUserId(testingEncounter.UserId);
                    clientTestingStage.Id                 = testResult.Id;
                    clientTestingStage.PretestEncounterId =
                        pretestEncounterId.IsNullOrEmpty() ? testResult.Id : pretestEncounterId.Value;
                    clientTestingStage.HtsTestType = GetTestType(testResult.TestName);
                    clientTestingStage.KitType     = subscriber.GetTranslation(testResult.Kit, "HIVTestKits", "ObsTestResult.Kit", "0").SafeConvert <int>();
                    clientTestingStage.KitOther    = testResult.KitOther;
                    clientTestingStage.LotNumber   = testResult.LotNumber;
                    clientTestingStage.ExpiryDate  = testResult.Expiry.ToIqDateOnly();
                    clientTestingStage.Result      = subscriber.GetTranslation(testResult.Result, "HIVResults", "ObsTestResult.Result", "0").SafeConvert <int>();
                    clientTestingStage.TestRound   = (int)clientTestingStage.HtsTestType;
                    clientTestingStage.ClientId    = testingEncounter.ClientId;

                    clientTestingStages.Add(clientTestingStage);
                }
            }
            return(clientTestingStages);
        }
コード例 #2
0
        private static string GetValue(object obj, SubscriberMap subscriberMap, SubscriberSystem subscriberSystem = null, int group = 0)
        {
            var propname = subscriberMap.Field;

            var val = obj.GetPropValue(propname);

            if (null == val)
            {
                return($"NULL");
            }

            if (subscriberMap.Type == "Date")
            {
                DateTime vall = obj.GetPropValue <DateTime>(propname);
                return($"'{vall:yyyy MMM dd}'");
            }
            else
            {
                if (null != subscriberSystem)
                {
                    val = GetTranslation($"{subscriberMap.Name}.{subscriberMap.Field}", val.ToString(),
                                         subscriberSystem, group);
                }
            }

            return($"'{val}'");
        }
コード例 #3
0
        public static Patient Create(ClientInfo client, int locationId, SubscriberSystem subscriberSystem)
        {
            var ids = null != client.Identifiers && client.Identifiers.Count > 0
                ? client.Identifiers.First().Identifier
                : "";

            var regDate = string.IsNullOrWhiteSpace(ids)
                ? DateTime.Now.Date
                : client.Identifiers.First().RegistrationDate;
            var patient =
                new Patient(
                    client.Person.FirstName,
                    client.Person.MiddleName,
                    client.Person.LastName,
                    Convert.ToInt32(GetTranslation("Sex", client.Person.Gender, subscriberSystem, "0")),
                    client.Person.BirthDate.Value,
                    GetDobPrecion(client.Person.BirthDateEstimated.Value),
                    ids,
                    locationId,
                    regDate,
                    client.Id,
                    client.Person.Addresses.FirstOrDefault().Landmark,
                    client.Person.Contacts.FirstOrDefault().Phone.ToString(),
                    Convert.ToInt32(GetTranslation("MaritalStatus", client.MaritalStatus, subscriberSystem, "0"))
                    );

            return(patient);
        }
コード例 #4
0
        public static List <ClientFinalTestStage> Create(Encounter testingEncounter, SubscriberSystem subscriber, Guid?pretestEncounterId)
        {
            var stages = new List <ClientFinalTestStage>();

            if (testingEncounter.ObsFinalTestResults.Any())
            {
                var clientStage = new ClientFinalTestStage();
                clientStage.UserId = subscriber.GetEmrUserId(testingEncounter.UserId);

                var testResult = testingEncounter.ObsFinalTestResults.First();
                clientStage.Id = testResult.Id;
                clientStage.PretestEncounterId =
                    pretestEncounterId.IsNullOrEmpty() ? testResult.Id : pretestEncounterId.Value;
                clientStage.ScreeningResult    = subscriber.GetTranslation(testResult.FirstTestResult, "HIVResults", "ObsFinalTestResult.FirstTestResult", "0").SafeConvert <int>();
                clientStage.ConfirmatoryResult = subscriber.GetTranslation(testResult.SecondTestResult, "HIVResults", "ObsFinalTestResult.SecondTestResult", "0").SafeConvert <int>();
                clientStage.FinalResult        = subscriber.GetTranslation(testResult.FinalResult, "HIVFinalResults", "ObsFinalTestResult.FinalResult", "0").SafeConvert <int>();
                clientStage.FinalResultGiven   = subscriber.GetTranslation(testResult.ResultGiven, "YesNo", "ObsFinalTestResult.ResultGiven", "0").SafeConvert <int>();
                clientStage.CoupleDiscordant   = subscriber.GetTranslation(testResult.CoupleDiscordant, "YesNoNA", "ObsFinalTestResult.CoupleDiscordant", "0").SafeConvert <int>();
                clientStage.PnsAccepted        = subscriber.GetTranslation(testResult.SelfTestOption, "YesNo", "ObsFinalTestResult.SelfTestOptions", "0").SafeConvert <int>();
                clientStage.PnsDeclineReason   = subscriber.GetTranslation(testResult.PnsDeclined, "ReasonsPartner", "ObsFinalTestResult.PnsDeclineds", "0").SafeConvert <int>();
                clientStage.Remarks            = testResult.Remarks;
                clientStage.ClientId           = testingEncounter.ClientId;
                stages.Add(clientStage);
            }
            return(stages);
        }
コード例 #5
0
        public void SetUp()
        {
            var config = new ConfigurationBuilder()
                         .AddJsonFile("appsettings.json")
                         .Build();
            //var connectionString = config["connectionStrings:hAPIConnection"].Replace("#dir#", TestContext.CurrentContext.TestDirectory.HasToEndWith(@"\"));
            var connectionString = config["connectionStrings:livehAPIConnection"];
            var options          = new DbContextOptionsBuilder <LiveHAPIContext>()
                                   .UseSqlServer(connectionString)
                                   .Options;

            _context = new LiveHAPIContext(options);

            _personRepository           = new PersonRepository(_context);
            _clientStageRepository      = new ClientStageRepository(_context);
            _subscriberSystemRepository = new SubscriberSystemRepository(_context);

            _clientStageExtractor =
                new ClientStageExtractor(_personRepository, _clientStageRepository, _subscriberSystemRepository, new ClientRepository(_context), new PracticeRepository(_context));

            subscriber = Builder <SubscriberSystem> .CreateNew()
                         .With(x => x.Id           = new Guid("16E23877-9D69-11E7-ABC4-CEC278B6B50A"))
                         .With(x => x.Translations = TestData.TestTranslations())
                         .Build();

            person = Builder <Person> .CreateNew().With(x => x.Gender = "F").Build();

            var client = Builder <Client> .CreateNew()
                         .With(x => x.KeyPop        = "O")
                         .With(x => x.MaritalStatus = "S")
                         .Build();

            person.Clients.Add(client);
        }
コード例 #6
0
        public static List <ClientPartnerScreeningStage> Create(Encounter encounter, SubscriberSystem subscriber)
        {
            var clientStages = new List <ClientPartnerScreeningStage>();

            if (encounter.ObsPartnerScreenings.Any())
            {
                foreach (var screening in encounter.ObsPartnerScreenings)
                {
                    var clientStage = new ClientPartnerScreeningStage();
                    clientStage.Id                   = screening.Id;
                    clientStage.UserId               = subscriber.GetEmrUserId(encounter.UserId);
                    clientStage.ScreeningDate        = screening.ScreeningDate;
                    clientStage.PnsAccepted          = subscriber.GetTranslation(screening.PnsAccepted, "YesNo", "ObsPartnerScreening.PnsAccepted", "0").SafeConvert <int>();
                    clientStage.IpvScreeningDone     = subscriber.GetTranslation(screening.IPVScreening, "YesNoNA", "ObsPartnerScreening.IPVScreening", "0").SafeConvert <int>();
                    clientStage.HurtByPartner        = subscriber.GetTranslation(screening.PhysicalAssult, "YesNo", "ObsPartnerScreening.PhysicalAssult", "0").SafeConvert <int>();
                    clientStage.ThreatByPartner      = subscriber.GetTranslation(screening.Threatened, "YesNo", "ObsPartnerScreening.Threatened", "0").SafeConvert <int>();
                    clientStage.SexualAbuseByPartner = subscriber.GetTranslation(screening.SexuallyUncomfortable, "YesNo", "ObsPartnerScreening.SexuallyUncomfortable", "0").SafeConvert <int>();
                    clientStage.IpvOutcome           = subscriber.GetTranslation(screening.IPVOutcome, "IpvOutcome", "ObsPartnerScreening.IPVOutcome", "0").SafeConvert <int>();
                    clientStage.PartnerOccupation    = screening.Occupation;
                    clientStage.PartnerRelationship  = subscriber.GetTranslation(screening.PNSRealtionship, "PNSRelationship", "ObsPartnerScreening.PNSRealtionship", "0").SafeConvert <int>();
                    clientStage.LivingWithClient     = subscriber.GetTranslation(screening.LivingWithClient, "YesNoDeclined", "ObsPartnerScreening.LivingWithClient", "0").SafeConvert <int>();
                    clientStage.HivStatus            = subscriber.GetTranslation(screening.HivStatus, "HivStatus", "ObsPartnerScreening.HivStatus", "0").SafeConvert <int>();
                    clientStage.EligibleForHts       = subscriber.GetTranslation(screening.Eligibility, "YesNo", "ObsPartnerScreening.Eligibility", "0").SafeConvert <int>();
                    clientStage.PnsApproach          = subscriber.GetTranslation(screening.PNSApproach, "PnsApproach", "ObsPartnerScreening.PNSApproach", "0").SafeConvert <int>();
                    clientStage.BookingDate          = screening.BookingDate;
                    clientStage.ClientId             = encounter.ClientId;
                    clientStages.Add(clientStage);
                }
            }

            return(clientStages);
        }
コード例 #7
0
        public static string GetTranslation(string tref, string tval, SubscriberSystem subscriberSystem, string def)
        {
            var translatio = subscriberSystem.Translations.FirstOrDefault(x => x.Ref == tref && x.Code == tval);

            if (null == translatio)
            {
                return(def);
            }
            return(translatio.SubCode);
        }
コード例 #8
0
        public static string GetTranslation(string tref, string tval, SubscriberSystem subscriberSystem, int group = 0)
        {
            var translatio = subscriberSystem.Translations.FirstOrDefault(x => x.Ref.ToLower() == tref.ToLower() && x.Code.ToLower() == tval.ToLower() && x.HasSub() && x.Group == group);

            if (null == translatio)
            {
                return(tval);
            }

            return(translatio.SubCode);
        }
コード例 #9
0
        private static string GetObsValue(List <Obs> obses, string field, SubscriberSystem subscriber, string question,
                                          bool coded = true, string defaultValue = "0")
        {
            var obs = obses.FirstOrDefault(x => x.QuestionId == new Guid(question));

            if (null != obs && coded)
            {
                return(subscriber.GetTranslation(obs.ValueCoded, field, obs.QuestionId.ToString(), "0"));
            }

            return(string.IsNullOrWhiteSpace(defaultValue) ? string.Empty : defaultValue);
        }
コード例 #10
0
        public void Sync(IEnumerable <SubscriberTranslation> translations)
        {
            _defaultSystem = GetDbConnection().GetAll <SubscriberSystem>().FirstOrDefault(x => x.IsDefault);

            var updateList = new List <SubscriberTranslation>();

            foreach (var translation in translations)
            {
                var exisitngTranslation = GetByLookupItem(translation.SubRef, translation.SubDisplay);
                foreach (var subscriberTranslation in exisitngTranslation)
                {
                    subscriberTranslation.UpdateTo(translation);
                    updateList.Add(subscriberTranslation);
                }
            }
            GetDbConnection().BulkUpdate(updateList);
        }
コード例 #11
0
        public static List <ClientReferralStage> Create(Encounter linkageEncounter, SubscriberSystem subscriber)
        {
            var clientStages = new List <ClientReferralStage>();

            if (linkageEncounter.ObsLinkages.Any())
            {
                foreach (var linkage in linkageEncounter.ObsLinkages)
                {
                    var clientStage = new ClientReferralStage();
                    clientStage.Id               = linkage.Id;
                    clientStage.ReferredTo       = linkage.ReferredTo;
                    clientStage.DateToBeEnrolled = linkage.DatePromised;
                    clientStage.ClientId         = linkageEncounter.ClientId;
                    clientStages.Add(clientStage);
                }
            }
            return(clientStages);
        }
コード例 #12
0
        public void SetUp()
        {
            var config = new ConfigurationBuilder()
                         .AddJsonFile("appsettings.json")
                         .Build();
            var connectionString = config["connectionStrings:hAPIConnection"];

            var options = new DbContextOptionsBuilder <LiveHAPIContext>()
                          .UseSqlServer(connectionString)
                          .Options;

            _context = new LiveHAPIContext(options);
            TestData.Init();
            TestDataCreator.Init(_context);
            _subscriberSystems = _context.SubscriberSystems.ToList();
            _subscriberSystem  = _subscriberSystems.First(x => x.IsDefault);
            _subscriberTranslationRepository = new SubscriberTranslationRepository(_context);
        }
コード例 #13
0
        public static ClientLinkageStage Create(Encounter linkageEncounter, SubscriberSystem subscriber)
        {
            var clientStage = new ClientLinkageStage();

            if (linkageEncounter.ObsLinkages.Any())
            {
                var linkage = linkageEncounter.ObsLinkages.First();
                clientStage.Id           = linkage.Id;
                clientStage.Facility     = linkage.FacilityHandedTo;
                clientStage.HealthWorker = linkage.HandedTo;
                clientStage.Carde        = linkage.WorkerCarde;
                clientStage.DateEnrolled = linkage.DateEnrolled;
                clientStage.CccNumber    = linkage.EnrollmentId;
                clientStage.Remarks      = linkage.Remarks;
                clientStage.ClientId     = linkageEncounter.ClientId;
            }

            return(clientStage);
        }
コード例 #14
0
        public static List <ClientTracingStage> Create(Encounter tracingEncounter, SubscriberSystem subscriber)
        {
            var stages = new List <ClientTracingStage>();

            if (tracingEncounter.ObsTraceResults.Any())
            {
                foreach (var traceResult in tracingEncounter.ObsTraceResults)
                {
                    var clientStage = new ClientTracingStage();
                    clientStage.Id             = traceResult.Id;
                    clientStage.TracingDate    = traceResult.Date;
                    clientStage.TracingMode    = subscriber.GetTranslation(traceResult.Mode, "TracingMode", "ObsTraceResult.Mode", "0").SafeConvert <int>();
                    clientStage.TracingOutcome = subscriber.GetTranslation(traceResult.Outcome, "TracingOutcome", "ObsTraceResult.Outcome", "0").SafeConvert <int>();
                    clientStage.ClientId       = tracingEncounter.ClientId;
                    stages.Add(clientStage);
                }
            }
            return(stages);
        }
コード例 #15
0
        public void SetUp()
        {
            var config = new ConfigurationBuilder()
                         .AddJsonFile("appsettings.json")
                         .Build();
            var connectionString = config["connectionStrings:livehAPIConnection"];

            var options = new DbContextOptionsBuilder <LiveHAPIContext>()
                          .UseSqlServer(connectionString)
                          .Options;

            _reader  = new ClientLookupReader(new RestClient(_baseUrl));
            _context = new LiveHAPIContext(options);

            _repository = new SubscriberTranslationRepository(_context);
            _subscriberSystemRepository = new SubscriberSystemRepository(_context);
            _service = new SyncLookupService(_reader, _repository);
            _emr     = _subscriberSystemRepository.GetDefault();
        }
コード例 #16
0
        private string GenerateSqlActionsPsmart(List <PSmartStoreInfo> storeInfos, SubscriberSystem subscriberSystem, Location location)
        {
            decimal rank = 0;

            _sqlActions = new List <SqlAction>();
            _sqlActions.Add(new SqlAction(rank, GetSqlDecrptyion())); rank++;
            if (storeInfos.Count > 0)
            {
                _sqlActions.AddRange(InsertPSmart(rank, storeInfos, subscriberSystem, location));
            }
            rank++;

            StringBuilder sqlBuilder = new StringBuilder(" ");

            foreach (var action in _sqlActions.OrderBy(x => x.Rank))
            {
                sqlBuilder.AppendLine(action.Action);
            }
            return(sqlBuilder.ToString());
        }
コード例 #17
0
        public void CreateOrUpdate(List <PSmartStoreInfo> storeInfos, SubscriberSystem subscriberSystem, Location location)
        {
            var sql5 = GenerateSqlActionsPsmart(storeInfos, subscriberSystem, location);

            using (SqlConnection conn = new SqlConnection(Context.Database.GetDbConnection().ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql5, conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception e)
                    {
                        Log.Error($"{e}");
                        throw;
                    }
                }
            }
        }
コード例 #18
0
        public static List <ClientFamilyScreeningStage> Create(Encounter encounter, SubscriberSystem subscriber)
        {
            var clientStages = new List <ClientFamilyScreeningStage>();

            if (encounter.ObsMemberScreenings.Any())
            {
                foreach (var screening in encounter.ObsMemberScreenings)
                {
                    var clientStage = new ClientFamilyScreeningStage();
                    clientStage.Id             = screening.Id;
                    clientStage.UserId         = subscriber.GetEmrUserId(encounter.UserId);
                    clientStage.ScreeningDate  = screening.ScreeningDate;
                    clientStage.HivStatus      = subscriber.GetTranslation(screening.HivStatus, "ScreeningHivStatus", "ObsMemberScreening.HivStatus", "0").SafeConvert <int>();
                    clientStage.EligibleForHts = subscriber.GetTranslation(screening.Eligibility, "YesNo", "ObsMemberScreening.Eligibility", "0").SafeConvert <int>();
                    clientStage.BookingDate    = screening.BookingDate;
                    clientStage.Remarks        = screening.Remarks;
                    clientStage.ClientId       = encounter.ClientId;
                    clientStages.Add(clientStage);
                }
            }

            return(clientStages);
        }
コード例 #19
0
 public CohortsController(ISubscriberSystemRepository subscriberSystemRepository, IClientService clientService)
 {
     _subscriberSystemRepository = subscriberSystemRepository;
     _clientService    = clientService;
     _subscriberSystem = _subscriberSystemRepository.GetDefault();
 }
コード例 #20
0
 public static void Raise <T>(T args, IHandler <T> handler, SubscriberSystem subscriberSystem) where T : IhEvent
 {
     handler.Handle(args, subscriberSystem);
 }
コード例 #21
0
        public static ClientStageRelationship Create(ClientRelationship relationship, SubscriberSystem subscriber)
        {
            var clientStage = new ClientStageRelationship();

            if (null != relationship)
            {
                clientStage.IndexClientId     = relationship.ClientId;
                clientStage.IsPartner         = relationship.IsPartner;
                clientStage.SecondaryClientId = relationship.RelatedClientId;
                clientStage.Relation          = subscriber.GetTranslation(relationship.RelationshipTypeId, "Relationship", "0").SafeConvert <int>();;
            }

            return(clientStage);
        }
コード例 #22
0
        public static List <ClientPartnerTracingStage> Create(Encounter tracingEncounter, SubscriberSystem subscriber)
        {
            var stages = new List <ClientPartnerTracingStage>();

            if (tracingEncounter.ObsPartnerTraceResults.Any())
            {
                foreach (var traceResult in tracingEncounter.ObsPartnerTraceResults)
                {
                    var tracingStage = new ClientPartnerTracingStage();

                    tracingStage.Id             = traceResult.Id;
                    tracingStage.UserId         = subscriber.GetEmrUserId(tracingEncounter.UserId);
                    tracingStage.TracingDate    = traceResult.Date;
                    tracingStage.TracingMode    = subscriber.GetTranslation(traceResult.Mode, "TracingMode", "ObsPartnerTraceResult.Mode", "0").SafeConvert <int>();
                    tracingStage.TracingOutcome = subscriber.GetTranslation(traceResult.Outcome, "PnsTracingOutcome", "ObsPartnerTraceResult.Outcomee", "0").SafeConvert <int>();
                    tracingStage.Consent        = subscriber.GetTranslation(traceResult.Consent, "YesNo", "ObsPartnerTraceResult.Consent", "0").SafeConvert <int>();
                    tracingStage.BookingDate    = traceResult.BookingDate;
                    tracingStage.ClientId       = tracingEncounter.ClientId;
                    stages.Add(tracingStage);
                }
            }

            return(stages);
        }
コード例 #23
0
        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);
        }
コード例 #24
0
        private static List <ClientPretestDisabilityStage> GetDisabilityStages(List <Obs> obses, string question, SubscriberSystem subscriber, Guid id)
        {
            var list = new List <ClientPretestDisabilityStage>();
            var obs  = obses.FirstOrDefault(x => x.QuestionId == new Guid(question));

            if (null != obs)
            {
                var codes = obs.ValueMultiCoded.Split(',');
                foreach (var code in codes)
                {
                    var codeId = subscriber.GetTranslation(code, "Disabilities", question, "0").SafeConvert <int>();
                    list.Add(new ClientPretestDisabilityStage(codeId, id));
                }
            }
            return(list);
        }
コード例 #25
0
        public void Handle(PSmartStoreSaved args, SubscriberSystem subscriberSystem)
        {
            var location = _configRepository.GetLocations().FirstOrDefault();

            _encounterRepository.CreateOrUpdate(args.Encounters, subscriberSystem, location);
        }
コード例 #26
0
        public static ClientStage Create(Person person, SubscriberSystem subscriber)
        {
            var clientStage = new ClientStage();

            if (null != person.PersonClient)
            {
                clientStage.Id       = person.PersonClient.Id;
                clientStage.ClientId = person.PersonClient.Id;
            }
            else
            {
                clientStage.Id = LiveGuid.NewGuid();
            }


            if (null != person.PersonName)
            {
                clientStage.FirstName  = person.PersonName.FirstName;
                clientStage.MiddleName = person.PersonName.MiddleName;
                clientStage.LastName   = person.PersonName.LastName;
                clientStage.NickName   = person.PersonName.NickName;
                if (person.Addresses.Any())
                {
                    clientStage.Landmark  = person.Addresses.First().Landmark;
                    clientStage.County    = person.Addresses.First().CountyId;
                    clientStage.SubCounty = person.Addresses.First().SubCountyId;
                    clientStage.Ward      = person.Addresses.First().WardId;
                }
                if (person.Contacts.Any())
                {
                    clientStage.Phone = !string.IsNullOrEmpty(person.Contacts.First().Phone)
                        ? person.Contacts.First().Phone
                        : string.Empty;
                }
            }

            clientStage.DateOfBirth          = person.HasDOB() ? person.BirthDate.Value : new DateTime(1900, 1, 1);
            clientStage.DateOfBirthPrecision = person.HasDOBEstimate()
                ? (person.BirthDateEstimated.Value ? "EXACT" : "ESTIMATED")
                : "ESTIMATED";
            clientStage.Sex = subscriber.GetTranslation(person.Gender, "Gender", "0").SafeConvert <int>();

            var clientt = person.PersonClient;

            if (null != clientt)
            {
                clientStage.PracticeId = clientt.PracticeId;
                clientStage.KeyPop     =
                    subscriber.GetTranslation(clientt.KeyPop, "HTSKeyPopulation", "0").SafeConvert <int>();
                clientStage.MaritalStatus = subscriber.GetTranslation(clientt.MaritalStatus, "HTSMaritalStatus", "0")
                                            .SafeConvert <int>();

                clientStage.UserId = subscriber.GetEmrUserId(clientt.UserId);
            }

            //Education
            clientStage.Education = subscriber.GetTranslation(clientt.Education, "EducationalLevel", "0")
                                    .SafeConvert <int>();
            clientStage.Completion = subscriber.GetTranslation(clientt.Completion, "EducationOutcome", "0")
                                     .SafeConvert <int>();

            //Occupation
            clientStage.Occupation = subscriber.GetTranslation(clientt.Occupation, "HTSOccupation", "0")
                                     .SafeConvert <int>();


            clientStage.IsIndex = person.IsHtsClient;
            if (clientStage.IsIndex)
            {
                var client = person.PersonClient;

                if (null != client.HtsEnrollment)
                {
                    clientStage.Serial           = client.HtsEnrollment.Identifier;
                    clientStage.RegistrationDate = client.HtsEnrollment.RegistrationDate;
                }
            }
            else
            {
                clientStage.RegistrationDate = person.ContactRegDate;
            }

            return(clientStage);
        }
コード例 #27
0
        private List <SqlAction> InsertPSmart(decimal rank, List <PSmartStoreInfo> storeInfos, SubscriberSystem subscriberSystem, Location location)
        {
            var actions = new List <SqlAction>();
            var maps    = subscriberSystem.Maps.Where(x => x.Name == nameof(PSmartStore) && x.HasSubName()).ToList();

            if (maps.Count > 0)
            {
                var mapTbl = maps.FirstOrDefault(x => x.Mode == "Single");


                foreach (var result in storeInfos)
                {
                    Guid mAfyId;
                    mAfyId = result.Uuid;
                    string sqlInitial = $@"

                        UPDATE 
	                        [{mapTbl.SubName}] 
                        SET 
                            [uuid]='{mAfyId}'
                        WHERE 
	                        uuid='{mAfyId}'

                        IF @@ROWCOUNT=0
                            INSERT INTO 
                                    [{mapTbl.SubName}](uuid)
                            VALUES('{mAfyId}');
                    ";

                    actions.Add(new SqlAction(rank, sqlInitial));
                    rank++;


                    foreach (var subscriberMap in maps.Where(x => x.Group == 3 && x.HasSubName()))
                    {
                        string sql = $@"

                        UPDATE 
	                        [{mapTbl.SubName}] 
                        SET 
	                        [{subscriberMap.SubField}]={GetValue(result, subscriberMap, subscriberSystem, 3)}
                        WHERE 
	                        uuid='{mAfyId}';
                    ";
                        actions.Add(new SqlAction(rank, sql));
                        rank++;
                    }
                }
            }

            return(actions);
        }