现在的位置: 首页 > 综合 > 正文

归档状态与数据安全

2013年10月18日 ⁄ 综合 ⁄ 共 1577字 ⁄ 字号 评论关闭
    在AnyData中,要管理的对象模型是这样的:
       对象    ---子对象
                    ---子对象
                   ---子对象---子对象
                                           ---子对象
                                           ---子对象
    什么是归档?如果对于一个对象实例的处理已经完毕,则我们可以设置数据为归档状态,处于归档状态的数据不允许修改和删除,即归档之后的数据受到保护。我们可以对整个“对象“设置归档状态,也可以对单个对象设置归档状态。可以根据不同的情况进行设定。
    如果对整个的对象和子对象统一设置归档状态,则解除归档之后,所有对象和子对象的属性都可以被修改和删除。这是不安全的,至少在被重新设置为归档状态之前,整个对象的所有数据都是不安全的。例如,一个病人Tom,他有三次检查,一次胃镜,一次超声和一次CT,如果后来他又来到医院重新做一次超声检查,则如果超声科的医生D对Tom进行复诊时,系统自动对Tom的所有资料都设置了解除归档操作,则D可以对Tom的两次超声数据(一次旧的一次新的)都可以进行编辑,这无疑会是Tom的数据的潜在威胁,如果无意中修改,则一定会破坏Tom数据的准确性。更为重要的时,如果除了D以外的医生X打开了Tom的数据,此时,这个数据是解除归档的,则无论X对数据进行有意或无意的修改或删除,都是医院不可容忍的,这就是归档状态的不当使用造成的安全隐患。
    因此,为了提高数据的安全,系统必须满足如下的条件:
    1、在一个大的网络环境中,解除归档是有层次的,最好不要对整个对象和子对象进行统一的归档和解除归档。
    2、解除归档时,应该设置一个解除归档人UnarchivedUserID,如果一个科室的所有用户都使用相同的用户进行操作,则还需要设置一个解除归档工作站UnarchivedWkStation,只有这个人在对应的工作站上可以对解除归档的数据进行操作,其他的用户即时采用同样的UserID登录系统,只要不是在同样的工作站上,则不允许对数据进行编辑和删除,而且每个对象和子对象只能被解除归档一次,如果Tom的第一次超声检查200801020004-01被解除归档了,则不允许不允许其他用户对相同的数据进行第二次解除归档,只能在数据200801020004-01被重新设置为归档状态之后才可以再次设置解除归档。
    解除归档对于数据安全是如此重要,因此,解除归档操作应该被记录到系统日志中,并且记录归档之前的所有数据的当前值。
    从而,我们可以如此设计解除归档工具,用户点击解除归档之后,弹出一个对话框:
       

对象    ---子对象

                    ---子对象
                   ---子对象---子对象
                                           ---子对象
                                           ---子对象
           

    ◎对整个对象解除归档

        对选中的对象解除归档

          确定         取消
    如果用户选择确定,则系统首先记录在日志中保存被解除归档的数据当前的值,然后设置Archived='F',设置UnArchivedUserID和UnArchivedWkStation。
   
    在归档状态验证时,如果当前数据为未归档(Archived='F'),但是设置了UnArchivedUserID和UnArchivedWkStation,并且与当前用户的当前工作站不相符,则数据对当前用户和当前工作站而言,依旧时归档的,数据不允许被修改。
    因此解除归档状态是相对的,是相对当前登录用户的UserID和当前工作站的名称。

抱歉!评论已关闭.