Kaynağa Gözat

Finish Filter Function

+ Add Filter Function
- Removed useless codes
ZhuYifan 5 yıl önce
ebeveyn
işleme
891698c0bb

+ 31 - 23
WpfTest1/MainWindow.xaml

@@ -8,7 +8,7 @@
         xmlns:my="clr-namespace:WpfTest1"
         xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="WpfTest1.MainWindow"
         mc:Ignorable="d"
-        Title="君德医疗上位机软件" Height="725" Width="1366"
+        Title="劳拉" Height="725" Width="1366"
         ShowTitleBar="True"
         ShowIconOnTitleBar="True"
 
@@ -16,11 +16,6 @@
         WindowState = "Normal" Loaded="MetroWindow_Loaded"
         >
     <Controls:MetroWindow.Resources>
-
-        <!--<Style BasedOn="{StaticResource MetroTabControlItem}" TargetType="{x:Type TabItem}" x:Key="smallerHeader" >
-            <Setter Property="Controls:ControlsHelper.HeaderFontSize" Value="18"></Setter>
-            BasedOn="{StaticResource MetroTabItem}"
-        </Style>-->
         <Style BasedOn="{StaticResource MetroTabItem}" TargetType="{x:Type TabItem}" x:Key="smallHeader" >
             <Setter Property="Controls:ControlsHelper.HeaderFontSize" Value="20"/>
             <!--BasedOn="{StaticResource MetroTabItem}"-->
@@ -80,23 +75,17 @@
         </Controls:WindowCommands>
     </Controls:MetroWindow.RightWindowCommands>
     <Grid x:Name="mainWndGrid" Background="#FFFFFF" >
-        <!-- #333945 -->
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="395*"/>
             <ColumnDefinition Width="959*"/>
         </Grid.ColumnDefinitions>
         <TabControl x:Name="tabControlGeneral"  HorizontalAlignment="Left" Height="694" VerticalAlignment="Top" Width="1358" SelectionChanged="tabControlGeneral_SelectionChanged" Grid.ColumnSpan="2" Controls:TabControlHelper.Underlined="TabPanel" >
             <TabItem Header="首页" Style="{StaticResource smallHeader}" x:Uid="1000">
-                <!--Style="{StaticResource darkItem}"
-                <TabItem.Header>
-                    <Label Style="{StaticResource whiteLabel}">首页</Label>
-                </TabItem.Header>-->
                 <Grid  Margin="-1,-1,-1,-1">
-
                     <Grid.Background>
                         <ImageBrush ImageSource="/WpfTest1;component/Resources/homepage.jpg" />
                     </Grid.Background>
-                   <Button x:Name="buttonHomePageAddPatient" Content="Button" HorizontalAlignment="Left" Margin="315,178,0,0" VerticalAlignment="Top" Width="160" Height="150" Background="#FFA07A" Click="buttonHomePageAddPatient_Click">
+                    <Button x:Name="buttonHomePageAddPatient" Content="Button" HorizontalAlignment="Left" Margin="315,178,0,0" VerticalAlignment="Top" Width="160" Height="150" Background="#FFA07A" Click="buttonHomePageAddPatient_Click">
                         <Button.ContentTemplate>
                             <DataTemplate>
                                 <StackPanel>
@@ -212,14 +201,9 @@
                 </Grid>
             </TabItem>
             <TabItem Header="用户管理" Style="{StaticResource smallHeader}" >
-                <!--<TabItem.Header>
-                    <Label Style="{StaticResource whiteLabel}">病例管理</Label>
-                </TabItem.Header>-->
                 <TabControl x:Name="tabPatientManagent" HorizontalAlignment="Left" Height="645" Width="1338" Margin="10,-5,0,0" VerticalAlignment="Top" >
                     <TabItem  Header="用户管理" Style="{StaticResource smallerHeader}"  IsEnabled="False" >
                         <Grid Background="White" Margin="0,0,0,0">
-                            <!--<Button x:Name="buttonSelectPaitent" Content="开始测量" HorizontalAlignment="Left" Margin="24,404,0,0" VerticalAlignment="Top" Width="236" Click="buttonSelectPaitent_Click" Height="38" Background="#FF3C9BB8" FontSize="18"/>-->
-                            <!--<my:selectUser Margin="-1,0,29,29"></my:selectUser>-->
                             <my:selectUser x:Name="selectUserPatientManagent" Margin="0,0,0,0"/>
                             <Button x:Name="buttonAddPatient" Content="添加用户" HorizontalAlignment="Left" Margin="41,531,0,0" VerticalAlignment="Top" Width="71" Height="36" FontSize="15" Click="buttonAddPatient_Click"/>
                             <Button x:Name="buttonModifyPatient" Content="修改用户" HorizontalAlignment="Left" Margin="117,531,0,0" VerticalAlignment="Top" Width="76" Height="36" FontSize="15" Click="buttonModifyPatient_Click"/>
@@ -227,14 +211,38 @@
                         </Grid>
                     </TabItem>
                 </TabControl>
-
             </TabItem>
 
