3

我必须转换我的 Django 应用程序,使其符合“ 21 CFR Part 11 ”,即使电子记录与签署的纸质记录具有相同的有效性。有什么我应该看的项目或应用程序吗?

一些问题:

  1. 审计跟踪:必须跟踪所选模型的每一次更改(谁、何时、什么)
  2. 检测未经授权的记录编辑:如果记录在正常程序之外被更改/添加/删除,应用程序应检测它
  3. 对于特定操作,用户必须再次输入密码
  4. 密码必须定期更改,并且必须满足某些标准等...

我在网上没有找到现成的解决方案...

4

2 回答 2

5

我在需要 CFR 21 Part 11 和类似的环境中工作。我还没有让我们的应用程序完全兼容,但我已经经历了许多试验和错误,所以我可以帮助你从几个地方开始。

1)我还建议Django reversion;但是,您将需要比它提供的更多的东西来实现可变级别的审计跟踪以及所采取的行动(除了由谁和何时)。为此,我使用其中一个反转信号将注释字段转换为可以评估的字典,然后调用行中的任何变量以及对其采取的操作等。如下所示:

https://github.com/etianen/django-reversion

@receiver(reversion.pre_revision_commit)
    def it_worked(sender, **kwargs):
    currentVersion = kwargs.pop('versions')[0].field_dict
    fieldList = currentVersion.keys()
    fieldList.remove('id')
    commentDict = {}
    try:
        pastVersion = reversion.get_for_object(kwargs.pop('instances')[0])[0].field_dict
    except IndexError:
        for field in fieldList:
            commentDict[field] = "Created"
    except TypeError:
        for field in fieldList:
            commentDict[field] = "Deleted"
    else:
        for field in fieldList:
            try:
                pastTest = pastVersion[field]
            except KeyError:
                commentDict[field] = "Created"
            else:       
                if currentVersion[field] != pastTest:
                    commentDict[field] = "Changed"
                else:
                    commentDict[field] = "Unchanged"
    comment = commentDict
    revision = kwargs.pop('revision')
    revision.comment = comment
    revision.save()
    kwargs['revision'] = revision
    sender.save_revision

2/3)您将需要为此使用对象级权限系统。我已经实现了 django-guardian。几乎你可以实现的复杂性的唯一限制是你自己可以保持多少东西。您需要实现的基本权限集是查看、编辑、删除和某种数据控制器/管理员角色;但是,您可能希望变得更复杂。我强烈建议使用基于类的视图和 mixins 进行权限检查,但基于函数的也可以。这也可用于提示某些操作的密码,因为您可以以任何您喜欢的方式控制字段发生的情况。

https://github.com/lukaszb/django-guardian

4) 如果您愿意,甚至可以使用 Django 身份验证系统或任何用户帐户管理应用程序来实现过期密码。您只需要添加一个额外的字段来记录您想要开始到期倒计时的任何日期时间。然后在登录时只需检查倒计时的时间,看看他们是否超出了窗口,如果是,则要求他们通过引导他们通过内置视图来更改密码或哪种机制适合您的应用程序来创建新密码。

我将告诉您实施 CFR 21 第 11 部分最困难的部分是让适当的人员准确地告诉您您的项目应该做什么才能满足要求,并且进行合规性检查可能既费时又费钱。

希望这可以帮助您入门。

于 2012-11-28T06:34:31.353 回答
1

Django Reversion可能会让您开始进行审计跟踪,尽管您可能不需要它的所有功能。

对于列表中的 2、3 和 4,这些是您最有可能最终自己编写代码的东西。

于 2012-11-27T20:13:36.640 回答