《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 用Java实现传染病信息查询分析系统

用Java实现传染病信息查询分析系统

2009-01-06
作者:谭广锋

一、引言 

    今年的SARS给人类一次袭击。传染病是一个普遍存在的问题,如何去利用传染病数据和模型进行分析判断是一个值得思考的问题。对于传染病的分析应该是一个及时的报告分析过程,本系统是用JSP写的一个MIS,能实现及时数据自动更新、数据查询和分析等功能,能为用户的决策提供数据资料。 

二、编程思想、原理图 

    本系统具有一般MIS的数据查询功能——能对传染病种类、病例和病情分别进行查询,而且能用现存的分析模型对具体情况进行分析,以支持用户的决策。本系统采用B/S结构,用户只需要用浏览器就可以对传染病种类、病例和病情分别进行查询和分析。系统的重点在于其自动更新数据功能上。 

    这里,我们假设系统数据更新间隔期为一天。当服务器运行时,同时建立自动更新线程,对时间进行监视,当一天过去时,系统从数据库中读取数据并进行更新,重新对数据文件进行分析更新。用户浏览到的总是最新的资料。在这里,我们的用户主要浏览的是服务器端的数据文件(包括变化曲线,具体病情等)。 

三、开发环境和工具 

    Windows 2000 Professional   J-Creator   DreamWeaver MX 

    Resin-2.0.2   Miscrosoft SQL Server 2000   Rational Rose 

四、数据库设计 

    对于本系统的数据,分为传染病信息和传染病模型两部分。传染病信息包括传染病种类、病例和病情等数据;传染病模型则是对传染病信息进行分析用的模型数据。因此在建立数据库的时候要同时考虑信息和模型两方面。目标数据库脚本如下: 


 

create database contagion 

传染病种类列表 

create table diseaselist( 

    dname varchar(200), 

    descript varchar(255), 

    dno varchar(5), 

    firsttime datetime, 

    headstream varchar(60), 

    primary key(dno) 

    ) 

模型列表 

create table modellist( 

    mname varchar(200), 

    mno varchar(3), 

    dno varchar(5) references diseaselist(dno), 

    interface varchar(255), 

    primary key(mno,dno) 

    ) 

病例列表 

create table cases( 

    cno varchar(11), 

    zip varchar(3), 

    dno varchar(5) references diseaselist(dno), 

    soai_name varchar(24), 

    primary key(cno) 

    ) 

地区数据表 

create table place( 

    pname varchar(60), 

    zip varchar(3), 

    population int, 

    unit int, 

    primary key(zip,pname) 

    ) 

病情表 

create table soai_table***********( 

soai_date datetime primary key, 

new int, 

total int 

cure int, 

totalcure int, 

death int, 

totaldeath int, 

patient int, 


 

注:病例号代码(***********):前三位为国家地区编码,中间五位为疾病编码,最后为病例编号。 

五、程序介绍 

    [在这里主要介绍与系统自动更新有关的类的程序的编写,其他类从略。由于篇幅有限只列出类的方法和成员。] 

 

自动更新监控线程:

//AutoUpdateThread

//Herroy Tan

//2003.6.27.

import java.io.*;

import java.util.Date;

import java.sql.*;

 

public class AutoUpdateThread extends Thread{

Date nowdate;//记录当前日期

String path;//记录路径

String Url;//记录数据库Url

String uid;//记录数据库用户

String upw;//记录数据库密码

AutoUpdateThread(){……}//从设置文件中读取各成员的初始值

public void run(){

……

FileUpdate FU=new FileUpdate();//数据文件更新类对象

String tablename;

Connection con=null;

DataArray DA=new DataArray();//读取数据信息类对象

KChart KC=new KChart();//曲线图绘制类对象

……

FU.Update(tablename,path,Url,uid,upw);//更新数据文件

DA.getDataArray(Url,uid,upw,tablename);//读取数据信息

KC.graphicsGeneration(DA.x,DA.y,DA.z,DA.length,path + "/" + tablename);//曲线图重绘

……

}//对时间进行监控

}

数据文件更新类:

//FileUpdate

//Herroy Tan

//2003.6.28.

import java.io.*;

import java.sql.*;

public class FileUpdate{

Connection con=null;//数据库连接对象

public void Update(String tablename,String tablepath,String Url,String uid,String upw){……}//从数据库中读取数据对数据文档进行更新

}

曲线图绘制类:

//KChart

//Herroy Tan

//2003.6.20.

import java.io.*;

import java.util.*;

import com.sun.image.codec.jpeg.*;

import java.awt.image.*;

import java.awt.*;

public class KChart {

BufferedImage image;

public void createImage(String fileLocation){

try{

FileOutputStream fos = new FileOutputStream(fileLocation);

BufferedOutputStream bos = new BufferedOutputStream(fos);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

encoder.encode(image);

bos.close();

}

catch(Exception e){

System.out.println(e);

}

}

public void graphicsGeneration(int x[],int y[],int z[],int length,String fileLocation) {

……//绘制曲线图过程略

chartGraphics.createImage(fileLocation + ".jpg");

}

}

六、结束语

通过测试,本系统能够自动及时更新数据信息,并将数据以图像的方式展现给用户(如下图),能建立模型对病情进行分析。现时本系统的重点放在及时反映数据和分析数据,在维护更新接触得并不多。本系统是在数据的维护和更新都比较完善的假设下建立的。假如失去了数据的维护和更新的可靠性,本系统亦将失去可靠性(对于用户来说,反映出来的数据将是不完整的也并不是及时的)。所以若要进行扩展的话,系统的维护更新则是重点问题。

参考文献 

1.《Java图像编程实例库》  Campesato  电子工业出版社 

2.《Java完全探索》  Chuck Cavaness Geoff Friesen Brian Keeton 中国青年出版社 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。