public async Task <ZqSignResponseBase> RegisterPersonAsync(RegisterPersonRequest request)
        {
            const string path     = "personReg";
            var          response = await GetResponseAsync <ZqSignResponseBase, RegisterPersonRequest>(path, request);

            return(response);
        }
示例#2
0
        public async Task RegisterPersonTest()
        {
            var request = new RegisterPersonRequest
            {
                UserCode = DateTime.Now.ToFileTimeUtc().ToString(),
                Name     = "无厘头",
                Mobile   = "15011111111",
                IdCardNo = "321111198602212564"
            };
            var response = await Service.RegisterPersonAsync(request);

            Assert.NotNull(response);
            Assert.Equal(ErrorCode.Success, response.Code);
        }
示例#3
0
        public async Task RegisterPersonExistedTest()
        {
            var request = new RegisterPersonRequest
            {
                UserCode = "2018091316200001",
                Name     = "无厘头",
                Mobile   = "15011111111",
                IdCardNo = "321111198602212564"
            };
            var response = await Service.RegisterPersonAsync(request);

            Assert.NotNull(response);
            Assert.Equal(ErrorCode.UserCodeExisted, response.Code);
        }
示例#4
0
 public abstract Task <HttpStatus[][]> RegisterPerson(string token, RegisterPersonRequest registerPersonRequest);