-        <TabItem Header="系统设置" x:Name="tabitemDoctorSetting" Style="{StaticResource smallHeader}">
-                <!--<TabItem.Header>
-                    <Label Style="{StaticResource whiteLabel}">系统设置</Label>
-                </TabItem.Header>-->
+            <!--快筛-->
+            <TabItem Header="筛查" Style="{StaticResource smallHeader}" >
+                <TabControl x:Name="tabFilter" HorizontalAlignment="Left" Height="645" Width="1338" Margin="10,-5,0,0" VerticalAlignment="Top" >
+                    <TabItem  Header="选择用户" Style="{StaticResource smallerHeader}"  IsEnabled="False" >
+                        <Grid Background="White" Margin="0,0,0,0">
+                            <my:selectUser x:Name="selectUserfilter" Margin="0,0,0,0"></my:selectUser>
+                            <Button x:Name="buttonFilterSelectPatient" IsEnabled="True" Content="开始测试" HorizontalAlignment="Left" Margin="41,531,0,0" VerticalAlignment="Top" Width="240" Height="36" FontSize="15" Click="buttonFilterSelectPatient_Click"/>
+                        </Grid>
+                    </TabItem>
+                    <TabItem  Header="筛查流程" Style="{StaticResource smallerHeader}"  IsEnabled="False" >
+                        <Grid Background="White" Margin="0,0,0,0">
+                            
+                            <Button x:Name="buttonAbortFilter" Content="中止筛查" HorizontalAlignment="Left" Margin="1150,35,0,0" VerticalAlignment="Top" Width="132" Height="50" FontSize="18" Background="#FFB92424" Foreground="White" Click="buttonAbortFilter_Click"/>
+                            <Label x:Name="labelGong" Content="共" HorizontalAlignment="Left" Margin="490,36,0,0" VerticalAlignment="Top" FontSize="30"/>
+                            <Label x:Name="labelFilterNumberofTotalQuestions" Content="XXX" HorizontalAlignment="Left" Margin="530,36,0,0" VerticalAlignment="Top" FontSize="30"/>
+                            <Label x:Name="labelTi" Content="题,当前第" HorizontalAlignment="Left" Margin="600,36,0,0" VerticalAlignment="Top" FontSize="30"/>
+                            <Label x:Name="labelFilterNumberofCurrentQuestion" Content="XXX" HorizontalAlignment="Left" Margin="760,36,0,0" VerticalAlignment="Top" FontSize="30"/>
+                            <Label x:Name="labelTi2" Content="题" HorizontalAlignment="Left" Margin="830,36,0,0" VerticalAlignment="Top" FontSize="30"/>
+                            <TextBlock x:Name="textBlockFilterQuetionContent" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="94,90,0,0" TextWrapping="Wrap" Text="Here is the question content." Height="200" Width="1150" FontSize="20"/>
+                            <Grid x:Name="gridFilterSelection" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="94,300,0,0" Width="1150" Height="200" ></Grid>
+                            <Button x:Name="buttonFilterPrevious" Content="上一题" HorizontalAlignment="Left" Margin="424,550,0,0" VerticalAlignment="Top" Width="130" Height="50" FontSize="18" IsEnabled="False" Click="buttonFilterPrevious_Click" />
+                            <Button x:Name="buttonFilterNext" Content="下一题" HorizontalAlignment="Left" Margin="784,550,0,0" VerticalAlignment="Top" Width="130" Height="50" FontSize="18" IsEnabled="False" Click="buttonFilterNext_Click" />
+                            <Button x:Name="buttonSubmitFilter" Content="提交" HorizontalAlignment="Left" Margin="604,550,0,0" VerticalAlignment="Top" Width="130" Height="50" FontSize="18" Background="#FF317602" Foreground="White" IsEnabled="False" Click="buttonSubmitFilter_Click"/>
+                        </Grid>
+                    </TabItem>
+                </TabControl>
+
+            </TabItem>
 
+            <TabItem Header="系统设置" x:Name="tabitemDoctorSetting" Style="{StaticResource smallHeader}">
                 <TabControl x:Name="tabControlSystemSetting" HorizontalAlignment="Left" Height="645" Margin="10,-5,0,0" VerticalAlignment="Top" Width="1338" SelectionChanged="tabControlSystemSetting_SelectionChanged">
                     <TabItem Header="医师账户管理" Style="{StaticResource smallerHeader}" >
                         <Grid x:Name="Seeting_ExpressionManagent" Background="White" Margin="0,0,0,0"  >

+ 223 - 24
WpfTest1/MainWindow.xaml.cs

@@ -1,33 +1,15 @@
 using System;
 using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Data;
 using System.IO;
-using System.Windows.Documents;
 using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
 using MahApps.Metro.Controls;
-using System.Windows.Threading;
 using MahApps.Metro.Controls.Dialogs;
 using System.Data;
 using WpfTest1.SQLite;
 using WpfTest1.Toolkits;
-using Ciloci.Flee;
-using System.Threading;
-using System.Timers;
-using System.ComponentModel;
-using System.IO.Ports;
-using System.Collections.Concurrent;
-using Microsoft.Win32;
-using System.Data.SQLite;
-using System.Collections;
+using LitJson;
 
 namespace WpfTest1
 {
@@ -48,6 +30,12 @@ namespace WpfTest1
         #endregion
 
         #region 优化系统效率参数
+        Patient filterPatient;
+        List<QuestionAnswerPair> filterQuestionaire = new List<QuestionAnswerPair>();
+        List<QuestionAnswerPair> evaluationQuestionaire = new List<QuestionAnswerPair>();
+        List<UserSelection> filterUserSelection = new List<UserSelection>();
+        List<UserSelection> evaluation = new List<UserSelection>();
+        int currentFilterCount = 0;
         
         #endregion
 
@@ -91,7 +79,22 @@ namespace WpfTest1
                 loginedDoctorName.Content = "欢迎您, " + loginDoctor.name;
                 return;
             }
+            loadQuestionaire(filterQuestionaire, "filter");
+            loadQuestionaire(evaluationQuestionaire, "evaluation");
         }
+
+        private void loadQuestionaire(List<QuestionAnswerPair> oneQuestionaire, string type = "filter")
+        {
+            oneQuestionaire.Clear();
+            List<Question> questions = SQLite.SQLiteModel.getQuestions(type);
+            foreach (Question oneQuestion in questions)
+            {
+                List<Answer> answers = SQLite.SQLiteModel.getAnswersByQid(oneQuestion.q_id.ToString());
+                QuestionAnswerPair temp = new QuestionAnswerPair(oneQuestion, answers);
+                oneQuestionaire.Add(temp);
+            }
+        }
+
         #endregion
 
         #region 首页功能
@@ -162,10 +165,9 @@ namespace WpfTest1
             }
             catch(Exception err)
             {
-                this.ShowMessageAsync("警告","请选择一个病例进行修改\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace );
-                //MessageBox.Show("请选择一个病例进行修改\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace,"警告");
-            }
-            
+                //this.ShowMessageAsync("警告","请选择一个病例进行修改\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace );
+                MessageBox.Show("请选择一个病例进行修改\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace,"警告");
+            }  
         }
         #endregion
 
@@ -211,6 +213,197 @@ namespace WpfTest1
         #endregion
         #endregion
 
