[IMP] studies_base:

Vues Questionnaire + Participant + Response + Progress Status
This commit is contained in:
clementthomas
2024-07-18 10:43:35 +02:00
parent 10b71eb44f
commit 87d98be89e
12 changed files with 382 additions and 19 deletions

View File

@@ -26,6 +26,10 @@
"security/ir.model.access.csv",
"views/study_config_views.xml",
"views/study_study_views.xml",
"views/study_progress_status_views.xml",
"views/study_questionnaire_views.xml",
"views/study_questionnaire_response_views.xml",
"views/study_participant_views.xml",
"views/study_menu.xml",
],
# only loaded in demonstration mode

View File

@@ -13,11 +13,11 @@ class StudyParticipant(models.Model):
subject = fields.Many2one("res.partner", string="Contact", domain=[("category_patient",'=',1)], readonly=True)
firstname = fields.Char("Prénom", related="subject.firstname")
lastname = fields.Char("Nom", related="subject.lastname")
progress_status = fields.Many2one("study.participant.progress.status", string="Statut de la participation")
state = fields.Many2one("study.participant.state", string="État de la participation")
progress_status = fields.Many2one("study.participant.progress.status", string="Statut de la participation", readonly=True)
state = fields.Many2one("study.participant.state", string="État de la participation", readonly=True)
part_of_author = fields.Many2one("study.author", string="Platforme d'étude", related="part_of.author")
author = fields.Char("ID plateforme")
identifier = fields.Char("Idientifiants de l'enrôlement")
author = fields.Char("ID plateforme", readonly=True)
identifier = fields.Char("Idientifiants de l'enrôlement", readonly=True)
#questionnaire_responses = fields.One2many("study.questionnaire.response", "study_questionnaire_id", string="Réponses")
questionnaire_responses = fields.One2many("study.questionnaire.response", "study_participant_id", string="Réponses")

View File

