临床医生/电子数据中心项目参与者ICF的基本模型、表格和管理。
edc-consent的Python项目详细描述
EDC同意
为知情同意表和流程添加类。
安装
在 网站同意书中注册您的同意书模型及其版本和有效期。 在 安装的应用程序中列出的任何应用程序中, 站点同意 都将 自动发现 同意.py 。现在我们只需创建一个版本1同意。在同意书中添加如下内容:
importarrowfromdatetimeimportdatetimefromedc_consent.consentimportConsentfromedc_consent.site_consentsimportsite_consentsfromedc_constants.constantsimportMALE,FEMALEsubjectconsent_v1=Consent('edc_example.subjectconsent',version='1',start=arrow.get(datetime(2013,10,15)).datetime,end=arrow.get(datetime(2016,10,15)).datetime,age_min=16,age_is_adult=18,age_max=64,gender=[MALE,FEMALE])site_consents.register(subjectconsent_v1)
添加到设置:
INSTALLED_APPS=[...'edc_consent.apps.AppConfig',...]Belowneedstobeupdated
功能
- 知情同意书的基类
- 在添加许可之前,无法添加需要许可的模型的数据
- 同意书有版本号和有效期
- 可控制同意受试者的最大数量。
- 只有在每位同意参与者同意的有效期内才允许收集数据
- 需要同意的型号的数据会标记为同意版本
待办事项
- 将主题类型链接到同意模型。例如母亲、婴儿、成人等
- 模型字段级别的版本(例如,新的同意期会在表单中添加其他问题)
- 允许不同的受试者同意为另一个受试者(例如母亲和婴儿)投保。
用法
首先,最好限制创建的与注册目标匹配的同意数。为此,请为同意模型类创建一个mixin:
fromedc_quota.client.modelsimportQuotaMixin,QuotaManagerclassConsentQuotaMixin(QuotaMixin):QUOTA_REACHED_MESSAGE='Maximum number of subjects has been reached or exceeded for {}. Got {} >= {}.'classMeta:abstract=True
然后声明同意模型:
classMyConsent(ConsentQuotaMixin,BaseConsent):quota=QuotaManager()classMeta:app_label='my_app'
声明模型:
classMyConsentForm(BaseConsentForm):classMeta:model=MyConsent
现在您有了同意模型类,请确定并声明需要此同意的模型:
classQuestionnaire(RequiresConsentMixin,models.Model):consent_model=MyConsent# or tuple (app_label, model_name)report_datetime=models.DateTimeField(default=timezone.now)question1=models.CharField(max_length=10)question2=models.CharField(max_length=10)question3=models.CharField(max_length=10)@propertydefsubject_identifier(self):"""Returns the subject identifier from ..."""returnsubject_identifierclassMeta:app_label='my_app'verbose_name='My Questionnaire'
注意上面的前两个类属性,即:
- 同意模式:这是上面声明的同意模式类;
- report_datetime:一个必需字段,用于从concenttype中查找正确的同意版本,并与 subject_identifier一起查找 myconsent的有效实例
还要注意属性subject_identifier
- subject_identifier:一个必需的属性,它知道如何找到 subject_identifier ,例如 问卷 。
一旦全部声明完毕,您需要:
- 在同意类型中定义同意版本和同意版本的有效期
- 为同意模型添加配额。
确定受试者时:
- 添加同意
- 添加模型(例如 问卷 )
如果在给定的同意模型类中找不到同意版本并报告日期,则会引发a 同意类型错误 。
如果该受试者同意找不到与 同意类型匹配的标识符 a 不同意错误 被引发。
样本同意
参与者可以同意研究,但不同意长期保存标本。样本同意书单独管理,以澄清参与者的意图。
样本同意是使用基类base specimen consent来声明的。这是baseconcept的缩写版本。样本同意还使用 RequiresConsentMixin ,因为它不能作为ICF单独存在。RequiresConsentMixin确保在主要研究ICF后给予样本同意,在这种情况下 MystudyConsent
在您的应用程序中声明一个样本同意,如下所示:
classSpecimenConsent(BaseSpecimenConsent,SampleCollectionFieldsMixin,RequiresConsentMixin,VulnerabilityFieldsMixin,AppointmentMixin,BaseUuidModel):consent_model=MyStudyConsentregistered_subject=models.OneToOneField(RegisteredSubject,null=True)objects=models.Manager()history=AuditTrail()classMeta:app_label='my_app'verbose_name='Specimen Consent'
验证器
同意验证程序将验证出生日期是否在给定的年龄范围内,例如:
fromedc_consent.validtorsimportConsentAgeValidatorclassMyConsent(ConsentQuotaMixin,BaseConsent):dob=models.DateField(validators=[ConsentAgeValidator(16,64)])quota=QuotaManager()classMeta:app_label='my_app'
personalfieldsmixin包含出生日期字段,您可以设置如下年龄范围:
fromedc_consent.validtorsimportConsentAgeValidatorfromedc_consent.models.fieldsimportPersonalFieldsMixinclassMyConsent(ConsentQuotaMixin,PersonalFieldsMixin,BaseConsent):quota=QuotaManager()MIN_AGE_OF_CONSENT=18MAX_AGE_OF_CONSENT=64classMeta:app_label='my_app'
普通传感器
使用收集的数据跟踪同意版本
所有模型数据都被标记为同意模型类的同意版本,并报告日期时间。
同意改变时重新发送同意受试者
同意模型在主题标识、身份和版本上是唯一的。如果在同意类型中添加了新的同意版本,则每个受试者都需要新的同意,因为在新同意的有效期内会报告数据。
必须注意确保查询同意模型时了解唯一约束。
将同意版本链接到需要同意的模型上添加或删除的模型字段
婴儿使用母亲的同意书
通过将属性
同意对象标识符
添加到同意中
通过将属性 同意对象标识符 添加到同意中
其他待办事项
- 需要同意的模型的保存方法中的模型更新
- 处理由于同意版本更改而添加或删除的模型字段(问题)
- 检查验证操作
- 更新需要许可的模型上的版本的管理命令(如果在创建实例后添加了edc_许可)
- 处理重新同意问题,例如,如果原始同意受年龄(16-64岁)限制,但重新同意不受年龄限制。可能需要打开上限。