+        #region 筛查功能
+
+        /// <summary>
+        /// 点击开始筛查后触发的事件
+        /// </summary>
+        /// <param name="sender">默认</param>
+        /// <param name="e">默认</param>
+        public void buttonFilterSelectPatient_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                var target = (DataRowView)this.selectUserfilter.dataGrid.SelectedItem;
+                filterPatient = SQLite.SQLiteModel.getPatientById(target["p_id"].ToString());
+            }
+            catch (Exception err)
+            {
+                MessageBox.Show("请选择一个病例进行修改\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace, "警告");
+                return;
+            }
+            if(filterPatient == null)
+            {
+                MessageBox.Show("数据库加载异常", "错误");
+                return;
+            }
+            try
+            {
+                loadQuestionaire(filterQuestionaire, "filter");
+                filterUserSelection.Clear();
+                foreach(QuestionAnswerPair qa in filterQuestionaire)
+                {
+                    filterUserSelection.Add(new UserSelection(qa.question.q_id, 0));
+                }
+            }
+            catch (Exception err)
+            {
+                MessageBox.Show("筛查题目加载失败\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace, "错误");
+                return;
+            }
+            if(filterQuestionaire.Count == 0)
+            {
+                MessageBox.Show("筛查题目加载失败\r\n数据库中无有效问卷", "错误");
+                return;
+            }
+            currentFilterCount = 1;
+            loadQuestionViewFilter(currentFilterCount);
+            tabFilter.SelectedIndex += 1;
+        }
+
+
+        /// <summary>
+        /// 点击中止筛查后触发的事件
+        /// </summary>
+        /// <param name="sender">默认</param>
+        /// <param name="e">默认</param>
+        private void buttonAbortFilter_Click(object sender, RoutedEventArgs e)
+        {
+            filterUserSelection.Clear();
+            currentFilterCount = 0;
+            buttonFilterPrevious.IsEnabled = false;
+            buttonFilterNext.IsEnabled = false;
+            buttonSubmitFilter.IsEnabled = false;
+
+            tabFilter.SelectedIndex = 0;
+        }
+
+        /// <summary>
+        /// 点击筛查上一步后触发的事件
+        /// </summary>
+        /// <param name="sender">默认</param>
+        /// <param name="e">默认</param>
+        private void buttonFilterPrevious_Click(object sender, RoutedEventArgs e)
+        {
+            currentFilterCount -= 1;
+            loadQuestionViewFilter(currentFilterCount);
+            checkFilterButtonStatues();
+        }
+
+        /// <summary>
+        /// 点击筛查下一步后触发的事件
+        /// </summary>
+        /// <param name="sender">默认</param>
+        /// <param name="e">默认</param>
+        private void buttonFilterNext_Click(object sender, RoutedEventArgs e)
+        {
+            currentFilterCount += 1;
+            loadQuestionViewFilter(currentFilterCount);
+            checkFilterButtonStatues();
+        }
+
+        /// <summary>
+        /// 确认筛查阶段各个按钮应当处于的状态
+        /// </summary>
+        private void checkFilterButtonStatues()
+        {
+            bool radioCheckFlag = false;
+            foreach(RadioButton rb in gridFilterSelection.Children){
+                if(rb.IsChecked == true)
+                {
+                    radioCheckFlag = true;
+                }
+            }
+            if (radioCheckFlag && currentFilterCount < filterQuestionaire.Count)
+                buttonFilterNext.IsEnabled = true;
+            else
+                buttonFilterNext.IsEnabled = false;
+            if (currentFilterCount > 1)
+                buttonFilterPrevious.IsEnabled = true;
+            else
+                buttonFilterPrevious.IsEnabled = false;
+            bool allFilledFlag = true;
+            foreach (UserSelection us in filterUserSelection)
+            {
+                if (us.a_id == 0)
+                    allFilledFlag = false;
+            }
+            if (allFilledFlag)
+                buttonSubmitFilter.IsEnabled = true;
+            else
+                buttonSubmitFilter.IsEnabled = false;
+        }
+
+        /// <summary>
+        /// 加载题目和选项界面
+        /// </summary>
+        private void loadQuestionViewFilter(int currentIndex)
+        {
+            labelFilterNumberofTotalQuestions.Content = filterQuestionaire.Count.ToString();
+            labelFilterNumberofCurrentQuestion.Content = currentIndex.ToString();
+            textBlockFilterQuetionContent.Text = filterQuestionaire[currentIndex - 1].question.q_content;
+            int countOptions = filterQuestionaire[currentIndex - 1].answers.Count;
+            gridFilterSelection.Children.Clear();
+            for (int i = 0; i< countOptions; ++i)
+            {
+                RadioButton oneOption = new RadioButton();
+                oneOption.Height = 30;
+                oneOption.HorizontalAlignment = HorizontalAlignment.Left;
+                oneOption.VerticalAlignment = VerticalAlignment.Top;
+                oneOption.Margin = new Thickness(i/5*200, i%5*40, 0, 0);
+                if(filterUserSelection[currentIndex-1].a_id == filterQuestionaire[currentIndex - 1].answers[i].a_id)
+                    oneOption.IsChecked = true;
+                else
+                    oneOption.IsChecked = false;
+                oneOption.Content = filterQuestionaire[currentIndex - 1].answers[i].a_content;
+                oneOption.Checked += radioButtonFilter_Checked;
+                oneOption.GroupName = "filterOption";
+                oneOption.FontSize = 18;
+                oneOption.Name = "rbf" + filterQuestionaire[currentIndex - 1].answers[i].a_id.ToString();
+                gridFilterSelection.Children.Add(oneOption);
+            }
+        }
+
+        private void radioButtonFilter_Checked(object sender, RoutedEventArgs e)
+        {
+            //首先,记录该选择
+            RadioButton oneSelection = (RadioButton)sender;
+            filterUserSelection[currentFilterCount - 1].a_id = Convert.ToInt32(oneSelection.Name.Substring(3));
+            //MessageBox.Show(filterUserSelection[currentFilterCount - 1].a_id.ToString());
+            //然后,确认各个按钮状态
+            checkFilterButtonStatues();
+        }
+
+        /// <summary>
+        /// 点击筛查提交后触发的事件
+        /// </summary>
+        /// <param name="sender">默认</param>
+        /// <param name="e">默认</param>
+        private void buttonSubmitFilter_Click(object sender, RoutedEventArgs e)
+        {
+            MessageBoxResult dr = MessageBox.Show("确定提交吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
+            if (dr == MessageBoxResult.OK)
+            {
+                string results = JsonMapper.ToJson(filterUserSelection);
+                //MessageBox.Show(results);
+                try
+                {
+                    SQLiteModel.insertRecord(1, filterPatient.p_id, loginDoctor.id, 0, DateTime.Now, 0, results);
+                    SQLiteModel.UpdatePatientDataWithLastDate(filterPatient.p_id, "p_last_filter_time", DateTime.Now);
+                }
+                catch (Exception err)
+                {
+                    MessageBox.Show("储存筛查报告错误\r\n调试信息:" + err.Message + "\r\n" + err.StackTrace, "错误");
+                    return;
+                }
+                MessageBox.Show("保存成功", "提示");
+                buttonAbortFilter_Click(sender, e);
+            }
+            return;
+        }
+
+        #endregion
+
         #region 系统设置
         //系统设置
         //进入系统设置前主任级别用户的身份验证
@@ -556,7 +749,7 @@ namespace WpfTest1
                 //确实删除这些病人所含有的检查记录
                 foreach(string each_line in ids_to_be_deleted)
                 {
-                    SQLite.SQLiteModel.DeleteRecordItem(each_line);
+                    //SQLite.SQLiteModel.DeleteRecordItem(each_line);
                 }
                 MessageBox.Show("操作完成", "信息");
             }
@@ -605,10 +798,16 @@ namespace WpfTest1
             }
         }
 
+
+
+
+
+
         #endregion
 
         #endregion
 
+        
     }
 
 

+ 20 - 0
WpfTest1/SQLite/Answer.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Emit;
+using System.Text;
+namespace WpfTest1.SQLite
+{
+    public class Answer
+    {
+        public int a_id { get; set; }
+        public int q_id { get; set; } //1->filter; 2->evaluation
+        public int a_value { get; set; }
+        public int evaluation_q_id { get; set; }
+        public string a_content { get; set; }
+        public string a_description_text { get; set; }
+        public string a_description_img { get; set; }
+        public string a_suggestion_text { get; set; }
+        public string a_suggestion_img { get; set; }
+    }
+}

