[IMP] studies_base: Add active field to study, participant, questionnaire, questionnaire_response

This commit is contained in:
Boris Gallet
2025-05-12 16:22:06 +02:00
parent 6293f642ce
commit 72b567af47
4 changed files with 72 additions and 33 deletions

View File

@@ -32,3 +32,5 @@ class StudyParticipant(models.Model):
created = fields.Datetime("Date de création")
updated = fields.Datetime("Date mise à jour")
active = fields.Boolean("Actif", default=True)

View File

@@ -19,10 +19,14 @@ class StudyQuestionnaire(models.Model):
subject_type = fields.Many2many("study.questionnaire.subject.type", string="Sujets")
description = fields.Text("Description du questionnaire")
jurisdiction = fields.Many2many("study.region", string="Zones géographiques ciblées")
jurisdiction = fields.Many2many(
"study.region", string="Zones géographiques ciblées"
)
derived_from = fields.Many2one("study.questionnaire", string="Dérivé de")
version = fields.Char("Version")
status = fields.Many2one("study.questionnaire.status", string="Statut de publication")
status = fields.Many2one(
"study.questionnaire.status", string="Statut de publication"
)
experimental = fields.Boolean("Questionnaire de test")
identifier_author = fields.Char("ID plateforme")
@@ -34,6 +38,8 @@ class StudyQuestionnaire(models.Model):
created = fields.Datetime("Created")
date = fields.Datetime("Date")
active = fields.Boolean("Actif", default=True)
def copy(self, default=None):
default = dict(default or {}, identifier_primary_id=None)
return super().copy(default)

View File

@@ -8,18 +8,29 @@ class StudyQuestionnaireResponse(models.Model):
_name = "study.questionnaire.response"
identifier_primary_id = fields.Char("Identifiant Seintinelles", readonly=True)
progress_status = fields.Many2one("study.questionnaire.response.progress.status", string="État d'avancement")
progress_status = fields.Many2one(
"study.questionnaire.response.progress.status", string="État d'avancement"
)
authored = fields.Datetime("Date de saisie des réponses", readonly=True)
identifier_author = fields.Char("ID plateforme", readonly=True)
author = fields.Many2one("study.author", string="Platform d'étude", readonly=True)
study_id = fields.Many2one("study.study", "Étude", readonly=True)
study_questionnaire_id = fields.Many2one("study.questionnaire", string="Questionnaire", readonly=True)
study_questionnaire_id = fields.Many2one(
"study.questionnaire", string="Questionnaire", readonly=True
)
source = fields.Many2one("res.partner", string="Contact", domain=[("category_patient",'=',1)], readonly=True)
source = fields.Many2one(
"res.partner",
string="Contact",
domain=[("category_patient", "=", 1)],
readonly=True,
)
firstname = fields.Char("Prénom", related="source.firstname")
lastname = fields.Char("Nom", related="source.lastname")
created = fields.Datetime("Date de création")
updated = fields.Datetime("Date mise à jour")
active = fields.Boolean("Actif", default=True)

View File

@@ -5,7 +5,6 @@ from odoo.exceptions import UserError
class StudyStudy(models.Model):
_name = "study.study"
title = fields.Char("Nom de l'étude")
@@ -13,13 +12,19 @@ class StudyStudy(models.Model):
period_start = fields.Date("Début de l'étude")
period_end = fields.Date("Fin de l'étude")
progress_status_id = fields.Many2one("study.progress.status", string="Avancement de l'étude") #should be computed to actual progress status
progress_status = fields.One2many("study.progress.status", "study_id", "All progress status")
progress_status_id = fields.Many2one(
"study.progress.status", string="Avancement de l'étude"
) # should be computed to actual progress status
progress_status = fields.One2many(
"study.progress.status", "study_id", "All progress status"
)
description_summary = fields.Char("Brève description de l'étude")
description = fields.Text("Description de l'étude")
keywords = fields.Many2many("study.keyword", string="Mots-clés")
primary_purpose_type = fields.Many2one("study.purpose.type", string="Objectif principal")
primary_purpose_type = fields.Many2one(
"study.purpose.type", string="Objectif principal"
)
part_of = fields.Many2one("study.study", string="Fait partie de")
version = fields.Char("Version")
phase = fields.Many2one("study.phase", string="Phase")
@@ -28,39 +33,54 @@ class StudyStudy(models.Model):
site = fields.Many2one("res.partner", string="Lieu de l'étude")
identifier_author = fields.Char("ID plateforme")
identifier_primary_id = fields.Char("Identifiant Seintinelles", readonly=True, copy=False)
identifier_primary_id = fields.Char(
"Identifiant Seintinelles", readonly=True, copy=False
)
recruitment_target_number = fields.Integer("Nombre de participants à recruter")
recruitment_max_number = fields.Integer("Nombre limite de participations")
recruitment_eligibility_gender = fields.Many2one("study.gender", string="Genre")
recruitment_eligibility_age_min = fields.Integer("Âge min")
recruitment_eligibility_age_max = fields.Integer("Âge max")
recruitment_eligibility_condition_clinical_status = fields.Many2many("study.eligibility.condition.clinical.status", string="Statut de l'affectation (malade, ancien malade...)")
recruitment_eligibility_condition_body_site = fields.Many2many("study.eligibility.condition.body.site", string="Localisation anatomique de l'affection")
recruitment_eligibility_study_incl = fields.Many2many("study.study",
recruitment_eligibility_condition_clinical_status = fields.Many2many(
"study.eligibility.condition.clinical.status",
string="Statut de l'affectation (malade, ancien malade...)",
)
recruitment_eligibility_condition_body_site = fields.Many2many(
"study.eligibility.condition.body.site",
string="Localisation anatomique de l'affection",
)
recruitment_eligibility_study_incl = fields.Many2many(
"study.study",
"study_study_recruitment_eligibility_study_incl",
"base_study_id",
"incl_study_id",
string="Doit avoir participé aux études...")
recruitment_eligibility_study_excl = fields.Many2many("study.study",
string="Doit avoir participé aux études...",
)
recruitment_eligibility_study_excl = fields.Many2many(
"study.study",
"study_study_recruitment_eligibility_study_excl",
"base_study_id",
"excl_study_id",
string="Ne doit pas avoir participé aux études...")
string="Ne doit pas avoir participé aux études...",
)
recruitment_eligibility_description = fields.Text("Description de la cible")
recruitment_eligibility_topic = fields.Many2many("study.eligibility.topic", string="Thématique de recherche")
recruitment_eligibility_topic = fields.Many2many(
"study.eligibility.topic", string="Thématique de recherche"
)
region = fields.Many2many("study.region", string="Zones géographiques étudiées")
note = fields.Text("Annotations")
created = fields.Datetime('Created')
updated = fields.Datetime('Updated')
created = fields.Datetime("Created")
updated = fields.Datetime("Updated")
active = fields.Boolean("Actif", default=True)
def copy(self, default=None):
default = dict(default or {}, identifier_primary_id=None)
return super().copy(default)
@api.depends('title', 'name')
@api.depends("title", "name")
def name_get(self):
return [(study.id, f"[{study.name}] {study.title}") for study in self]