临床医生/电子数据中心项目参与者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岁)限制,但重新同意不受年龄限制。可能需要打开上限。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajavax。艾尔。PropertyNotFoundException:   java为什么通过TCP发送的文件比它本身包含的文件包含更多的数据?   java为什么字符开关/案例不起作用?   php到java连接器,在哪里可以找到好的连接器   需要帮助Java简单规则形状面积计算器和if语句吗   macos如何从newstyle Oracle Java OSX捆绑包结构启动帮助页?   java既然所有的类都扩展对象,而对象是一个类,那么对象如何扩展对象呢?   java从JavaPairdd<String,Tuple2<Integer,Integer>>转换为JavaPairdd<String,Integer>   java微调器值未从一个活动传递到另一个活动   参数化类型的java数组   java不提供类。getCanonicalName是否存在性能问题?   java输入键JTextField   为什么我不能在java中调用nextLine()方法两次?   JTextPane中的java JProgressBar   java如何获取Crudepository实例?   用于提取几个<div>标记的java正则表达式   java如何使用JUnit Testrunner生成html图像   Go中Java静态属性的等价性