+ 16 - 0
WpfTest1/SQLite/Question.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Emit;
+using System.Text;
+namespace WpfTest1.SQLite
+{
+    public class Question
+    {
+        public int q_id { get; set; }
+        public int q_type { get; set; } //1->filter; 2->evaluation
+        public int q_number { get; set; }
+        public string q_content { get; set; }
+        public int filter_a_id { get; set; }
+    }
+}

+ 18 - 0
WpfTest1/SQLite/QuestionAnswerPair.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Emit;
+using System.Text;
+namespace WpfTest1.SQLite
+{
+    public class QuestionAnswerPair
+    {
+        public Question question;
+        public List<Answer> answers;
+        public QuestionAnswerPair(Question q, List<Answer> a)
+        {
+            question = q;
+            answers = a;
+        }
+    }
+}

+ 101 - 507
WpfTest1/SQLite/SQLiteModel.cs

@@ -176,60 +176,7 @@ namespace WpfTest1.SQLite
                                                                };
             db.ExecuteNonQuery(sql, parameters);
         }
-        //Patient表的插入 返回自增主键
-        public static int InsertPatientAndReturnID(string record_id, string name, string gender, double height, double weight, int pregnancy_times, DateTime birth_date, string phone, string address, string history, string diagnosis, string name_py)
-        {
-            string sql = "INSERT INTO Patient(p_record_id,p_name,p_gender,p_height,p_weight,p_pregnancy_time,p_birthdate,p_phone,p_address,p_history,p_diagnosis, p_name_py)" +
-                                       "values(@record_id,@name,@gender,@height,@weight,@pregnancy_times,@birthdate,@phone,@address,@history,@diagnosis,@name_py)";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@record_id",record_id),
-                                                               new SQLiteParameter("@name",name),
-                                                               new SQLiteParameter("@gender",gender),
-                                                               new SQLiteParameter("@height",height),
-                                                               new SQLiteParameter("@weight",weight),
-                                                               new SQLiteParameter("@pregnancy_times",pregnancy_times),
-                                                               new SQLiteParameter("@birthdate",birth_date),
-                                                               new SQLiteParameter("@phone",phone),
-                                                               new SQLiteParameter("@address",address),
-                                                               new SQLiteParameter("@history",history),
-                                                               new SQLiteParameter("@diagnosis",diagnosis),
-                                                               new SQLiteParameter("@name_py",name_py),
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-            //Console.WriteLine(db.ExecuteScalar("select last_insert_rowid() from Patient",null).ToString());
-            //int new_id = Int32.Parse(db.ExecuteScalar("select id from Patient order by id desc", parameters).ToString());
-            int new_id = Convert.ToInt32(db.ExecuteFindNewID("select max(id) from Patient;"));
-            //int new_id = Convert.ToInt32(db.ExecuteFindNewID("select last_insert_rowid(id) from Patient;"));
-            //Console.WriteLine(new_id);
-            //return (Int32)db.ExecuteScalar("select last_insert_rowid();", new SQLiteParameter[] { });
 
-            return new_id;
-            
-        }
-
-        //Patient表的更新 不更新生日
-        public static void UpdatePatientData2_useless(string record_id, string name, string gender, double height, double weight, int pregnancy_times, DateTime birth_date, string phone, string address, string history, string diagnosis, string name_py)
-        {
-            //Boolean a = false;
-            string sql = "UPDATE Patient SET p_record_id=@record_id,p_name=@name,p_gender=@gender,p_height=@height,p_weight=@weight,p_pregnancy_time=@pregnancy_times,p_birthdate= @birth_date, p_phone = @mobile,p_address=@address,p_history=@history,p_diagnosis=@diagnosis,p_name_py=@name_py WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@record_id",record_id),
-                                                               new SQLiteParameter("@name",name),
-                                                               new SQLiteParameter("@gender",gender),
-                                                               new SQLiteParameter("@height",height),
-                                                               new SQLiteParameter("@weight",weight),
-                                                               new SQLiteParameter("@pregnancy_times",pregnancy_times),
-                                                               new SQLiteParameter("@birthdate",birth_date),
-                                                               new SQLiteParameter("@phone",phone),
-                                                               new SQLiteParameter("@address",address),
-                                                               new SQLiteParameter("@history",history),
-                                                               new SQLiteParameter("@diagnosis",diagnosis),
-                                                               new SQLiteParameter("@name_py",name_py),
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
         //Patient表的更新
         public static void UpdatePatientData(string id, string record_id, string name, string gender, double height, double weight, int pregnancy_times, DateTime birth_date, string phone, string address, string history, string diagnosis, string name_py)
         {
@@ -256,7 +203,7 @@ namespace WpfTest1.SQLite
         }
         //Patient表的仅更新最后XX时间的方法
         //type 为 filter 或 evaluation
-        public static void UpdatePatientDataWithLastFilterDate(string id, string type, DateTime lastRecordDate)
+        public static void UpdatePatientDataWithLastDate(int id, string type, DateTime lastRecordDate)
         {
             string colum_select = "p_last_filter_time";
             if(type == "evaluation")
@@ -328,44 +275,6 @@ namespace WpfTest1.SQLite
             }
             return false;
         }
-        //通过身份证号、孕次、产次查找Patient
-        public static Patient getPatientByIdNum_pregnancy_brith_useless(string idNum,int pregnancy_times, int birth_times)
-        {
-            string sql = "SELECT * FROM Patient WHERE idNUm = @idNum AND pregnancy_times = @pregnancy_times AND birth_times = @birth_times AND delete_flag = 0 LIMIT 1";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@idNum",idNum),
-                                                               new SQLiteParameter("@pregnancy_times",pregnancy_times),
-                                                               new SQLiteParameter("@birth_times",birth_times),
-
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {/*
-                    Patient temp = new Patient();
-                    temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
-                    temp.record_id = reader.IsDBNull(1) ? "" : reader.GetString(1);
-                    temp.idNum = reader.IsDBNull(2) ? "" : reader.GetString(2);
-                    temp.name = reader.IsDBNull(3) ? "" : reader.GetString(3);
-                    temp.height = reader.IsDBNull(4) ? 0 : reader.GetDouble(4);
-                    temp.weight = reader.IsDBNull(5) ? 0 : reader.GetDouble(5);
-                    temp.base_heartrate = reader.IsDBNull(6) ? 0 : reader.GetInt32(6);
-                    temp.pregnancy_times = reader.IsDBNull(7) ? 0 :reader.GetInt32(7);
-                    temp.birth_times = reader.IsDBNull(8) ? 0 : reader.GetInt32(8);
-                    temp.pregnancy_date = reader.IsDBNull(9) ? DateTime.MinValue : reader.GetDateTime(9);
-                    temp.mobile = reader.IsDBNull(10)? "" : reader.GetString(10);
-                    temp.profession = reader.IsDBNull(11) ? "" : reader.GetString(11);
-                    temp.address = reader.IsDBNull(12) ? "" : reader.GetString(12);
-                    temp.category = reader.IsDBNull(13) ? "" : reader.GetString(13);
-                    temp.group_1 = reader.IsDBNull(14) ? "" : reader.GetString(14);
-                    temp.firstLetterPY = reader.IsDBNull(15) ? "" : reader.GetString(15);
-                    temp.description = reader.IsDBNull(16) ? "" : reader.GetString(16);
-                    return temp;*/
-                }
-            }
-            return null;
-        }
 
         //通过id主键查找Patient
         public static Patient getPatientById(string id)