示例#5
0
        /// <summary>
        /// Send visitor registered in rychlejsie or downloaded from eHealth to eHealth system
        ///
        /// Returns true if successful, False or Exception if not successful
        /// </summary>
        /// <param name="visitor"></param>
        /// <param name="placeProviderId"></param>
        /// <param name="placeProviderRepository"></param>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public async Task <bool> SendResultToEHealth(
            Visitor visitor,
            string placeProviderId,
            IPlaceProviderRepository placeProviderRepository,
            IConfiguration configuration
            )
        {
            await SendResultToEHealth(visitor);

            var data = await MakeSurePlaceProviderIsAuthenticated(placeProviderId, placeProviderRepository);

            if (visitor.PersonType == "foreign")
            {
                throw new Exception("Only residents supported right now");
            }
            // session is valid

            if (string.IsNullOrEmpty(visitor.RC))
            {
                throw new Exception("Error - invalid personal number");
            }

            var check = await this.CheckPerson(data.LoginPayload.Session.Token, visitor.RC);

            if (check?.CfdId > 0)
            {
                // ok
            }
            else
            {
                if (configuration["AllowEHealthRegistration"] != "1")
                {
                    return(false);
                }
                var personData = await RegisterPerson(data.LoginPayload.Session.Token, RegisterPersonRequest.FromVisitor(visitor, data.LoginPayload));

                check = await this.CheckPerson(data.LoginPayload.Session.Token, visitor.RC);

                if (check?.CfdId > 0)
                {
                    // ok
                }
                else
                {
                    throw new Exception("Unable to process visitor in ehealth - not found in search");
                }
            }

            var driveIn = await DriveInQueue(data.LoginPayload.Session.Token, DateTimeOffset.Now);

            var place = driveIn.Payload.OrderByDescending(p => p.DailyCapacity).FirstOrDefault();

            var t     = DateTimeOffset.Now.ToString("yyyy-MM-dd HH:mm:ss");
            var input = new DriveInRequest()
            {
                DesignatedDriveinCity         = place.City,
                DesignatedDriveinId           = place.Id,
                DesignatedDriveinLatitude     = place.Latitude,
                DesignatedDriveinLongitude    = place.Longitude,
                DesignatedDriveinScheduledAt  = t,
                DesignatedDriveinStreetName   = place.StreetName,
                DesignatedDriveinStreetNumber = place.StreetNumber,
                DesignatedDriveinTitle        = place.Title,
                DesignatedDriveinZipCode      = place.ZipCode,
                MedicalAssessedAt             = t,
                State  = "SD",
                Triage = "2",
            };
            var addPersonToPlace = await AddPersonToTestingPlace(data.LoginPayload.Session.Token, check.CfdId, input);

            if (addPersonToPlace != "1")
            {
                throw new Exception("Unexpected error returned while adding person to place");
            }

            string result;

            switch (visitor.Result)
            {
            case TestResult.PositiveWaitingForCertificate:
            case TestResult.PositiveCertificateTaken:
                result = "POSITIVE";
                break;

            case TestResult.NegativeWaitingForCertificate:
            case TestResult.NegativeCertificateTaken:
            case TestResult.NegativeCertificateTakenTypo:
                result = "NEGATIVE";
                break;

            default:
                throw new Exception($"Unable to determine state: {visitor.Result}");
            }

            var setResultRequest = new CovidMassTesting.Model.EZdravie.Request.SetResultRequest()
            {
                Id                   = 0,
                UserId               = data.LoginPayload.User.Id,
                CovidFormDataId      = check.CfdId,
                FinalResult          = result,
                ScreeningFinalResult = result,
                SpecimenId           = visitor.TestingSet,
                SpecimenCollectedAt  = visitor.TestingTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                ScreeningEndedAt     = visitor.TestResultTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? visitor.TestingTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
            };
            var setResult = await SetTestResultToPerson(data.LoginPayload.Session.Token, setResultRequest);

            return(setResult[0][0].HttpStatusCode == 200);
        }
        public override async Task <HttpStatus[][]> RegisterPerson(string token, RegisterPersonRequest registerPersonRequest)
        {
            var request = new RestSharp.RestRequest($"api/sp_v0/sp_covid_form_cc_iu", RestSharp.Method.POST, RestSharp.DataFormat.Json);

            request.AddHeader("Authorization", $"Bearer {token}");
            //request.AddJsonBody(setResultRequest);
            //var body = Serialize(setResultRequest);
            //request.AddParameter("application/json", body, ParameterType.RequestBody);
            request.AddParameter("nUser_id", registerPersonRequest.nUser_id);
            request.AddParameter("vPass", registerPersonRequest.vPass);
            request.AddParameter("vState", registerPersonRequest.vState);
            request.AddParameter("nTriage", registerPersonRequest.nTriage);
            request.AddParameter("vFirst_name", registerPersonRequest.vFirst_name);
            request.AddParameter("vLast_name", registerPersonRequest.vLast_name);
            request.AddParameter("vBirth_number", registerPersonRequest.vBirth_number);
            request.AddParameter("vNationality", registerPersonRequest.vNationality);
            request.AddParameter("vPatient_localization", registerPersonRequest.vPatient_localization);
            request.AddParameter("vEmail", registerPersonRequest.vEmail);
            request.AddParameter("vPhone_number", registerPersonRequest.vPhone_number);
            request.AddParameter("vEmail_secondary", registerPersonRequest.vEmail_secondary);
            request.AddParameter("vPhone_number_secondary", registerPersonRequest.vPhone_number_secondary);
            request.AddParameter("vMunicipality", registerPersonRequest.vMunicipality);
            request.AddParameter("vStreet", registerPersonRequest.vStreet);
            request.AddParameter("vStreet_number", registerPersonRequest.vStreet_number);
            request.AddParameter("vPostal_code", registerPersonRequest.vPostal_code);
            request.AddParameter("vCountry", registerPersonRequest.vCountry);
            request.AddParameter("vAddress_note", registerPersonRequest.vAddress_note);
            request.AddParameter("vTemporary_municipality", registerPersonRequest.vTemporary_municipality);
            request.AddParameter("vTemporary_street", registerPersonRequest.vTemporary_street);
            request.AddParameter("vTemporary_street_number", registerPersonRequest.vTemporary_street_number);
            request.AddParameter("vTemporary_postal_code", registerPersonRequest.vTemporary_postal_code);
            request.AddParameter("vTemporary_country", registerPersonRequest.vTemporary_country);
            request.AddParameter("vTemporary_address_note", registerPersonRequest.vTemporary_address_note);
            request.AddParameter("nHas_high_temperature", registerPersonRequest.nHas_high_temperature);
            request.AddParameter("nHas_continuous_cough", registerPersonRequest.nHas_continuous_cough);
            request.AddParameter("nHas_fatigue", registerPersonRequest.nHas_fatigue);
            request.AddParameter("nHas_head_aches", registerPersonRequest.nHas_head_aches);
            request.AddParameter("nHas_hinge_ache", registerPersonRequest.nHas_hinge_ache);
            request.AddParameter("nHas_cold", registerPersonRequest.nHas_cold);
            request.AddParameter("nHas_thrown_up", registerPersonRequest.nHas_thrown_up);
            request.AddParameter("nHas_heart_palpitation", registerPersonRequest.nHas_heart_palpitation);
            request.AddParameter("nHas_diarrhea", registerPersonRequest.nHas_diarrhea);
            request.AddParameter("nHas_ague", registerPersonRequest.nHas_ague);
            request.AddParameter("nHas_mucus_cough", registerPersonRequest.nHas_mucus_cough);
            request.AddParameter("nHas_dyspnoea", registerPersonRequest.nHas_dyspnoea);
            request.AddParameter("nHas_come_from_abroad", registerPersonRequest.nHas_come_from_abroad);
            request.AddParameter("nHas_influenza_vaccination", registerPersonRequest.nHas_influenza_vaccination);
            request.AddParameter("nHas_clinical_symptoms", registerPersonRequest.nHas_clinical_symptoms);
            request.AddParameter("vInfluenza_vaccine_name", registerPersonRequest.vInfluenza_vaccine_name);
            request.AddParameter("dInfluenza_vaccine_date", registerPersonRequest.dInfluenza_vaccine_date);
            request.AddParameter("vOther_symptoms", registerPersonRequest.vOther_symptoms);
            request.AddParameter("dInfection_start", registerPersonRequest.dInfection_start);
            request.AddParameter("vDrugs_used", registerPersonRequest.vDrugs_used);
            request.AddParameter("vSimilar_disease_occurence", registerPersonRequest.vSimilar_disease_occurence);
            request.AddParameter("vTravel_history", registerPersonRequest.vTravel_history);
            request.AddParameter("nPersons_count_at_home", registerPersonRequest.nPersons_count_at_home);
            request.AddParameter("nHome_rooms_number", registerPersonRequest.nHome_rooms_number);
            request.AddParameter("nContagion_concern_reasons", registerPersonRequest.nContagion_concern_reasons);
            request.AddParameter("vQuarantine_reason", registerPersonRequest.vQuarantine_reason);
            request.AddParameter("dQuarantine_start", registerPersonRequest.dQuarantine_start);
            request.AddParameter("dQuarantine_end", registerPersonRequest.dQuarantine_end);
            request.AddParameter("vQuarantine_country", registerPersonRequest.vQuarantine_country);
            request.AddParameter("vQuarantine_address_note", registerPersonRequest.vQuarantine_address_note);
            request.AddParameter("vHealth_insurance_company", registerPersonRequest.vHealth_insurance_company);
            request.AddParameter("nLongitude", registerPersonRequest.nLongitude);
            request.AddParameter("nLatitude", registerPersonRequest.nLatitude);
            request.AddParameter("nShare_my_location", registerPersonRequest.nShare_my_location);
            request.AddParameter("nSend_data_to_my_gp", registerPersonRequest.nSend_data_to_my_gp);
            request.AddParameter("vGp_name", registerPersonRequest.vGp_name);
            request.AddParameter("vGp_email", registerPersonRequest.vGp_email);
            request.AddParameter("vCar_plate_number", registerPersonRequest.vCar_plate_number);
            request.AddParameter("nDesignated_drivein_id", registerPersonRequest.nDesignated_drivein_id);
            request.AddParameter("vDesignated_drivein_city", registerPersonRequest.vDesignated_drivein_city);
            request.AddParameter("vDesignated_drivein_street_name", registerPersonRequest.vDesignated_drivein_street_name);
            request.AddParameter("vDesignated_drivein_street_number", registerPersonRequest.vDesignated_drivein_street_number);
            request.AddParameter("vDesignated_drivein_zip_code", registerPersonRequest.vDesignated_drivein_zip_code);
            request.AddParameter("nDesignated_drivein_longitude", registerPersonRequest.nDesignated_drivein_longitude);
            request.AddParameter("nDesignated_drivein_latitude", registerPersonRequest.nDesignated_drivein_latitude);
            request.AddParameter("dDesignated_drivein_scheduled_at", registerPersonRequest.dDesignated_drivein_scheduled_at);
            request.AddParameter("dDrivein_entered_at", registerPersonRequest.dDrivein_entered_at);
            request.AddParameter("dDrivein_left_at", registerPersonRequest.dDrivein_left_at);
            request.AddParameter("nAssesor_person_id", registerPersonRequest.nAssesor_person_id);
            request.AddParameter("dOperator_assessed_at", registerPersonRequest.dOperator_assessed_at);
            request.AddParameter("dMedical_assessed_at", registerPersonRequest.dMedical_assessed_at);
            request.AddParameter("nIs_smoking", registerPersonRequest.nIs_smoking);
            request.AddParameter("dFever_started_at", registerPersonRequest.dFever_started_at);
            request.AddParameter("dFever_ended_at", registerPersonRequest.dFever_ended_at);
            request.AddParameter("nHas_lost_sense_of_smell", registerPersonRequest.nHas_lost_sense_of_smell);
            request.AddParameter("nHas_lost_sense_of_taste", registerPersonRequest.nHas_lost_sense_of_taste);
            request.AddParameter("nHas_pneumonia", registerPersonRequest.nHas_pneumonia);
            request.AddParameter("nHas_hypertension", registerPersonRequest.nHas_hypertension);
            request.AddParameter("nHas_cardiovascular_disease", registerPersonRequest.nHas_cardiovascular_disease);
            request.AddParameter("nHas_diabetes", registerPersonRequest.nHas_diabetes);
            request.AddParameter("nHas_oncological_disease", registerPersonRequest.nHas_oncological_disease);
            request.AddParameter("vPerson_identification_number", registerPersonRequest.vPerson_identification_number);
            request.AddParameter("nHas_severe_health_disability", registerPersonRequest.nHas_severe_health_disability);
            request.AddParameter("vHealth_disability_id_card", registerPersonRequest.vHealth_disability_id_card);
            request.AddParameter("nHas_disability_pension", registerPersonRequest.nHas_disability_pension);
            request.AddParameter("vIce_first_name", registerPersonRequest.vIce_first_name);
            request.AddParameter("vIce_last_name", registerPersonRequest.vIce_last_name);
            request.AddParameter("vIce_email", registerPersonRequest.vIce_email);
            request.AddParameter("vIce_phone", registerPersonRequest.vIce_phone);
            request.AddParameter("vEntered_by_first_name", registerPersonRequest.vEntered_by_first_name);
            request.AddParameter("vEntered_by_last_name", registerPersonRequest.vEntered_by_last_name);
            request.AddParameter("vEntered_by_email", registerPersonRequest.vEntered_by_email);
            request.AddParameter("vEntered_by_phone", registerPersonRequest.vEntered_by_phone);
            request.AddParameter("nQuarantine_center_id", registerPersonRequest.nQuarantine_center_id);
            request.AddParameter("dBirth_date", registerPersonRequest.dBirth_date);
            request.AddParameter("vGender", registerPersonRequest.vGender);
            request.AddParameter("nHas_planned_operation", registerPersonRequest.nHas_planned_operation);
            request.AddParameter("dOperation_planned_at", registerPersonRequest.dOperation_planned_at);
            request.AddParameter("nOperation_planned_in_subject_id", registerPersonRequest.nOperation_planned_in_subject_id);
            request.AddParameter("vOperation_planned_in_name", registerPersonRequest.vOperation_planned_in_name);
            request.AddParameter("vHas_come_from_country", registerPersonRequest.vHas_come_from_country);
            request.AddParameter("dEntry_from_abroad_planned_at", registerPersonRequest.dEntry_from_abroad_planned_at);
            request.AddParameter("vPersonal_id", registerPersonRequest.vPersonal_id);
            request.AddParameter("vQuarantine_municipality", registerPersonRequest.vQuarantine_municipality);
            request.AddParameter("vQuarantine_street", registerPersonRequest.vQuarantine_street);
            request.AddParameter("vQuarantine_street_number", registerPersonRequest.vQuarantine_street_number);
            request.AddParameter("vQuarantine_postal_code", registerPersonRequest.vQuarantine_postal_code);
            request.AddParameter("nHas_been_exposed", registerPersonRequest.nHas_been_exposed);
            request.AddParameter("nIs_mom_user", registerPersonRequest.nIs_mom_user);

            await Task.Delay(500);

            logger.LogInformation($"eHealth: Register person {registerPersonRequest.vBirth_number.GetSHA256Hash()}");
            var response = await client.ExecuteAsync(request);

            if (!response.IsSuccessful)
            {
                throw new Exception(response.Content);
            }
            return(JsonConvert.DeserializeObject <Model.EZdravie.Payload.HttpStatus[][]>(response.Content, deserializeSettings));
        }