智慧养老系统信息监管软件的设计与实现第4章上.docx

上传人:b****4 文档编号:3689223 上传时间:2022-11-24 格式:DOCX 页数:17 大小:215.81KB
下载 相关 举报
智慧养老系统信息监管软件的设计与实现第4章上.docx_第1页
第1页 / 共17页
智慧养老系统信息监管软件的设计与实现第4章上.docx_第2页
第2页 / 共17页
智慧养老系统信息监管软件的设计与实现第4章上.docx_第3页
第3页 / 共17页
智慧养老系统信息监管软件的设计与实现第4章上.docx_第4页
第4页 / 共17页
智慧养老系统信息监管软件的设计与实现第4章上.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

智慧养老系统信息监管软件的设计与实现第4章上.docx

《智慧养老系统信息监管软件的设计与实现第4章上.docx》由会员分享,可在线阅读,更多相关《智慧养老系统信息监管软件的设计与实现第4章上.docx(17页珍藏版)》请在冰豆网上搜索。

智慧养老系统信息监管软件的设计与实现第4章上.docx

智慧养老系统信息监管软件的设计与实现第4章上

第4章智慧养老系统信息监管软件的详细设计与实现

围绕信息监管软件的需求和开发方案,结合隐性异常行为识别算法的研究,本章首先对软件各功能模块进行详细设计,然后根据需求明确了数据逻辑,设计并实现了信息监管软件数据库,在此基础上详细阐述了隐性异常行为识别算法和基于角色的访问控制技术的实现方法,最后对重要功能模块进行了具体论述。

4.1信息监管软件功能模块设计

根据前文需求分析,本文采用层次化和结构化的设计思想,将软件分解为多个功能模块。

图4.1为软件功能模块结构图,信息监管软件分为账户信息、老年人信息、实时定位、医疗健康、主动关怀、生活服务、娱乐活动、紧急事件、智能分析和系统管理十个功能模块。

图4.1软件功能结构图

1.账户管理:

包括信息管理、密码修改和退出登录三个子模块。

信息管理提供账户基本信息的查询和修改操作;密码修改提供登录密码的修改操作;退出登录提供软件功能页面的退出操作。

2.老年人信息:

包括审核信息、基本档案两个子模块。

审核信息提供审核信息的添加、查询和修改操作,并提供待审核状态信息的同意申请和拒绝申请操作;基本档案提供老年人基本信息的查询和修改操作,系统管理员允许进行删除操作,此处的删除操作将清空该老年人所有的相关信息。

3.医疗健康:

包括患者信息、在线咨询、在线回答三个子模块。

患者信息提供老年人健康档案、服药记录、体检记录和就诊记录四种健康相关信息的查询和修改操作,系统管理人员允许对患者信息进行删除,其中服药记录提供服药信息下发功能;在线咨询提供医务人员信息的查询和选择操作,选择完成后老年人可向医务人员进行留言;在线回答提供留言回复操作。

4.实时定位:

包括定位信息和电子围栏两个子模块。

定位信息提供老年人地理信息查询操作和地图显示;电子围栏提供电子围栏的显示、开启、修改和删除操作。

5.关怀计划:

包括关怀管理、计划工单、历史记录三个子模块。

关怀管理提供关怀信息的查询、修改、添加和删除操作,并提供关怀计划的添加操作,关怀计划添加成功以后会生成计划工单;计划工单提供关怀计划的查询、修改和删除操作,此处的删除操作将导致计划工单取消;历史记录提供已完成关怀工单的查询操作。

6.生活服务:

包括服务管理、服务选择、服务工单和历史记录四个子模块。

服务管理提供服务信息的查询、修改、添加和删除操作;服务选择提供服务信息的查询和选择操作,系统管理员允许帮助老年人进行服务信息的选择,服务选择成功以后会生成待审批服务工单;服务工单提供工单信息的审批、查询、修改和删除操作,此处的审批操作通过以后将生成待执行服务工单,删除操作将导致服务计划取消;历史记录提供已完成状态的服务工单查询操作,老年人允许对工单进行评价。

7.娱乐活动:

包括活动管理、活动参与、活动工单和历史记录四个子模块。