@@ -402,94 +311,141 @@ namespace WpfTest1.SQLite
             }
             return null;
         }
-        //根据拼音获取patient记录
-        public static void getPatientByPY_useless(string py)
+        #endregion
+
+        #region Question_template表的相关操作
+
+        public static List<Question> getQuestions(string type = "filter")
         {
-            //查询从20条起的50条记录 
-            string sql = "SELECT * FROM Patient WHERE firstLetterPY like\'%" + py + "%\' AND delete_flag=0";
+            List<Question> questions = new List<Question>();
+            string condition = "q_type = 1";
+            if(type == "evaluation")
+            {
+                condition = "q_type = 2";
+            }
+            string sql = "SELECT * FROM Question_template WHERE " + condition + " order by q_number asc";
             SQLiteHelper db = new SQLiteHelper(dbPath);
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
+            SQLiteParameter[] parameters = new SQLiteParameter[]{};
+            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
             {
                 while (reader.Read())
                 {
-                    Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
+                    Question temp = new Question();
+                    temp.q_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
+                    temp.q_type = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
+                    temp.q_number = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
+                    temp.q_content = reader.IsDBNull(3) ? "" : reader.GetString(3);
+                    temp.filter_a_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
+                    questions.Add(temp);
                 }
             }
+            return questions;
         }
-        //根据姓名获取patient记录
-        public static void getPatientByName_useless(string name)
-        {
-            string sql = "SELECT * FROM Patient WHERE name like\'%" + name+ "%\' AND delete_flag=0";
-            Console.WriteLine(sql);
+
+        public static Question getQuestionById(string qid)
+        { 
+            string sql = "SELECT * FROM Question_template WHERE q_id=@qid LIMIT 1";
             SQLiteHelper db = new SQLiteHelper(dbPath);
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
+            SQLiteParameter[] parameters = new SQLiteParameter[]{
+                                                               new SQLiteParameter("@qid",qid),
+                                                               };
+            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
             {
                 while (reader.Read())
                 {
-                    //Console.WriteLine("DDDDDDDDDDDDDDDDDDDD");
-                    Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
+                    Question temp = new Question();
+                    temp.q_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
+                    temp.q_type = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
+                    temp.q_number = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
+                    temp.q_content = reader.IsDBNull(3) ? "" : reader.GetString(3);
+                    temp.filter_a_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
+                    return temp;
                 }
             }
+            return null;
         }
-        //根据condition获取patient记录
-        public static DataView getPatientByCondition_useless(string condition)
+
+        #endregion
+
+        #region Answer_template表相关操作
+        public static List<Answer> getAnswersByQid(string qid)
         {
-            /*
-             * 
-             
-            string sql = "SELECT * FROM Patient WHERE delete_flag=0 " + condition;
-            Console.WriteLine(sql);
+            List<Answer> questions = new List<Answer>();
+            string sql = "SELECT * FROM Answer_template WHERE q_id=@qid order by a_id asc";
             SQLiteHelper db = new SQLiteHelper(dbPath);
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
+            SQLiteParameter[] parameters = new SQLiteParameter[]{
+                                                               new SQLiteParameter("@qid",qid),
+                                                               };
+            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
             {
-                return reader;
                 while (reader.Read())
                 {
-                    //Console.WriteLine("DDDDDDDDDDDDDDDDDDDD");
-                    Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
+                    Answer temp = new Answer();
+                    temp.a_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
+                    temp.q_id = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
+                    temp.a_content = reader.IsDBNull(2) ? "" : reader.GetString(2);
+                    temp.a_value = reader.IsDBNull(3) ? 0 : reader.GetInt32(3);
+                    temp.evaluation_q_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
+                    temp.a_description_text = reader.IsDBNull(5) ? "" : reader.GetString(5);
+                    temp.a_description_img = reader.IsDBNull(6) ? "" : reader.GetString(6);
+                    temp.a_suggestion_text = reader.IsDBNull(7) ? "" : reader.GetString(7);
+                    temp.a_suggestion_img = reader.IsDBNull(8) ? "" : reader.GetString(8);
+                    questions.Add(temp);
                 }
             }
-             */
-            //var path1 = "d:\\temp\\temp.db";
-            string sql = "SELECT * FROM Patient WHERE delete_flag=0 " + condition;
-            System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
-            connstr.DataSource = dbPath;
-            System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
-            conn.ConnectionString = connstr.ToString();
-            conn.Open();
-            SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, conn);
-            DataSet ds = new DataSet();
-            adapter.Fill(ds);
-            DataView dv = ds.Tables[0].DefaultView;
-
-            conn.Close();
-            conn.Dispose();
-            return dv;
-
-
+            return questions;
         }
 
-        //获取Patient表的用户所有分类和所有用户组
-        public static List<string> getCategory_useless(string taskType="category")
+        public static Answer getAnswerById(string aid)
         {
-            string sql = "SELECT " + taskType + " FROM Patient WHERE delete_flag = 0 group by " + taskType;
-            List<string> result = new List<string>();
+            string sql = "SELECT * FROM Answer_template WHERE a_id=@aid LIMIT 1";
             SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{ };
+            SQLiteParameter[] parameters = new SQLiteParameter[]{
+                                                               new SQLiteParameter("@aid",aid),
+                                                               };
             using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
             {
                 while (reader.Read())
                 {
-                    if (reader.IsDBNull(0))
-                        continue;
-                    result.Add(reader.GetString(0));
+                    Answer temp = new Answer();
+                    temp.a_id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
+                    temp.q_id = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
+                    temp.a_content = reader.IsDBNull(2) ? "" : reader.GetString(2);
+                    temp.a_value = reader.IsDBNull(3) ? 0 : reader.GetInt32(3);
+                    temp.evaluation_q_id = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
+                    temp.a_description_text = reader.IsDBNull(5) ? "" : reader.GetString(5);
+                    temp.a_description_img = reader.IsDBNull(6) ? "" : reader.GetString(6);
+                    temp.a_suggestion_text = reader.IsDBNull(7) ? "" : reader.GetString(7);
+                    temp.a_suggestion_img = reader.IsDBNull(8) ? "" : reader.GetString(8);
+                    return temp;
                 }
-                reader.Close();
             }
-            return result;
+            return null;
+        }
+        #endregion
+
+        #region Record表相关操作
+
+        public static void insertRecord(int r_type, int p_id, int d_id, int filter_id, DateTime r_time, int r_count, string r_selection)
+        {
+            string sql = "INSERT INTO Record(r_type,p_id,d_id,filter_id,r_time,r_count,r_selection)" +
+                            "values(@r_type,@p_id,@d_id,@filter_id,@r_time,@r_count,@r_selection)";
+            SQLiteHelper db = new SQLiteHelper(dbPath);
+            SQLiteParameter[] parameters = new SQLiteParameter[]{
+                                                               new SQLiteParameter("@r_type",r_type),
+                                                               new SQLiteParameter("@p_id",p_id),
+                                                               new SQLiteParameter("@d_id",d_id),
+                                                               new SQLiteParameter("@filter_id",filter_id),
+                                                               new SQLiteParameter("@r_time",r_time),
+                                                               new SQLiteParameter("@r_count",r_count),
+                                                               new SQLiteParameter("@r_selection",r_selection)
+                                                               };
+            db.ExecuteNonQuery(sql, parameters);
         }
