89 lines
3.5 KiB
Python
89 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models, _
|
|
from odoo import osv
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class StudyStudy(models.Model):
|
|
_name = "study.study"
|
|
|
|
title = fields.Char("Nom de l'étude")
|
|
name = fields.Char("Acronyme")
|
|
|
|
period_start = fields.Datetime("Début de l'étude")
|
|
period_end = fields.Datetime("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"
|
|
)
|
|
|
|
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"
|
|
)
|
|
part_of = fields.Many2one("study.study", string="Fait partie de")
|
|
version = fields.Char("Version")
|
|
phase = fields.Many2one("study.phase", string="Phase")
|
|
status = fields.Many2one("study.status", string="Status de la publication")
|
|
|
|
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
|
|
)
|
|
|
|
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",
|
|
"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",
|
|
"study_study_recruitment_eligibility_study_excl",
|
|
"base_study_id",
|
|
"excl_study_id",
|
|
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"
|
|
)
|
|
region = fields.Many2many("study.region", string="Zones géographiques étudiées")
|
|
|
|
note = fields.Text("Annotations")
|
|
|
|
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")
|
|
def name_get(self):
|
|
if not self.name:
|
|
return [(study.id, study.title) for study in self]
|
|
return [(study.id, f"[{study.name}] {study.title}") for study in self]
|