活动管理提供活动信息的查询、修改、添加和删除操作;活动参与提供活动信息的查询操作,并提供活动的选择操作,系统管理员允许帮助老年人进行活动的选择,活动选择成功以后会生成活动工单;活动工单提供待完成状态的活动计划的查询、修改和删除操作,老年人的删除操作将导致自己退出活动计划,系统管理员的删除操作将导致活动工单取消;历史记录提供已完成活动工单的查询操作,老年人允许对工单进行评价。

8.紧急事件:

包括事件管理、救援工单和历史记录三个子模块。

事件管理提供紧急事件信息的查询、修改、添加和删除操作,并提供救援计划的添加操作,救援计划添加成功以后将生成救援工单;救援工单提供待救援计划的查询、修改和删除操作,此处的删除操作将导致救援计划取消;历史记录提供已完成救援工单的查询操作。

9.智能分析:

包括人员管理、状态管理和参数设置三个子模块。

人员管理提供参与预测人员信息的查询、修改、添加和删除操作;状态管理提供预测状态的暂停和恢复操作;参数设置提供数据分析进程的工作参数下发操作。

10.系统管理:

包括用户管理、角色管理、等级管理、黑名单管理、知识库管理、投诉管理和系统日志七个子模块。

用户管理提供用户信息的查询、添加、修改、删除操作,此处的删除操作将清空该人员的所有相关信息;角色管理提供角色属性的查询、添加、修改、删除操作,此处的删除操作只允许在目前角色无人担任的情况下进行;等级管理提供紧急事件等级的查询、添加、修改和删除操作;黑名单管理提供黑名单人员信息的查询、添加、修改、删除操作;知识库管理提供知识库数据的管理操作;投诉管理提供投诉信息的查询、添加、修改、删除操作;系统日志提供每种角色的操作记录的查询操作。

4.2数据库的设计与实现

4.2.1数据库设计

1.实体-联系模型设计

实体-联系模型又称E-R(Entity-Relationship)模型[44],它提供了实体类型、属性和联系之间的表达方法。

在信息监管软件中,通过建立E-R模型,可以清晰表达各实体之间的联系,明确角色与业务之间的关系,为数据库表格的设计提供了逻辑支持。

结合软件功能模块的划分,本文设计系统的E-R模型如图4.2所示。

图4.2E-R模型图

2.数据库表格设计

根据E-R模型,参照关系型数据库设计三范式[45],确定表格字段的数据类型、名称、约束、缺省值和字段说明。

本文采用MySQL数据库管理系统创建数据库wps_infomonitor,共设计91张数据库表格,出于篇幅限制,下面只列出主要的12张数据库表格,如表4.1所示。

表4.1信息监管软件主要信息表汇总

编号

数据库表名

数据表描述

1

wps_user_info

存储账户基本信息

2

wps_elder_info

存储老年人基本信息

3

wps_med_info

存储老年人健康信息

4

wps_med_messege

存储在线咨询信息

5

wps_pre_data

存储老年人预测数据

6

wps_location

存储老年人定位信息

7

wps_activecare

存储主动关怀工单

8

wps_service

存储生活服务工单

9

wps_leisure

存储娱乐活动工单

10

wps_urgent

存储紧急事件工单

11

wps_active_data

独居老年人行为数据

12

wps_pre_data

独居老年人预测数据

本文以老年人基本信息表和生活服务工单表为例说明数据库表格的结构设计。

表4.2为老年人基本信息表wps_elder_info,表4.3为生活服务记录表wps_service。

表4.2老年人基本信息表结构

字段

字段类型

为空

约束

缺省值

字段说明

elder_id

char(7)

no

主键

老年人编号

name

varchar(32)

no

姓名

age

tinyint(4)

no

年龄

gender

varchar(8)

no

性别

ethnicity

char(20)

no

民族

maritalstatus

tinyint

(1)

no

婚姻状况

identity

char(18)

no

身份证号

tel

char(11)

no

手机号码

address

varchar(128)

no

家庭住址

adlongitude

char(11)

no

家庭地址经度

adlatitude

char(11)

no

家庭地址纬度

iserail

tinyint

(2)

no

0

电子围栏标识

radius

int(11)

no

0

电子围栏半径

preflag

tinyint

(2)

no

0

行为预测标识

servicegrade_id

tinyint(3)

no

外键

0

服务等级

servicestatus

tinyint(3)

no

0

服务状态

sibname

varchar(32)

no

亲属姓名

sibtel

char(11)

no

亲属联系方式

