Nano Hash - криптовалюты, майнинг, программирование

Как сделать простые базовые проверки данных

У меня есть небольшая веб-форма, в которую пользователь вводит некоторые данные пациента, и они передаются в страховой центр. Я просто хочу предоставить некоторую базовую проверку, например, числовой номер социального страхования sb, длину 10, числовой возраст sb и, возможно, более определенного возраста и т. д., как я могу это сделать, здесь, в этом коде?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
...


namespace PBM
{
    public partial class MainPage : UserControl
    {
        private DomainServicePBM _context = new DomainServicePBM();
        public MainPage()
        {
            InitializeComponent();
            this.ObjPatient = new Patient();
        }

        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            dgPatient.ItemsSource = _context.Patients;
            _context.Load(_context.GetPatientsBySearchQuery(sTxtFirstName.Text.Trim(), sTxtLastName.Text.Trim(), sCombGender.SelectedIndex == 1 ? false: sCombGender.SelectedIndex == 2 ? true : new bool?()));

            PagedCollectionView itemListView = new PagedCollectionView(dgPatient.ItemsSource);
            dpPatient.Source = itemListView;
        }

        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            //_context = new DomainServicePBM();
            if (ObjPatient != null && ObjPatient.PatientID > 0)
            {
                Patient p = _context.Patients.Single(pat => pat.PatientID == this.ObjPatient.PatientID);
                p.FirstName = txtFirstName.Text.Trim();
                p.LastName = txtLastName.Text.Trim();
                p.MiddleName = txtMiddleName.Text.Trim();
                p.Gender = cmbGender.SelectedIndex == 0 ? false : true;
                p.DOB = ctrlDTDOB.SelectedDate;
                p.Age = Convert.ToInt32(txtAge.Text.Trim());
                p.MaterialStatus = cmbMaritalStatus.SelectedIndex == 0 ? (byte)MaritalStatus.Single :
                    cmbMaritalStatus.SelectedIndex == 1 ? (byte)MaritalStatus.Married : (byte)MaritalStatus.Divorced;
                p.SSN = txtSSN.Text.Trim();
                p.MedicalID = txtMedicalID.Text.Trim();
                p.Medicare = txtMedicare.Text.Trim();
                p.Race = txtRace.Text.Trim();
                p.AdmitFrom = ctrlDTAdmitFrom.SelectedDate;
            }
            else
            {
                _context.Patients.Add(new Patient
                {
                    FirstName = txtFirstName.Text.Trim(),
                    LastName = txtLastName.Text.Trim(),
                    MiddleName = txtMiddleName.Text.Trim(),
                    Gender = cmbGender.SelectedIndex == 0 ? false : true,
                    DOB = ctrlDTDOB.SelectedDate,
                    Age = Convert.ToInt32(txtAge.Text.Trim()),
                    MaterialStatus = cmbMaritalStatus.SelectedIndex == 0 ? (byte)MaritalStatus.Single :
                    cmbMaritalStatus.SelectedIndex == 1 ? (byte)MaritalStatus.Married : (byte)MaritalStatus.Divorced,
                    SSN = txtSSN.Text.Trim(),
                    MedicalID = txtMedicalID.Text.Trim(),
                    Medicare = txtMedicare.Text.Trim(),
                    Race = txtRace.Text.Trim(),
                    AdmitFrom = ctrlDTAdmitFrom.SelectedDate
                });
            }
            _context.SubmitChanges(
                (SubmitOperation so) =>
                {
                    if (so.HasError)
                    {
                        MessageBox.Show("Patient Info Not Saved.");
                    }
                    else
                    {
                        MessageBox.Show("Patient Info Saved Successfully.");
                        ResetControls();
                        this.ObjPatient = new Patient();
                    }
                }, null);


        }



        Patient ObjPatient { get; set; }

        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            this.ObjPatient = new Patient();
        }

        private void ResetControls()
        {
            txtFirstName.Text = txtLastName.Text = txtMiddleName.Text = txtMedicalID.Text = txtMedicare.Text = txtRace.Text = txtSSN.Text = txtAge.Text = string.Empty;
            cmbGender.SelectedIndex = cmbMaritalStatus.SelectedIndex = 0;
            ctrlDTAdmitFrom.SelectedDate = ctrlDTDOB.SelectedDate = DateTime.Now;
        }

        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            this.ObjPatient = dgPatient.SelectedItem as Patient;
            if (this.ObjPatient != null)
            {
                _context.Patients.Remove(this.ObjPatient);
                _context.SubmitChanges(
                    (SubmitOperation so) =>
                    {
                        if (so.HasError)
                        {
                            MessageBox.Show(so.Error.ToString());
                        }
                        else
                        {
                            MessageBox.Show("Patient Deleted Successfully.");
                        }

                    }, null);
            }
            else
            {
                MessageBox.Show("Please select patient first.");
            }
        }

        private void btnEdit_Click(object sender, RoutedEventArgs e)
        {
            this.ObjPatient = dgPatient.SelectedItem as Patient;
            if (ObjPatient != null)
            {
                txtFirstName.Text = ObjPatient.FirstName;
                txtLastName.Text = ObjPatient.LastName;
                txtMiddleName.Text = ObjPatient.MiddleName;
                cmbGender.SelectedIndex = ObjPatient.Gender == true ? 0 : 1;
                cmbMaritalStatus.SelectedIndex = ObjPatient.MaterialStatus == 1 ? 0 : ObjPatient.MaterialStatus == 2 ? 1 : 2;
                txtAge.Text = Convert.ToString(ObjPatient.Age);
                ctrlDTDOB.SelectedDate = ObjPatient.DOB;
                ctrlDTAdmitFrom.SelectedDate = Convert.ToDateTime(ObjPatient.AdmitFrom);
                txtMedicalID.Text = ObjPatient.MedicalID;
                txtMedicare.Text = ObjPatient.Medicare;
                txtRace.Text = ObjPatient.Race;
                txtSSN.Text = ObjPatient.SSN;
            }
        }

        private void dpPatient_PageIndexChanged(object sender, EventArgs e)
        {
            _context.Patients.Skip(dpPatient.PageIndex).Take(1);
        }

    }

    public enum MaritalStatus {
        Single=0,
        Married=1, 
        Divorced = 2
    }
}
27.01.2012

Ответы:


1

Я бы взглянул на пространство имен DataAnnations. Он предоставляет атрибуты для определения всех видов проверок. Вам потребуется применить эти атрибуты к свойствам, требующим проверки. Затем вам понадобится способ проверить, проходят ли эти атрибуты проверку. Обычно это делается с помощью отражения. Взгляните на этот ответ.

27.01.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..