@@ -7,6 +7,8 @@ from odoo.exceptions import UserError
class StudyProgressStatus(models.Model):
_name = "study.progress.status"
_rec_name = 'state'
study_id = fields.Many2one("study.study", string="Étude")
state = fields.Selection([
('DRAFT', 'Brouillon'),

View File

@@ -10,7 +10,7 @@ class StudyQuestionnaire(models.Model):
title = fields.Char("Nom du questionnaire")
name = fields.Char("Acronyme")
progress_status = fields.Many2one("study.progress.status", string="Statut du questionnaire")
progress_status = fields.Many2one("study.questionnaire.progress.status", string="Statut du questionnaire")
approval_date = fields.Datetime("Date d'approbation")
last_review_date = fields.Datetime("Dernière relecture")
effective_period_start = fields.Datetime("Début de la collecte")
@@ -20,7 +20,7 @@ class StudyQuestionnaire(models.Model):
category = fields.Many2one("study.questionnaire.category", string="Catégorie de questionnaire")
type = fields.Many2one("study.questionnaire.type", string="Type de questionnaire")
purpose = fields.Text("Objectif")
subject_type = fields.Many2one("questionnaire.subject.type", string="Sujets")
subject_type = fields.Many2one("study.questionnaire.subject.type", string="Sujets")
description = fields.Text("Description du questionnaire")
jurisdiction = fields.Many2many("study.region", string="Zones géographiques ciblées")
@@ -40,11 +40,11 @@ class StudyQuestionnaire(models.Model):
repeat_delay = fields.Integer("Délai de répétition")
repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai de répétition")
following = fields.Many2one("study.questionnaire", string="Questionnaire précédent")
following_repeat_delay = fields.Integer("Délai avec le questionnaire précédent")
following_repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire précédent")
following_delay = fields.Integer("Délai avec le questionnaire précédent")
following_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire précédent")
preceding = fields.Many2one("study.questionnaire", string="Questionnaire suivant")
preceding_repeat_delay = fields.Integer("Délai avec le questionnaire suivant")
preceding_repeat_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire suivant")
preceding_delay = fields.Integer("Délai avec le questionnaire suivant")
preceding_delay_type = fields.Selection([("d", "Jour"), ("m", "Mois"), ("y", "Année")], string="Type de délai avec le questionnaire suivant")
copyright = fields.Text("Copyright")
copyright_label = fields.Char("Propriétaire et année du copyright")

View File

@@ -16,11 +16,11 @@ class StudyQuestionnaireResponse(models.Model):
author = fields.Many2one("study.author", string="Platform d'étude", readonly=True)
identifier_author = fields.Char("ID plateforme", readonly=True)
redirect_url = fields.Char("Lien personnel de redirection vers le questionnaire")
redirect_url = fields.Char("Lien personnel de redirection vers le questionnaire", readonly=True)
study_id = fields.Many2one("study.study", "Étude")
study_questionnaire_id = fields.Many2one("study.questionnaire", string="Questionnaire")
study_participant_id = fields.Many2one("study.participant", string="Participation")
study_id = fields.Many2one("study.study", "Étude", readonly=True)
study_questionnaire_id = fields.Many2one("study.questionnaire", string="Questionnaire", readonly=True)
study_participant_id = fields.Many2one("study.participant", string="Participation", readonly=True)
source = fields.Many2one("res.partner", string="Contact", domain=[("category_patient",'=',1)], readonly=True)
firstname = fields.Char("Prénom", related="source.firstname")

View File

@@ -313,7 +313,7 @@
<!-- MENUS -->
<menuitem id="menu_study_config" name="Configuration" parent="menu_study_main" sequence="2">
<menuitem id="menu_study_config" name="Configuration" parent="menu_study_main" sequence="999">
<menuitem id="menu_study_study_config" name="Études">
<menuitem id="menu_study_author"
action="action_study_author"

View File

@@ -5,5 +5,17 @@
<menuitem id="menu_study_study" name="Études"
action="action_study_study"
sequence="1" />
<menuitem id="menu_study_progress_status" name="Statuts d'avancement des études"
action="action_study_progress_status"
sequence="1" />
<menuitem id="menu_study_questionnaire" name="Questionnaires"
action="action_study_questionnaire"
sequence="2" />
<menuitem id="menu_study_participant" name="Participants"
action="action_study_participant"
sequence="3" />
<menuitem id="menu_study_questionnaire_response" name="Réponses aux questionnaires"
action="action_study_questionnaire_response"
sequence="4" />
</menuitem>
</odoo>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- TREE VIEW -->
<record id="view_study_participant_tree" model="ir.ui.view">
<field name="name">study.participant.tree</field>
<field name="model">study.participant</field>
<field name="arch" type="xml">
<tree string="Participants">
<field name="part_of"/>
<field name="subject"/>
<field name="firstname"/>
<field name="lastname"/>
</tree>
</field>
</record>
<!-- FORM VIEW -->
<record id="view_study_participant_form" model="ir.ui.view">
<field name="name">study.participant.form</field>
<field name="model">study.participant</field>
<field name="arch" type="xml">
<form string="Étude">
<header>
<!-- action buttons -->
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<!-- big buttons -->
</div>
<div class="oe_title">
<h1>
<label for="identifier_primary_id" string="Idientifiant Seintinelles" /><field name="identifier_primary_id" />
</h1>
<h2>
<label for="part_of" string="Étude" /><field name="part_of" />
</h2>
</div>
<group name="participant" string="Participant">
<group name="participant_left">
<field name="subject" />
<field name="lastname" />
<field name="firstname" />
</group>
<group name="participant_right">
</group>
</group>
<group name="participation" string="Participation">
<group name="participation_left">
<field name="progress_status" />
<field name="state" />
</group>
<group name="participation_right">
<field name="part_of_author" />
<field name="author" />
<field name="identifier" />
</group>
</group>
<group name="technique" string="Technique">
<group name="technique_left">
<field name="create_date" />
<field name="write_date" />
</group>
<group name="technique_right">
</group>
</group>
<notebook>
<page string="Réponses" name="responses">
<field name="questionnaire_responses" />
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- ACTIONS -->
<record id="action_study_participant" model="ir.actions.act_window">
<field name="name">Participants</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">study.participant</field>
</record>
</odoo>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- TREE VIEW -->
<record id="view_study_progress_status_tree" model="ir.ui.view">
<field name="name">study.progress.status.tree</field>
<field name="model">study.progress.status</field>
<field name="arch" type="xml">
<tree string="Statuts d'avancement des études">
<field name="study_id"/>
<field name="state"/>
<field name="actual"/>
<field name="date_begin"/>
<field name="date_end"/>
</tree>
</field>
</record>
<!-- FORM VIEW -->
<record id="view_study_progress_status_form" model="ir.ui.view">
<field name="name">study.progress.status.form</field>
<field name="model">study.progress.status</field>
<field name="arch" type="xml">
<form string="Statut d'avancement des études">
<group>
<field name="study_id"/>
<field name="state"/>
<field name="actual"/>
<field name="date_begin"/>
<field name="date_end"/>
</group>
</form>
</field>
</record>
<!-- ACTIONS -->
<record id="action_study_progress_status" model="ir.actions.act_window">
<field name="name">Statuts d'avancement des études</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">study.progress.status</field>
</record>
</odoo>

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- TREE VIEW -->
<record id="view_study_questionnaire_response_tree" model="ir.ui.view">
<field name="name">study.questionnaire.response.response.tree</field>
<field name="model">study.questionnaire.response</field>
<field name="arch" type="xml">
<tree string="Réponses aux questionnaires">
<field name="start_date"/>
<field name="end_date"/>
<field name="study_id"/>
<field name="study_questionnaire_id"/>
<field name="firstname"/>
<field name="lastname"/>
</tree>
</field>
</record>
<!-- FORM VIEW -->
<record id="view_study_questionnaire_response_form" model="ir.ui.view">
<field name="name">study.questionnaire.response.response.form</field>
<field name="model">study.questionnaire.response</field>
<field name="arch" type="xml">
<form string="Réponses aux questionnaires">
<header>
<!-- action buttons -->
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<!-- big buttons -->
</div>
<div class="oe_title">
<h1>
<label for="identifier_primary_id" string="Idientifiant Seintinelles" /><field name="identifier_primary_id" />
</h1>
</div>
<group name="collecte" string="Collecte">
<group name="collecte_left">
<field name="start_date" />
<field name="end_date" />
<field name="state" />
<field name="progress_status" />
<field name="authored" />
</group>
<group name="collecte_right">
<field name="author" />
<field name="identifier_author" />
<field name="redirect_url" />
</group>
</group>
<group name="study" string="Étude">
<group name="study_left">
<field name="study_id" />
<field name="study_questionnaire_id" />
<field name="study_participant_id" />
</group>
<group name="study_right">
</group>
</group>
<group name="participant" string="Participant">
<group name="participant_left">
<field name="source" />
<field name="firstname" />
<field name="lastname" />
</group>
<group name="participant_right">
</group>
</group>
<group name="technique" string="Technique">
<group name="technique_left">
<field name="create_date" />
<field name="write_date" />
</group>
<group name="technique_right">
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- ACTIONS -->
<record id="action_study_questionnaire_response" model="ir.actions.act_window">
<field name="name">Réponses aux questionnaires</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">study.questionnaire.response</field>
</record>
</odoo>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- TREE VIEW -->
<record id="view_study_questionnaire_tree" model="ir.ui.view">
<field name="name">study.questionnaire.tree</field>
<field name="model">study.questionnaire</field>
<field name="arch" type="xml">
<tree string="Questionnaires">
<field name="title"/>
<field name="name"/>
<field name="effective_period_start"/>
<field name="effective_period_end"/>
<field name="study_id"/>
</tree>
</field>
</record>
<!-- FORM VIEW -->
<record id="view_study_questionnaire_form" model="ir.ui.view">
<field name="name">study.questionnaire.form</field>
<field name="model">study.questionnaire</field>
<field name="arch" type="xml">
<form string="Questionnaires">
<header>
<!-- action buttons -->
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<!-- big buttons -->
</div>
<div class="oe_title">
<h1>
<label for="title" string="Nom du questionnaire" /><field name="title" />
</h1>
<h2>
<label for="name" string="Acronyme" /><field name="name" />
</h2>
</div>
<group name="status" string="Statut">
<group name="status_left">
<field name="progress_status" />
<field name="approval_date" />
<field name="last_review_date" />
</group>
<group name="status_right">
<field name="effective_period_start" />
<field name="effective_period_end" />
</group>
</group>
<group name="description" string="Description">
<group name="description_left">
<field name="study_id" />
<field name="category" />
<field name="type" />
<field name="purpose" />
<field name="subject_type" />
</group>
<group name="description_right">
<field name="description" />
<field name="jurisdiction" widget="many2many_tags" />
<field name="derived_from" />
<field name="version" />
<field name="status" />
</group>
</group>
<group name="technique" string="Technique">
<group name="technique_left">
<field name="experimental" />
<field name="author" />
<field name="identifier_author" />
</group>
<group name="technique_right">
<field name="identifier_primary_id" />
<field name="create_date" />
<field name="write_date" />
</group>
</group>
<notebook>
<page string="Planification" name="planification">
<group name="planification">
<group name="planification_left">
<field name="rank_in_study" />
<field name="fixed_start_date" />
<field name="fixed_end_date" />
<field name="repeated" />
<field name="repeat_delay" />
<field name="repeat_delay_type" />
</group>
<group name="planification_right">
<field name="following" />
<field name="following_delay" />
<field name="following_delay_type" />
<field name="preceding" />
<field name="preceding_delay" />
<field name="preceding_delay_type" />
</group>
</group>
</page>
<page string="Copyright" name="copyright">
<group name="copyright">
<field name="copyright" />
<field name="copyright_label" />
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- ACTIONS -->
<record id="action_study_questionnaire" model="ir.actions.act_window">
<field name="name">Questionnaires</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">study.questionnaire</field>
</record>
</odoo>

View File

@@ -1,18 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- TREE VIEW -->
<record id="view_stud_study_tree" model="ir.ui.view">
<record id="view_study_study_tree" model="ir.ui.view">
<field name="name">study.study.tree</field>
<field name="model">study.study</field>
<field name="arch" type="xml">
<tree string="Études">
<field name="title"/>
<field name="name"/>
<field name="period_start"/>
<field name="period_end"/>
<field name="progress_status"/>
</tree>
</field>
</record>
<!-- FORM VIEW -->
<record id="view_stud_study_form" model="ir.ui.view">
<record id="view_study_study_form" model="ir.ui.view">
<field name="name">study.study.form</field>
<field name="model">study.study</field>
<field name="arch" type="xml">