sibaddress

varchar(128)

no

亲属家庭地址

chronic

varchar(128)

no

慢性病状况

disablestats

varchar(128)

no

失能状况

checked

tinyint

(1)

no

0

是否已经审核

user_id

int(11)

yes

外键

审核人编号

checkedtime

datetime

yes

审核时间

remark

text

no

备注信息

createtime

datetime

no

当前时间

创建时间

wps_elder_info表存储老年人基本信息,包括姓名、性别、证件类型、证件号、电话、服务等级等字段。

其中elder_id为表格主键,用以标识老年人身份,servicegrade_id和user_id为表格外键,用以关联服务等级信息和审核人信息等相关信息。

表4.3生活服务工单表结构

字段

字段类型

为空

约束

缺省值

备注

service_id

int(11)

no

主键

服务工单编号

info_id

smallint(6)

no

外键

服务信息编号

表4.3生活服务工单表结构(续)

字段

字段类型

为空

约束

缺省值

备注

elder_id

char(7)

no

外键

老年人编号

server_id

char(7)

no

外键

服务人员编号

address

varchar(128)

no

服务地址

time

datetime

no

服务时间

status_id

tinyint

(1)

no

外键

0

工单状态编号

remark

text

yes

服务备注说明

evaluate_id

tinyint

(1)

yes

外键

评价等级编号

createtime

datetime

no

当前时间

工单创建时间

reviewedtime

datetime

yes

工单审批时间

feedbacktime

datetime

yes

工单反馈时间

wps_server表存储老年人基本信息,包括服务工单编号、服务类型编号、老年人编号、服务人员编号等字段。

其中service_id为表格主键,用以标识服务工单,info_id、elder_id、server_id、status_id、evaluate_id和为表格外键,用以关联服务信息、老年人信息、服务人员信息、工单状态和评价等级。

4.2.2数据库连接与操作

信息监管软件的开发框架为CI框架,其提供了一个简单的数据库访问接口。

该接口采用ActiveRecord模式,能够以精简的代码完成对数据库的多种操作。

在使用访问接口之前,需对连接属性进行配置,包括数据库地址、数据库账号、密码、数据库名等,配置文件路径为application/config/database.php。

用户访问数据库时,控制器通过调用database()载入数据库类,获取连接属性,完成数据库连接操作,然后即可调用Model类文件完成数据库读写操作。

在实际研发过程中,为了避免重复的数据库SQL语句编写,通过自定义模型的方式封装常用数据库操作。

封装完成以后,控制器只需调用自定义模型,即可实现数据库的复杂操作。

4.3独居老年人隐性异常行为识别算法实现

独居老年人的隐性异常识别是通过数据分析进程来实现的。

由于异常识别是一种需要长期循环执行的数据分析任务,而且用户不关心算法的具体运行过程,只关心执行结果的输出,因此在信息监管软件中,数据分析进程以Windows服务[46]的形式运行。

考虑到研发难度和熟练度的问题,数据分析进程采用C++语言进行研发,研发工具为VisualStudio2012。

信息监管软件与数据分析进程的关系如图4.3所示。

图4.3信息监管软件与数据分析进程关系

由上图可知,数据分析进程中存在如下三种工作任务:

1.行为预测:

从数据库获取历史数据和天气数据,完成行为预测,将预测数据添加至数据库中。

2.异常识别:

获取预测数据、实测数据和天气数据,进行异常识别。

根据异常等级添加风险警报。

3.指令接收:

接收信息监管软件的控制指令,完成指令解析,执行控制指令。

在本节中,将主要阐述数据分析进程的工作流程,其中将重点阐述行为预测和异常识别的具体实现方法。

4.3.1数据分析进程实现

图4.4为数据分析进程的整体业务流程图。

在整体业务流程中,共创建了主线程、服务线程、指令接收线程、行为预测线程和异常识别线程五种线程执行不同的任务。

下面将逐一介绍每个线程的主要任务。

其中行为预测线程和异常识别线程的具体实现将在4.3.2节进行阐述。

图4.4数据分析进程的整体业务流程

1.主线程

与其他类型的程序不同,Windows服务程序的主线程一般情况下不负责业务流程的执行。

其主要任务是初始化一个SERVICE_TABLE_ENTRY分派表结构体的对象数组,然后将对象数组的首地址作为形参传入StartServiceCtrlDispatcher()。

