单机版电子病历在使用时,由于所在的医疗机构不变,不需要考虑医疗机构信息的问题,但是当在云端使用电子病历时,各个医疗机构的数据保存在相同的数据库中,如果没有医疗机构的信息,则无法分辨数据的来源,给存储和查询带来混乱,因此必须加以处理。
原则上,给每个医疗机构创建一个数据表,可以保证数据的不混淆,但是随着用户的增加,数据库需要增加大量的数据表,数据表的维护也比较麻烦,增加了许多工作量。考虑到云端使用的医疗机构一般都是相对较小的医疗机构,产生的数据量并不是很大,单独建表一方面占用数据库资源,另一方面给维护带来许多困难,因此最后决定采用增加医疗机构ID字段的方式来区分数据的来源。
由于初期设计电子病历过程中,大量的基础数据表已经创建完毕,一个一个的人工修改非常繁琐,所有找了一个将所有表增加同一个字段的方法,如下:
use mydatabase
declare @sql varchar(200),@name varchar(40)
declare my_cursor scroll cursor for select name from sysobjects where type='u'
open my_cursor
fetch next from my_cursor into @name
while(@@fetch_status==0)
begin
print 'processing' + @name
set @sql=N'alter table' +@name +' add hospitalId bigint'
exec(@sql)
print 'finished'
fetch next from my_cursor into @name
end
close my_cursor
deallocate my_cursor