예제 #1
0
        /// <summary>
        /// Get Patient using id
        /// </summary>
        /// <param name="encounterId">encounter id</param>
        /// <returns>patient</returns>
        public async Task <Patient> GetPatient(int encounterId)
        {
            Patient patient = new Patient();

            using (var patientConnection =
                       new SqlConnection(SqlEncryptionHelper.BuildPatientDbConnection(this.patientDbConnectionStr)))
            {
                await patientConnection.OpenAsync();

                var getPatientCommand = new SqlCommand
                {
                    CommandType = CommandType.Text,
                    Connection  = patientConnection,
                    CommandText = $"select [FirstName],[MiddleName],[LastName],[eid],[gender],[vdate],[lengthofstay],[discharged] from [PatientData] where eid={encounterId}"
                };

                var patientReader = await getPatientCommand.ExecuteReaderAsync();

                while (patientReader.Read())
                {
                    var firstName     = patientReader.GetString(0);
                    var MiddleName    = patientReader.GetString(1);
                    var lastName      = patientReader.GetString(2);
                    var eid           = patientReader.GetInt32(3);
                    var gender        = patientReader.GetString(4);
                    var admissionDate = patientReader.GetDateTime(5);

                    var lengthOfStay = 0;
                    if (!patientReader.IsDBNull(6))
                    {
                        lengthOfStay = patientReader.GetInt32(6);
                    }

                    var discharged = DateTime.Now;
                    if (!patientReader.IsDBNull(7))
                    {
                        discharged = patientReader.GetDateTime(7);
                    }

                    patient.Eid          = eid;
                    patient.FirstName    = firstName;
                    patient.MiddleName   = MiddleName;
                    patient.LastName     = lastName;
                    patient.Gender       = gender;
                    patient.Vdate        = admissionDate;
                    patient.Lengthofstay = lengthOfStay;
                    patient.Discharged   = discharged;
                }
            }

            return(patient);
        }
예제 #2
0
        public async Task <int> DischargePatient(int eid, DateTime dischargeDate)
        {
            Guard.CheckValidEid(eid);

            int commandResult = 0;

            using (var patientConnection =
                       new SqlConnection(SqlEncryptionHelper.BuildPatientDbConnection(this.patientDbConnectionStr)))
            {
                await patientConnection.OpenAsync();

                try
                {
                    var patientDischargeCommand = new SqlCommand
                    {
                        Connection  = patientConnection,
                        CommandText = PatientSchema.PatientDischargeProcedure,
                        CommandType = CommandType.StoredProcedure
                    };

                    patientDischargeCommand.Parameters.Add(new SqlParameter(PatientSchema.EidParameterName, eid));
                    patientDischargeCommand.Parameters.Add(new SqlParameter(PatientSchema.dischargeDateParameterName, dischargeDate));
                    patientDischargeCommand.Parameters.Add(new SqlParameter(PatientSchema.resultParameterName, SqlDbType.Int));
                    patientDischargeCommand.Parameters[PatientSchema.resultParameterName].Direction = ParameterDirection.Output;

                    await patientDischargeCommand.ExecuteNonQueryAsync();

                    commandResult = Convert.ToInt32(patientDischargeCommand.Parameters[PatientSchema.resultParameterName].Value);
                }
                catch (Exception ex)
                {
                    throw new Exception($"{CoreConstants.PatientDischargeError}:{commandResult}", ex);
                }
            }

            return(commandResult);
        }
예제 #3
0
        public async Task <int> AdmitPatient(Patient patient)
        {
            Guard.NullCheckAndThrow(patient);

            var commandResult = 0;

            using (var patientConnection =
                       new SqlConnection(SqlEncryptionHelper.BuildPatientDbConnection(this.patientDbConnectionStr)))
            {
                await patientConnection.OpenAsync();

                try
                {
                    var patientAdmissionCommand = new SqlCommand
                    {
                        Connection  = patientConnection,
                        CommandText = PatientSchema.PatientAdmissionProcedure,
                        CommandType = CommandType.StoredProcedure
                    };

                    var admitPatientParam = this.CreateAdmitPatientParam(patient);
                    patientAdmissionCommand.Parameters.AddRange(admitPatientParam);
                    patientAdmissionCommand.Parameters[PatientSchema.resultParameterName].Direction =
                        ParameterDirection.Output;

                    await patientAdmissionCommand.ExecuteNonQueryAsync();

                    commandResult = Convert.ToInt32(patientAdmissionCommand.Parameters[PatientSchema.resultParameterName].Value);
                }
                catch (Exception ex)
                {
                    throw new Exception($"{CoreConstants.PatientAdmissionError}{ex.Message}", ex);
                }

                return(commandResult);
            }
        }