StartServiceCtrlDispatcher()负责把程序主线程连接到服务控制管理器,完成服务入口点函数注册。

StartServiceCtrlDispatcher()执行成功以后,服务控制管理器将为分派表结构体中的每个非空元素创建一个新的线程,即服务线程,执行分派表中的服务入口点函数。

服务线程创建成功以后,主线程结束。

2.服务线程

在Windows服务程序中,服务线程是控制业务流程的核心线程。

在服务线程中,主要有以下两个任务:

(1)完成Windows服务的初始化工作。

进入服务线程以后,调用RegisterServiceCtrlHandler()通知服务控制管理器,完成控制处理函数的注册。

控制处理函数是一个回调函数,它的主要功能是接收服务控制管理器发出的控制指令,通过控制指令去改变服务状态。

每个服务线程必须配备一个相应的控制处理函数。

RegisterServiceCtrlHandler()执行成功后,获得SERVICE_STATUS_HANDLE类型的句柄,服务控制管理器使用该句柄来标识数据分析进程。

将该句柄和SERVICE_STATUS结构体对象作为形参传入SetServiceStatus(),更新服务控制管理中数据分析进程的状态信息,完成Windows服务的初始化工作。

(2)完成工作任务的流程控制。

在三种工作任务中,行为预测和异常识别为定时执行的任务,其工作线程在规定时间创建,完成任务后工作线程退出;指令接收为循环执行的任务,其工作线程在创建后会以“等待连接-建立连接-结束连接-等待连接”的方式工作,不会主动退出。

所以,工作任务的流程控制可分为以下三步:

第1步:

从wps_pretime表中获取行为预测线程创建时间stringpT1和异常识别线程创建时间stringpT2;若返回的结果集为空,则默认pT1=“2:

00:

00”和pT2=“0:

30:

00”。

第2步:

调用_beginthreadex(),完成指令接收线程的创建工作。

第3步:

进行流程控制。

判断队列容器queueQue中是否存在控制指令,控制指令格式为“CommandHeader/time/end”。

在若存在控制指令,则根据“CommandHeader”字段和“time”字段的具体内容对pT1或pT2进行修改;若没有控制指令,则进行下一个步骤。

获取当前时间stringsT。

判断sT和pT1、pT2是否拥有相同子串。

若有相同子串,则创建工作线程执行相应工作任务,创建完成后延时1秒防止下一轮循环中再次触发相同条件;若没有相同子串,则直接进入下一轮循环。

值得注意的是,队列容器queueQue是全局对象,在服务线程和指令接收线程中均涉及到Que的操作。

为了防止多个线程同时对Que进行操作,在程序中使用了关键代码段CRITICAL_SECTION对象cs对Que的访问权进行了保护。

在对Que进行操作之前,调用EnterCriticalSection()进行加锁,判断是否能得到cs的所有权,若无法得到所有权,则线程会一直等待,直到获取cs的所有权;若得到所有权,则进入关键代码段中访问Que。

访问完成后,调用LeaveCriticalSection()释放cs所有权,即解锁,此时其他线程就可以得到cs的所有权,从而完成对Que的操作。

3.指令接收线程

指令接收线程是数据分析进程与信息监管软件的主要通信接口。

其业务流程如图4.5所示。

图4.5指令接收线程业务流程

其中指令接收线程为通信服务端,信息监管软件为通信客户端。

所以,在指令接收线程中需实现以下两个主要功能:

(1)命名管道服务端的创建。

命名管道服务端的创建流程如下:

第1步:

创建命名管道:

CreateNamedPipe()。

第2步:

等待客户端连接:

ConnectNamedPipe()。

第3步:

读取客户端发送数据:

ReadFile()。

第4步:

向客户端回复数据:

WriteFile()。

第5步:

关闭连接:

DisconnectNamedPipe()。

第6步:

关闭管道:

CloseHandle()。

在步骤3中,如果客户端连接以后未发送数据,ReadFile()会以同步的方式等待接收数据,导致线程阻塞。

所以应使用异步方式进行方法调用,在规定时间内接收客户端数据。

具体实现步骤如下:

第1步:

调用CreateEvent(),创建初始状态为无信号的事件对象hEvent;初始化规定时间intnum=500,单位为毫秒。

第2步:

初始化OVERLAPPED结构体对象OV,将hEvent赋值给OV.hEvent。