+
         #endregion
 
+
         #region doctor表相关的操作
         //医生登录操作
         public static doctor doctorLogin(string name,string passwordHash)
@@ -668,368 +624,6 @@ namespace WpfTest1.SQLite
         }
         #endregion
 
-        #region 常用语CommonWords表操作
-        //通过id主键查找CommonWords
-        public static CommonWords getCommonWordsById(string id)
-        {
-            string sql = "SELECT * FROM CommonWords WHERE id = @id LIMIT 1";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id),
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {
-                    CommonWords temp = new CommonWords();
-                    temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
-                    temp.content = reader.IsDBNull(1) ? "" : reader.GetString(1);
-                    temp.describe = reader.IsDBNull(2) ? "" : reader.GetString(2);
-                    return temp;
-                }
-            }
-            return null;
-        }
-        //CommonWords表的插入
-        public static void InsertCommonWordsData(string content, string describe)
-        {
-            string sql = "INSERT INTO CommonWords(content,describe)values(@content,@describe)";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               new SQLiteParameter("@describe",describe)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        //CommonWords表的更新
-        public static void UpdateCommonWordsData(string id, string content, string describe)
-        {
-            //Boolean a = false;
-            string sql = "UPDATE CommonWords SET content=@content,describe=@describe WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               new SQLiteParameter("@describe",describe),
-                                                               new SQLiteParameter("@id",id)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        //CommonWords表记录的删除
-        public static int DeleteCommonWordsItem(string id)
-        {
-            string sql = "DELETE FROM CommonWords WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id)
-                                                               };
-            return db.ExecuteNonQuery(sql, parameters);
-        }
-        #endregion
-
-        #region Record标的相关操作
-        // //通过id主键查找Record
-        public static Record getRecordById(string id)
-        {
-            string sql = "SELECT * FROM Record WHERE id = @id LIMIT 1";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id),
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {
-                    Record temp = new Record();
-
-                    //long len = reader.GetBytes(reader.GetOrdinal("Data"), 0, null, 0, 0);
-                    //Console.WriteLine("len is :" + len.ToString());
-                    //buffer = new byte[len];
-
-                    //len = reader.GetBytes(reader.GetOrdinal("Data"), 0, buffer, 0, (int)len);
-                    temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
-                    temp.patientId = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
-                    temp.doctorId = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
-                    temp.recordTime = reader.IsDBNull(3) ? DateTime.MinValue : reader.GetDateTime(3);
-                    //左手
-                    if(!reader.IsDBNull(4))
-                    {
-                        long len = reader.GetBytes(reader.GetOrdinal("dataLeft"), 0, null, 0, 0);
-                        byte[] buffer = new byte[len];
-                        reader.GetBytes(reader.GetOrdinal("dataLeft"), 0, buffer, 0, (int)len);
-                        temp.dataLeft = buffer;
-                    }
-                    else
-                    {
-                        temp.dataLeft = new byte[] { };
-                    }
-                    //右手
-                    if (!reader.IsDBNull(5))
-                    {
-                        long len = reader.GetBytes(reader.GetOrdinal("dataRight"), 0, null, 0, 0);
-                        byte[] buffer = new byte[len];
-                        reader.GetBytes(reader.GetOrdinal("dataRight"), 0, buffer, 0, (int)len);
-                        temp.dataRight = buffer;
-                    }
-                    else
-                    {
-                        temp.dataRight = new byte[] { };
-                    }
-                    //绕关节
-                    if (!reader.IsDBNull(6))
-                    {
-                        long len = reader.GetBytes(reader.GetOrdinal("dataWrist"), 0, null, 0, 0);
-                        byte[] buffer = new byte[len];
-                        reader.GetBytes(reader.GetOrdinal("dataWrist"), 0, buffer, 0, (int)len);
-                        temp.dataWrist = buffer;
-                    }
-                    else
-                    {
-                        temp.dataWrist = new byte[] { };
-                    }
-                    temp.topBP = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
-                    temp.bottomBP = reader.IsDBNull(8) ? 0 : reader.GetDouble(8);
-                    temp.heartRate = reader.IsDBNull(9) ? 0 : reader.GetDouble(9);
-                    temp.waveTpye = reader.IsDBNull(10) ? "" : reader.GetString(10);
-                    temp.eigenValueSaved = reader.IsDBNull(11) ? 0: reader.GetInt32(11);
-                    temp.comments = reader.IsDBNull(12) ? "" : reader.GetString(12);
-                    temp.hand = reader.IsDBNull(14) ? "b" : reader.GetString(14);
-                    return temp;
-                }
-            }
-            return null;
-        }
-        //查找Record中病人id和时间相同的记录个数
-        public static int getRecordCountByPatientIdAndTime(int patient_id, DateTime recordTime)
-        {
-            string sql = "SELECT count(*) FROM Record WHERE patientId = @patient_id AND recordTime=@recordTime";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@patient_id",patient_id),
-                                                               new SQLiteParameter("@recordTime",recordTime),
-                                                               };
-            int count = Convert.ToInt32(db.ExecuteFindCount(sql,parameters));
-            return count;
-        }
-        //Record表的插入
-        public static void InsertRecordData(int PatientId, int doctorId, DateTime RecordTime, byte[] DataLeft,byte[] DataRight, byte[] DataWrist, double TopBP, double BottomBP, double HeartRate, int EigenValueSaved, string Comments, string waveType, string hand)
-        {
-            string sql = "INSERT INTO Record(PatientId,doctorId,RecordTime,DataLeft,DataRight,DataWrist,TopBP,BottomBP,HeartRate,waveType,EigenValueSaved,Comments,hand)values(@PatientId,@doctorId,@RecordTime,@DataLeft,@DataRight,@DataWrist,@TopBP,@BottomBP,@HeartRate,@waveType,@EigenValueSaved,@Comments,@hand)";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@PatientId",PatientId),
-                                                               new SQLiteParameter("@doctorId",doctorId),
-                                                               new SQLiteParameter("@RecordTime",RecordTime),
-                                                               new SQLiteParameter("@DataLeft",DbType.Binary),
-                                                               new SQLiteParameter("@DataRight",DbType.Binary),
-                                                               new SQLiteParameter("@DataWrist",DbType.Binary),
-                                                               new SQLiteParameter("@TopBP",TopBP),
-                                                               new SQLiteParameter("@BottomBP",BottomBP),
-                                                               new SQLiteParameter("@HeartRate",HeartRate),
-                                                               new SQLiteParameter("@waveType",waveType),
-                                                               new SQLiteParameter("@EigenValueSaved",EigenValueSaved),
-                                                               new SQLiteParameter("@Comments",Comments),
-                                                               new SQLiteParameter("@hand",hand)
-                                                               };
-            parameters[3].Value = DataLeft;
-            parameters[4].Value = DataRight;
-            parameters[5].Value = DataWrist;
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        ////Record表的更新
-        public static void UpdateRecordData(int id,int PatientId, int doctorId, DateTime RecordTime, byte[] DataLeft, byte[] DataRight, byte[] DataWrist, double TopBP, double BottomBP, double HeartRate, int EigenValueSaved, string Comments, string waveType)
-        {
-            string sql = "UPDATE Record SET PatientId=@PatientId,doctorId=@doctorId,RecordTime=@RecordTime,DataLeft=@DataLeft,DataRight=@DataLeft,DataWrist=@DataWrist,TopBP=@TopBP,BottomBP=@BottomBP,HeartRate=@HeartRate,EigenValueSaved=@EigenValueSaved,comments=@Comments,waveType=@waveType WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@PatientId",PatientId),
-                                                               new SQLiteParameter("@doctorId",doctorId),
-                                                               new SQLiteParameter("@RecordTime",RecordTime),
-                                                               new SQLiteParameter("@DataLeft",DataLeft),
-                                                               new SQLiteParameter("@DataRight",DataRight),
-                                                               new SQLiteParameter("@DataWrist",DataWrist),
-                                                               new SQLiteParameter("@TopBP",TopBP),
-                                                               new SQLiteParameter("@BottomBP",BottomBP),
-                                                               new SQLiteParameter("@HeartRate",HeartRate),
-                                                               new SQLiteParameter("@EigenValueSaved",EigenValueSaved),
-                                                               new SQLiteParameter("@Comments",Comments),
-                                                               new SQLiteParameter("@id",id),
-                                                               new SQLiteParameter("@waveType",waveType)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-
-        //Record表更新医生的诊断
-        public static void UpdateDiagnosisData(int id, string Comments)
-        {
-            string sql = "UPDATE Record SET comments=@Comments WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@Comments",Comments),
-                                                               new SQLiteParameter("@id",id),
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-
-        //Record表删除操作
-        public static int DeleteRecordItem(string id)
-        {
-            string sql = "DELETE FROM Record WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id)
-                                                               };
-            return db.ExecuteNonQuery(sql, parameters);
-        }
-        #endregion
-
-        #region Expression表的相关操作
-        //查找所有的expression的content和position列,privilege_flag为1时才显示所有的公示,否则只显示isCache=1的公式
-        public static void GetAllExpressionContent(Dictionary<string, double> target, Dictionary<string, string> positions, int privilege_flag)
-        {
-            string sql = "SELECT expression_content,position FROM Expression WHERE ";
-            if(privilege_flag == 1)
-            {
-                sql += "1";
-            }
-            else
-            {
-                sql += "isCache = 1";
-            }
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {
-                    string tempKey = reader.IsDBNull(0) ? "" : reader.GetString(0);
-                    string tempPosition = reader.IsDBNull(1) ? "" : reader.GetString(1);
-                    if (tempKey == "")
-                    {
-                        break;
-                    }
-                    //KeyValuePair<string, double> temp = new KeyValuePair<string, double>(tempKey,0);
-                    target.Add(tempKey,0);
-                    positions.Add(tempKey, tempPosition);
-                }
-            }
-        }
-
-        //通过id主键查找Expression
-        public static Expression getExpressionById(string id)
-        {
-            string sql = "SELECT * FROM Expression WHERE id = @id LIMIT 1";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id),
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {
-                    Expression temp = new Expression();
-                    temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
-                    temp.expression_content = reader.IsDBNull(1) ? "" : reader.GetString(1);
-                    temp.expression_description = reader.IsDBNull(2) ? "" : reader.GetString(2);
-                    temp.range = reader.IsDBNull(3) ? 0.0 : reader.GetDouble(3);
-                    temp.isRelative = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
-                    temp.isCache = reader.IsDBNull(5) ? 0 : reader.GetInt32(5);
-                    temp.upBound = reader.IsDBNull(6) ? 0 : reader.GetDouble(6);
-                    temp.downBound = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
-                    temp.position = reader.IsDBNull(8) ? "o" : reader.GetString(8);
-                    return temp;
-                }
-            }
-            return null;
-        }
-        //通过公式值查找Expression
-        public static Expression getExpressionByContent(string content)
-        {
-            string sql = "SELECT * FROM Expression WHERE expression_content = @content LIMIT 1";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               };
-            using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
-            {
-                while (reader.Read())
-                {
-                    Expression temp = new Expression();
-                    temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
-                    temp.expression_content = reader.IsDBNull(1) ? "" : reader.GetString(1);
-                    temp.expression_description = reader.IsDBNull(2) ? "" : reader.GetString(2);
-                    temp.range = reader.IsDBNull(3) ? 0.0 : reader.GetDouble(3);
-                    temp.isRelative = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
-                    temp.isCache = reader.IsDBNull(5) ? 0 : reader.GetInt32(5);
-                    temp.upBound = reader.IsDBNull(6) ? 0 : reader.GetDouble(6);
-                    temp.downBound = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
-                    temp.position = reader.IsDBNull(8) ? "o" : reader.GetString(8);
-                    return temp;
-                }
-            }
-            return null;
-        }
-        //Expression表的插入
-        public static void InsertExpressionData(string content, string describe,double range, int relative,double upBound, double downBound, int isCache, string position)
-        {
-            string sql = "INSERT INTO Expression(expression_content,expression_description,range,isRelative,upBound,downBound,isCache,position)values(@content,@describe,@range,@relative,@upBound,@downBound,@isCache,@position)";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               new SQLiteParameter("@describe",describe),
-                                                               new SQLiteParameter("@range",range),
-                                                               new SQLiteParameter("@relative",relative),
-                                                               new SQLiteParameter("@upBound",upBound),
-                                                               new SQLiteParameter("@downBound",downBound),
-                                                               new SQLiteParameter("@isCache",isCache),
-                                                               new SQLiteParameter("@position",position)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        //Expression表的更新
-        public static void UpdateExpressionData(string id, string content, string describe, double range, int relative, double upBound, double downBound, int isCache,string position)
-        {
-            //Boolean a = false;
-            string sql = "UPDATE Expression SET expression_content=@content,expression_description=@describe,range=@range,isRelative=@relative,upBound=@upBound,downBound=@downBound,isCache=@isCache,position=@position WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               new SQLiteParameter("@describe",describe),
-                                                               new SQLiteParameter("@id",id),
-                                                               new SQLiteParameter("@range",range),
-                                                               new SQLiteParameter("@relative",relative),
-                                                               new SQLiteParameter("@upBound",upBound),
-                                                               new SQLiteParameter("@downBound",downBound),
-                                                               new SQLiteParameter("@isCache",isCache),
-                                                               new SQLiteParameter("@position",position)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        //Expression表仅更新取值范围的方法
-        public static void UpdateExpressionDataOnlyWithRange(string content, double range, int relative)
-        {
-            //Boolean a = false;
-            string sql = "UPDATE Expression SET range=@range,isRelative=@relative WHERE expression_content=@content";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@content",content),
-                                                               new SQLiteParameter("@range",range),
-                                                               new SQLiteParameter("@relative",relative)
-                                                               };
-            db.ExecuteNonQuery(sql, parameters);
-        }
-        //Expression表记录的删除
-        public static int DeleteExpressionItem(string id)
-        {
-            string sql = "DELETE FROM Expression WHERE id=@id";
-            SQLiteHelper db = new SQLiteHelper(dbPath);
-            SQLiteParameter[] parameters = new SQLiteParameter[]{
-                                                               new SQLiteParameter("@id",id)
-                                                               };
-            return db.ExecuteNonQuery(sql, parameters);
-        }
-        #endregion
-
         #region 配置表Config的相关操作
         //查找所有的expression的content列
         public static void GetAllConfigContent(Dictionary<string, string> target)

+ 23 - 0
WpfTest1/SQLite/UserSelection.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Emit;
+using System.Text;
+namespace WpfTest1.SQLite
+{
+    public class UserSelection
+    {
+        public int q_id { get; set; }
+        public int a_id { get; set; }
+        //public string selection_content { get; set; }
+        public UserSelection(int q)
+        {
+            q_id = q;
+        }
+        public UserSelection(int q, int a)
+        {
+            q_id = q;
+            a_id = a;
+        }
+    }
+}

+ 2 - 1
WpfTest1/Toolkits/ReportGenerator.cs

@@ -625,6 +625,7 @@ namespace WpfTest1.Toolkits
                 table2.Cell(20, 4).Range.Text = "20-33s";
                 //21项开始自动生成
                 int startIdx = 21;
+                /*
                 for (int i = 0; i < expressions.Count && i + startIdx < 41; ++i)
                 {
                     SQLite.Expression oneExpression = SQLite.SQLiteModel.getExpressionByContent(expressions.ElementAt(i).Key);
@@ -645,7 +646,7 @@ namespace WpfTest1.Toolkits
                         table2.Cell(i + startIdx, 3).Range.Text = "↓";
                     }
                     table2.Cell(i + startIdx, 4).Range.Text = oneExpression.downBound.ToString() + "-" + oneExpression.upBound.ToString();
-                }
+                }*/
 
                 //诊断部分
                 string pailiangRemark = "";

+ 8 - 0
WpfTest1/WpTest.csproj

@@ -50,6 +50,10 @@
       <HintPath>..\packages\ExpressionEvaluator.2.0.4.0\lib\net40\ExpressionEvaluator.dll</HintPath>
       <Private>True</Private>
     </Reference>
+    <Reference Include="LitJSON, Version=0.16.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\LitJson.0.16.0\lib\net45\LitJSON.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
     <Reference Include="MahApps.Metro, Version=1.5.0.23, Culture=neutral, PublicKeyToken=f4fb5a3c4d1e5b4f, processorArchitecture=MSIL">
       <HintPath>..\packages\MahApps.Metro.1.5.0\lib\net45\MahApps.Metro.dll</HintPath>
       <Private>True</Private>
@@ -192,6 +196,10 @@
       <DependentUpon>RegisterCode.xaml</DependentUpon>
     </Compile>
     <Compile Include="SQLite\Bar1.cs" />
+    <Compile Include="SQLite\Answer.cs" />
+    <Compile Include="SQLite\UserSelection.cs" />
+    <Compile Include="SQLite\QuestionAnswerPair.cs" />
+    <Compile Include="SQLite\Question.cs" />
     <Compile Include="SQLite\Run.cs" />
     <Compile Include="Toolkits\Config.cs" />
     <Compile Include="Toolkits\CSVWriter.cs" />

+ 1 - 0
WpfTest1/packages.config

@@ -3,6 +3,7 @@
   <package id="Antlr" version="3.5.0.2" targetFramework="net452" />
   <package id="ControlzEx" version="3.0.2.4" targetFramework="net452" />
   <package id="ExpressionEvaluator" version="2.0.4.0" targetFramework="net452" />
+  <package id="LitJson" version="0.16.0" targetFramework="net452" />
   <package id="MahApps.Metro" version="1.5.0" targetFramework="net452" />
   <package id="MahApps.Metro.IconPacks" version="3.2.0" targetFramework="net452" />
   <package id="MahApps.Metro.Resources" version="0.6.1.0" targetFramework="net452" />

+ 1 - 1
WpfTest1/selectUser.xaml

@@ -22,7 +22,7 @@
                 <DataGridTextColumn Header="最近评估时间" Binding="{Binding Path=p_last_evaluation_time}" Width="110"/>
                 <DataGridTextColumn Header="病史" Binding="{Binding Path=p_history}" Width="75"/>
                 <DataGridTextColumn Header="诊断" Binding="{Binding Path=p_diagnosis}" Width="75"/>
-                <!-- -->
+                <DataGridTextColumn Header=" " Binding="{Binding Path=p_delete_flag}" Width="75"/>
             </DataGrid.Columns>
         </DataGrid>
         <Label x:Name="label" Content="姓名:" HorizontalAlignment="Left" Margin="23,18,0,0" VerticalAlignment="Top"/>

+ 7 - 2
WpfTest1/selectUser.xaml.cs

@@ -70,6 +70,11 @@ namespace WpfTest1
             {
                 orderCondition = "p_id asc";
             }
+            if (this.Name == "selectUserfilter")
+            {
+                orderCondition = "p_last_filter_time desc";
+            }
+            
             string selectCmd = "SELECT * FROM Patient WHERE p_delete_flag = 0 ORDER BY " + orderCondition + " LIMIT 100";
             con.Open();
             da = new SQLiteDataAdapter(selectCmd, con);
@@ -244,9 +249,9 @@ namespace WpfTest1
         {
             if (father != null)
             {
-                if (this.Name == "selectUserMeasure")
+                if (this.Name == "selectUserfilter")
                 {
-                    //father.buttonSelectPaitent_Click(this.father, e);
+                    father.buttonFilterSelectPatient_Click(this.father, e);
                 }
                 if (this.Name == "selectUserPatientManagent")
                 {