当前位置: 首页 > 后端技术 > Python

一个基于Django的医疗案例校对网站的设计与实现

时间:2023-03-25 19:33:47 Python

因研究需要对收集到的医疗案例进行结构化处理和校对,开发了本网站。下面简单记录一下思路和一些步骤,以免后面忘记。1需求分析设计中有三个表格,在设计好的word文档上。2构建Django项目打开Pycharm,创建一个Django项目,如下图。3创建App在项目下创建一个case_checkapp,使用命令创建。首先进入工程目录,启动虚拟目录,如图。然后,使用以下命令创建应用程序:pythonmanage.pystartappcase_check得到下图红色区域所示结构的应用程序。4写models下面是原始医疗案例的modelclassOriginCase(models.Model):content=models.TextField(verbose_name="medicalcasecontent")prescription=models.CharField(max_length=255,verbose_name="prescription(prescription)name)")herbs=models.TextField(verbose_name="方剂对应的中药集合")syndrome=models.CharField(max_length=50,verbose_name="确诊证型")symptoms=models.CharField(max_length=1024,verbose_name="symptomscollection")symptom_elements=models.CharField(max_length=1024,verbose_name="symptomcollection")source=models.CharField(max_length=100,verbose_name="来自哪本书或网站")doctor=models.CharField(max_length=100,verbose_name="开方医生姓名")date=models.DateTimeField(auto_now_add=True,verbose_name="病历录入时间")check_flag=models.CharField(max_length=10,verbose_name="是否证明eading已经安排好了,即医疗案例是否已经进入了checcase表")5数据迁移5.1创建迁移文件后,需要创建迁移文件(migration)。在命令行执行命令(注意:case_check是新创建的app,需要带这个,否则会提示:Nochangesdetected):pythonmanage.pymakemigrationscase_check此时报错:Noinstalledappwith标签“case_check”。分析原因是app没有在settings.py文件中配置。打开settings.py文件,将新建的case_checkapp添加到INSTALLED_APPS列表中,如下图红框所示:在命令行再次执行pythonmanage.pymakemigrationscase_check,出现如下提示说明迁移文件已成功创建:(venv4network)D:\mypython\TCMWeb>pythonmanage.pymakemigrationscase_checkMigrationsfor'case_check':case_check\migrations\0001_initial.py-创建模型OriginCase5.2执行数据迁移在创建数据迁移文件后前面的步骤,开始执行数据迁移,数据迁移完成后,会在数据库中创建对应的表。首先需要在setting.py中配置数据库连接信息。Django默认使用SQLlite,而本项目使用MySQL,需要重新配置。配置代码如下:DATABASES={#'default':{#'ENGINE':'django.db.backends.sqlite3',#'NAME':BASE_DIR/'db.sqlite3',#}'default':{'ENGINE':'django.db.backends.mysql',#数据库引擎'NAME':'tcm',#数据库名称'HOST':'127.0.0.1',#数据库地址,本机ip地址127.0.0.1'PORT':3306,#端口'USER':'root',#数据库用户名'PASSWORD':'你的脸',#数据库密码}}第二步,配置好数据库后,开始执行迁移命令:pythonmanage.pymigrate正常显示如下:(venv4network)D:\mypython\TCMWeb>pythonmanage.pymigrateOperationstoperform:Applyallmigrations:admin,app1,auth,case_check,contenttypes,sessionsRunningmigrations:Applyingcase_check.0001_initial...OK此时,打开MySQL数据库,可以看到你的表已经创建好了。但是需要注意的是,为了防止同一个数据库表因为同一个模型出现在整个项目中,所以在数据库表名前自动加上了。应用程序的名称。5.3修改模型后重新迁移数据测试时发现OriginCase增加了用户外键,但生成的数据表中仍然没有该字段。因为当前数据库内容为空,所以打算删除数据库表,重新进行数据迁移。这时候需要做三个操作:首先,删除数据库中的表。二、进入你当前app文件夹下的migrations目录,删除除__init__.py以外的所有文件,顺便删除__pycache__目录。第三,进入数据表django_migrations,找到你的app对应的记录,删除这些记录。(注意:一定要删除,否则重新迁移后不会执行迁移,会报如下信息:Runningmigrations:Nomigrationstoapply。)以上操作完成后,执行迁移文件生成命令,执行迁移命令。重新生成数据库表。重新生成迁移文件:(venv4network)D:\mypython\TCMWeb>pythonmanage.pymakemigrationsMigrationsfor'app1':app1\migrations\0001_initial.py-CreatemodelTCM_TestMigrationsfor'case_check':case_check\migrations\0001_initial.py-创建模型OriginCase-创建模型CheckedCase以执行迁移:(venv4network)D:\mypython\TCMWeb>pythonmanage.pymigrateOperationstoperform:Applyallmigrations:admin,app1,auth,case_check,contenttypes,sessionsRunningmigrations:Applyingapp1.0001_initial...OKApplyingcase_check.0001_initial...OK6管理后台修改6.1配置admin.py文件Django管理后台非常强大,只需要对Model做一些简单的配置就可以拥有一个可以增删改查的后台。对App目录(case_check)下的admin.py文件进行编辑:fromdjango.contribimportadminfrom.modelsimportCheckedCase,OriginCase#Registeryourmodelshere.@admin.register(OriginCase)classOriginCaseAdmin(admin.ModelAdmin):list_display=('内容','处方','草药','综合征','症状','symptom_elements','来源','医生','日期','check_flag')字段=('内容','处方','草药','综合症','症状','symptom_elements','来源','医生')defsave_model(self,request,obj,form,change):obj.user=request.userreturnsuper(OriginCaseAdmin,self).save_model(request,obj,form,change)@admin.register(CheckedCase)classCheckCaseAdmin(admin.ModelAdmin):list_display=('内容','处方','草药','综合症','symptoms','symptom_elements','source','doctor','date_check','user','check_order')字段=('content','prescription','herbs','syndrome','symptoms','symptom_elements','source','doctor','user','check_order')defsave_model(self,request,obj,form,change):obj.user=request.userreturnsuper(OriginCaseAdmin,自我).save_model(request,obj,form,change)这样可以进入后台对OriginCase进行增删改查。这基本上类似于一个简单的cms系统。但是目前还不能进入后台,因为没有账号。需要创建超级管理员账号。6.2创建Django管理后台用户在命令行执行命令pythonmanage.pycreatesuperuser,根据提示创建用户:(venv4network)D:\mypython\TCMWeb>pythonmanage.pycreatesuperuserUsername(留空使用'administrator'):root_www邮箱地址:密码:密码(再次):用账号登录后,可以看到后台页面。当然,这个样子还是比较难看,官方admin后台就是这样,就靠你美化了。7美化页面为了走捷径,想找一个可以直接美化背景的插件。首先找到的是xadmin,不过这个插件已经很多年没有更新了。当前项目基于Django3.2构建。网上的资料是xadmin在Django3.x版本报错较多,于是找了其他插件。其中,这篇文章可以参考https://zhuanlan.zhihu.com/p/...不过我看到国内有个django-antd-tyadmin,好像还可以,不过没试过还没完成。有时间我会测试一下。.8后台改进8.1用户登录后,只能看到自己输入的信息首先创建一个普通用户,配置权限,使用该用户登录后台,输入一条病历信息。这时候加上原来超级用户输入的信息,后台有两条信息。第二步,在admin.py中做如下修改,重写get_queryset(self,request)方法,添加queryset过滤器,只返回自己输入的病历:classOriginCaseAdmin(admin.ModelAdmin):list_display=('内容','处方','草药','综合征','症状','symptom_elements','来源','医生','日期','用户','check_flag')字段=('内容','处方','草药','综合症','症状','symptom_elements','来源','医生')defsave_model(self,request,obj,form,change):obj.user=request.user返回super(OriginCaseAdmin,self).save_model(request,obj,form,change)defget_queryset(self,request):qs=super(OriginCaseAdmin,self).get_queryset(request)returnqs.filter(user=request.user)