/
DiagnosticController.cs
163 lines (147 loc) · 7.07 KB
/
DiagnosticController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Witivio.Sdk;
namespace InfosCovid19.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DiagnosticController : ControllerBase
{
private const string ValeurOui = "oui";
[HttpPost()]
public IActionResult Post([FromBody]VisioDialog dialog)
{
var q1 = dialog.GetPropertyValue("Q1");
var q2 = dialog.GetPropertyValue("Q2");
var q3 = dialog.GetPropertyValue("Q3");
var q4 = dialog.GetPropertyValue("Q4");
var q5 = dialog.GetPropertyValue("Q5");
var q6 = dialog.GetPropertyValue("Q6");
var q6Bis = dialog.GetPropertyValue("Q6bis");
var q7 = dialog.GetPropertyValue("Q7");
var q8 = dialog.GetPropertyValue("Q8");
var q9 = dialog.GetPropertyValue("Q9");
var q10 = dialog.GetPropertyValue("Q10");
var q11 = dialog.GetPropertyValue("Q11");
var q12 = dialog.GetPropertyValue("Q12");
var q13 = dialog.GetPropertyValue("Q13");
var q14 = dialog.GetPropertyValue("Q14");
var q15 = dialog.GetPropertyValue("Q15");
var q16 = dialog.GetPropertyValue("Q16");
var q17 = dialog.GetPropertyValue("Q17");
var q18 = dialog.GetPropertyValue("Q18");
var q19 = dialog.GetPropertyValue("Q19");
var q20 = dialog.GetPropertyValue("Q20");
var q21 = dialog.GetPropertyValue("Q21");
bool aDeLaFievre = (q1.Contains("37,8", StringComparison.InvariantCultureIgnoreCase) || q1.Contains("39", StringComparison.InvariantCultureIgnoreCase));
bool aDeLaToux = q2.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase);
bool aDeLAnosmie = q3.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase);
bool aDesDouleurs = q4.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase);
bool aDeLaDiarrhé = q5.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase);
var poids = int.Parse(q10);
var taille = double.Parse(q11);
if (taille >= 100)
taille = taille / 100;
var imc = poids / (taille * taille);
var facteursPronostique = new List<bool>();
if (q9.Contains("70", StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (imc >= 30) facteursPronostique.Add(true);
if (q12.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q13.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q14.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q15.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q16.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q17.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q18.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q19.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
if (q20.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursPronostique.Add(true);
var facteursMajeurs = new List<bool>();
if (q7.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursMajeurs.Add(true);
if (q8.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase)) facteursMajeurs.Add(true);
var facteursMineurs = new List<bool>();
if (q1.Contains("35,5", StringComparison.InvariantCultureIgnoreCase) || q1.Contains("39", StringComparison.InvariantCultureIgnoreCase) || q1.Contains("pas", StringComparison.InvariantCultureIgnoreCase))
facteursMineurs.Add(true);
if (q6Bis != null)
facteursMineurs.Add(q6Bis.Contains(ValeurOui, StringComparison.InvariantCultureIgnoreCase));
if (q9.Contains("moins", StringComparison.InvariantCultureIgnoreCase))
{
return Ok(new { end = "FIN1" });
}
if (facteursMajeurs.Count() >= 1)
{
return Ok(new { end = "FIN5" });
}
if (aDeLaFievre && aDeLaToux)
{
if (facteursPronostique.Count() == 0)
return Ok(new { end = "FIN6" });
else
{
if (facteursMineurs.Count() == 0 || facteursMineurs.Count() == 1)
{
return Ok(new { end = "FIN6" });
}
else
{
return Ok(new { end = "FIN4" });
}
}
}
if (aDeLaFievre ||
(
aDeLaDiarrhé || (aDeLaToux && aDesDouleurs) || (aDeLaToux && aDeLAnosmie) || (aDesDouleurs && aDeLAnosmie)
)
)
{
if (facteursPronostique.Count() == 0)
{
if (facteursMineurs.Count() == 0)
{
if (q9.Contains("< 50", StringComparison.InvariantCultureIgnoreCase))
{
return Ok(new { end = "FIN2" });
}
else
{
return Ok(new { end = "FIN3" });
}
}
if (facteursMineurs.Count() >= 1)
{
return Ok(new { end = "FIN3" });
}
}
if (facteursPronostique.Count() >= 1)
{
if (facteursMineurs.Count() == 0 || facteursMineurs.Count() == 1)
{
return Ok(new { end = "FIN3" });
}
else
{
return Ok(new { end = "FIN4" });
}
}
}
if (aDeLaToux ^ aDesDouleurs ^ aDeLAnosmie)
{
if (facteursPronostique.Count() == 0)
{
return Ok(new { end = "FIN2" });
}
else
{
return Ok(new { end = "FIN7" });
}
}
else
{
return Ok(new { end = "FIN8" });
}
}
}
}