public ActionResult Index(Guid key, Guid?assessmentKey = null)
        {
            var issuer      = WebConfigurationManager.AppSettings["WsFederationIssuer"];
            var realm       = WebConfigurationManager.AppSettings["WsFederationRealm"];
            var baseAddress = WebConfigurationManager.AppSettings["IdentityServerExternalSignInUrl"];
            //var passiveRedirectEnabled = WebConfigurationManager.AppSettings["WsFederationPassiveRedirectEnabled"];
            //var requireHttps = WebConfigurationManager.AppSettings["WsFederationRequireHttps"];
            var ehrId = WebConfigurationManager.AppSettings["EHRId"];

            var now = DateTime.UtcNow;
            // "/IdsrvDev/issue/wsfed?wa=wsignin1.0&wtrealm=https://localhost:44302/&wctx=rm=0&id=passive&ru=/Patient/Index/73FD9AF1-6341-4533-A772-A1BF00E5678E&wct=2013-05-19T02:28:00Z"
            //var returnUrl =@"/IdsrvDev/issue/wsfed?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%3a44302%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fPatient%252fIndex%252f73FD9AF1-6341-4533-A772-A1BF00E5678E&wct=2013-05-19T02%3a28%3a00Z";

            var returnUrl  = CertSignService.BuildReturnUrl(issuer, realm, "/Patient/Index/", key.ToString(), now);
            var testString = string.Format("PatientId={0}&EhrId={1}&ReturnUrl={2}&UserId={3}&UserName={4}&UserEmail={5}&Timestamp={6}&AssessmentId={7}",
                                           key, ehrId, returnUrl, "Leo.Smith", "Leo Smith", "*****@*****.**", now.ToString(CultureInfo.InvariantCulture),
                                           (assessmentKey.HasValue ? assessmentKey.ToString() : string.Empty));
            var signature = CertSignService.SignCertificate(testString, ehrId + "Cert"); // Note: by convention, signing certificate name is the EHRId+"Cert"
            var model     = new RequestModel
            {
                Url          = baseAddress,
                EhrId        = ehrId,
                ReturnUrl    = returnUrl,
                PatientId    = key,
                AssessmentId = assessmentKey,
                UserId       = "Leo.Smith",
                UserName     = "******",
                UserEmail    = "*****@*****.**",
                Timestamp    = now.ToString(CultureInfo.InvariantCulture),
                Token        = Convert.ToBase64String(signature)
            };

            return(View(model));
        }
Exemple #2
0
        public async Task <ActionResult> CreateAssessment(string id)
        {
            var httpRequest = new HttpClient();

            httpRequest.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            var authHeaderString = "UserId=123&UserName=Fred Jones&[email protected]&PatientId=" + id;

            var signature = CertSignService.SignCertificate(authHeaderString);

            authHeaderString += "&Token=" + Convert.ToBase64String(signature);

            httpRequest.DefaultRequestHeaders.Add("SSOAuth", authHeaderString);

            var response = await httpRequest.PostAsync(BaseUri + "api/Assessment/Post/" + id, new StringContent ( "" ));

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var key     = (await response.Content.ReadAsAsync <KeyResult> ()).Key;
                var patient = _createdPatients.First(p => p.PatientKey == id);
                patient.AssessmentKeys.Add(key);
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index", new { errorMessage = "Error Creating Assessment." }));
        }
Exemple #3
0
        public async Task <ActionResult> GetAssessmentData(string assessmentId)
        {
            var httpRequest = new HttpClient();

            httpRequest.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            var id = _createdPatients.First(p => p.AssessmentKeys.Any(a => a == assessmentId)).PatientKey;

            var authHeaderString = "UserId=123&UserName=Fred Jones&[email protected]&PatientId=" + id;

            var signature = CertSignService.SignCertificate(authHeaderString);

            authHeaderString += "&Token=" + Convert.ToBase64String(signature);

            httpRequest.DefaultRequestHeaders.Add("SSOAuth", authHeaderString);

            var response = await httpRequest.GetAsync(BaseUri + "api/Assessment/" + assessmentId);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var assessment = await response.Content.ReadAsStringAsync();

                return(View("Index",
                            new HomeViewModel
                {
                    Patients = _createdPatients,
                    ErrorMessage = null,
                    AssessmentData = assessment,
                    BaseUri = BaseUri
                }));
            }
            return(RedirectToAction("Index", new { errorMessage = "Error Getting Assessment Data." }));
        }
        //
        // GET: /Patient/

        public ActionResult Index(string id, string assessmentId = null)
        {
            var timestamp  = DateTime.Now.ToString();
            var testString = "PatientId=" + id + "&UserId=123&UserName=Fred Jones&[email protected]&Timestamp=" + timestamp + "&AssessmentId=" + assessmentId ?? string.Empty;
            var signature  = CertSignService.SignCertificate(testString);
            var model      = new RequestModel
            {
                Url          = HomeController.BaseUri + "SingleSignOn/",
                PatientId    = id,
                AssessmentId = assessmentId,
                UserId       = "123",
                UserName     = "******",
                UserEmail    = "*****@*****.**",
                Timestamp    = timestamp,
                Token        = Convert.ToBase64String(signature)
            };

            return(View(model));
        }
Exemple #5
0
        public async Task <ActionResult> CreatePatient(string firstName, string lastName, string dateOfBirth, string gender)
        {
            var httpRequest = new HttpClient();

            httpRequest.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            var authHeaderString = "UserId=123&UserName=Fred Jones&[email protected]";

            var signature = CertSignService.SignCertificate(authHeaderString);

            authHeaderString += "&Token=" + Convert.ToBase64String(signature);

            httpRequest.DefaultRequestHeaders.Add("SSOAuth", authHeaderString);

            //TODO: Pilot Only
            lastName    = firstName = "X";
            dateOfBirth = "1/1/2001";
            gender      = "Female";

            var response = await httpRequest.PostAsJsonAsync(BaseUri + "api/Patient/",
                                                             new PatientDto
            {
                Name        = new PersonName(firstName, lastName),
                DateOfBirth = DateTime.Parse(dateOfBirth),
                Gender      = new LookupDto {
                    Code = gender
                }
            });

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var key = (await response.Content.ReadAsAsync <KeyResult> ()).Key;
                _createdPatients.Add(new PatientViewModel
                {
                    PatientKey  = key,
                    PatientName = firstName + " " + lastName
                });
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index", new { errorMessage = "Error Creating Patient." }));
        }