第3步:

将OV作为形参传入ReadFile(),即使用异步方式调用ReadFile()。

第4步:

将hEvent和num作为形参传入WaitForSingleObject(),获取该函数返回值intResult。

第5步:

判断Result值,若Result==WAIT_OBJECT_0,则说明hEvent处于有信号状态,即接收到数据;若Result==WAIT_TIMEOUT,则说明hEvent在设定的500毫秒内均处于无信号状态,即500毫秒内未收到数据,此时向客户端返回数据接收错误标识“ERROR”。

(2)进行控制指令的初步解析,将控制指令存放于队列容器Que中。

在Result==WAIT_OBJECT_0的条件下,解析接收数据,若为预定义控制指令,则将控制指令存入Que中;若不为预定义控制指令,则向客户端返回数据接收错误标识“ERROR”。

与服务线程中一样,此处也通过加锁和解锁保护全局对象Que的访问权。

4.行为预测线程

行为预测线程是实现独居老年人行为预测的核心线程。

其业务流程如图4.6所示

图4.6行为预测线程业务流程

进入入口点函数,获取当前日期stringDate;从wps_prelist表中获取待预测老年人编号,存入vectore_buff;从wps_pause_prelist表中获取暂停预测老年人编号和暂停日期区间,存入vectorp_buff。

p_buff数据成员格式如下:

PauseID/DateStart/DateEnd/end,其中DateStart标识暂停起始日期,DateEnd标识暂停结束日期。

获得e_buff和p_buff以后,首先遍历p_buff,按顺序进行如下两种判断:

(1)判断Date是否大于p_buff成员DateEnd字段。

若大于,则说明此条暂停预测记录已经过期,调用p_buff.erase()删除此条记录,同时删除wps_pauseprelist表相应记录。

(2)判断Date是否小于p_buff成员DateStart字段。

若小于,则说明此条暂停记录还未到执行时间,调用p_buff.erase()删除此条记录。

完成上述两个步骤以后,遍历e_buff,判断p_buff与e_buff中是否有相同ID的元素,若存在,则说明此老年人暂时不参与下一周的预测任务,调用e_buff.erase()删除此条记录,同时将wps_pre_data表中该老年人当天的预测值均更新为-1,表示该老年人未参与行为预测。

此时e_buff中元素即为参与当天预测的老年人编号,再次遍历e_buff,获取老年人的历史数据,完成行为预测。

行为预测任务的具体实现将在4.3.2节论述。

5.异常识别线程

异常识别线程是实现独居老年人异常识别的核心线程。

其业务比较单纯,只需从数据库获取数据进行异常识别,输出识别结果。

异常识别任务的具体实现将在4.3.2节论述。

4.3.2行为预测和异常识别具体实现

行为预测线程和异常识别线程是具体实现独居老年人隐性异常行为识别算法的线程。

在具体实现中,共涉及5张数据库表:

wps_active_data、wps_weather、wps_weather_weight、wps_pre_data和wps_active_type。

wps_active_data负责存储独居老年人每天5种活动的活动时长;wps_weather负责存储每天的舒适度等级和降雨量等级;wps_weather_weight负责存储独居老年人的舒适度权值序列和降雨量权值序列;wps_pre_data负责存储独居老年人5种活动的预测数据;wps_active_type负责存储活动类型和对应编号。

由于篇幅所限,本节只给出wps_active_data和wps_weather_weight两张表的表结构设计,如表4.4和表4.5所示。

 

表4.4wps_active_data表结构

字段

字段类型

为空

约束

缺省值

备注

id

char(7)

no

外键

老年人编号

date

date

no

日期

sleep

int(11)

yes

睡觉时长

siesta

int(11)

yes

午休时长

toilet

int(11)

yes

上厕所时长

meal

int(11)

yes

吃饭时长

beout

int(11)

yes

外出时长

表4.5wps_weather_weight表结构

字段

字段类型

为空

约束

缺省值

备注

id

char(7)

no

外键

老年人编号

type_id

tinyint

(2)

no

外键

活动类型

create_date

date

no

权值序列生成日期

ssdmfour

decimal(6,2)

no

-4级舒适度权值

ssdmthree

decimal(6,2)

no

-3级舒适度权值

ssdmtwo

decimal(6,2)

no

-4级舒适度权值

ssdmone

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1