Skip to content

Commit 798c9b6

Browse files
authored
Merge pull request #427 from ansforge/feat/add-qualification-victims-mainVictim-as-custommap
Feat/add qualification victims main victim as custommap
2 parents 177317f + 5057897 commit 798c9b6

4 files changed

Lines changed: 126 additions & 5 deletions

File tree

converter/converter/cisu/create_case/create_case_cisu_constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class CreateCaseCISUConstants:
7070

7171
QUALIFICATION_PATH = "$.qualification"
7272
QUALIFICATION_VICTIMS_PATH = f"{QUALIFICATION_PATH}.victims"
73+
QUALIFICATION_MAIN_VICTIM_PATH = f"{QUALIFICATION_VICTIMS_PATH}.mainVictim"
74+
QUALIFICATION_VICTIM_COUNT_PATH = f"{QUALIFICATION_VICTIMS_PATH}.count"
7375
QUALIFICATION_DETAILS_PRIORITY_PATH = f"{QUALIFICATION_PATH}.details.priority"
7476
QUALIFICATION_WHATS_HAPPEN_PATH = f"{QUALIFICATION_PATH}.whatsHappen"
7577

converter/converter/cisu/create_case/create_case_cisu_converter.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ def merge_notes_freetext(json_data: Dict[str, Any]):
147147

148148
def add_victims_to_medical_notes(json_data: Dict[str, Any], sender_id: str):
149149
logger.debug("Adding victims to medical notes")
150-
field_value = get_field_value(json_data, "$.qualification.victims")
150+
field_value = get_field_value(
151+
json_data, CreateCaseCISUConstants.QUALIFICATION_VICTIMS_PATH
152+
)
151153

152154
if field_value is None:
153155
return
@@ -159,6 +161,44 @@ def add_victims_to_medical_notes(json_data: Dict[str, Any], sender_id: str):
159161
)
160162
add_object_to_medical_notes(json_data, translated_text, sender_id)
161163

164+
def add_victim_count_to_custom_map(json_data: Dict[str, Any]):
165+
logger.debug("Adding victims count to customMap")
166+
167+
count = get_field_value(
168+
json_data, CreateCaseCISUConstants.QUALIFICATION_VICTIM_COUNT_PATH
169+
)
170+
171+
if count is None:
172+
return
173+
174+
victim_count = CustomMap(
175+
key="qualification.victims.count",
176+
label="Nombre de patients-victimes",
177+
value=count,
178+
freetext="Indique le nombre de victimes selon la nomenclature du référentiel CISU",
179+
)
180+
181+
add_to_custom_map(json_data, victim_count)
182+
183+
def add_main_victim_to_custom_map(json_data: Dict[str, Any]):
184+
logger.debug("Adding main victim to customMap")
185+
186+
main_victim = get_field_value(
187+
json_data, CreateCaseCISUConstants.QUALIFICATION_MAIN_VICTIM_PATH
188+
)
189+
190+
if main_victim is None:
191+
return
192+
193+
main_victim = CustomMap(
194+
key="qualification.victims.mainVictim",
195+
label="Type du patient-victime principal",
196+
value=main_victim,
197+
freetext="Identifie le type de la principale victime (celle dont l'état de santé provoque le déclenchement de l'envoi des secours) selon la nomenclature du référentiel CISU",
198+
)
199+
200+
add_to_custom_map(json_data, main_victim)
201+
162202
def add_object_to_medical_notes(
163203
json_data: Dict[str, Any], note_text: str, sender_id: str
164204
):
@@ -271,6 +311,9 @@ def add_call_taker_org_to_custom_map(json_data: Dict[str, Any]):
271311
add_victims_to_medical_notes(output_use_case_json, sender_id)
272312

273313
clear_custom_map(output_use_case_json)
314+
315+
add_victim_count_to_custom_map(output_use_case_json)
316+
add_main_victim_to_custom_map(output_use_case_json)
274317
add_call_taker_org_to_custom_map(output_use_case_json)
275318

276319
# - Delete paths - /!\ It must be the last step

converter/tests/cisu/__snapshots__/test_create_case_converter.ambr

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,18 @@
143143
},
144144
"additionalInformation": {
145145
"customMap": [
146+
{
147+
"key": "qualification.victims.count",
148+
"value": "1",
149+
"label": "Nombre de patients-victimes",
150+
"freetext": "Indique le nombre de victimes selon la nomenclature du r\u00e9f\u00e9rentiel CISU"
151+
},
152+
{
153+
"key": "qualification.victims.mainVictim",
154+
"value": "ADULTE",
155+
"label": "Type du patient-victime principal",
156+
"freetext": "Identifie le type de la principale victime (celle dont l'\u00e9tat de sant\u00e9 provoque le d\u00e9clenchement de l'envoi des secours) selon la nomenclature du r\u00e9f\u00e9rentiel CISU"
157+
},
146158
{
147159
"key": "initialalert.calltaker.organization",
148160
"value": "fr.health.samu440",
@@ -314,6 +326,18 @@
314326
},
315327
"additionalInformation": {
316328
"customMap": [
329+
{
330+
"key": "qualification.victims.count",
331+
"value": "1",
332+
"label": "Nombre de patients-victimes",
333+
"freetext": "Indique le nombre de victimes selon la nomenclature du r\u00e9f\u00e9rentiel CISU"
334+
},
335+
{
336+
"key": "qualification.victims.mainVictim",
337+
"value": "ADULTE",
338+
"label": "Type du patient-victime principal",
339+
"freetext": "Identifie le type de la principale victime (celle dont l'\u00e9tat de sant\u00e9 provoque le d\u00e9clenchement de l'envoi des secours) selon la nomenclature du r\u00e9f\u00e9rentiel CISU"
340+
},
317341
{
318342
"key": "initialalert.calltaker.organization",
319343
"value": "fr.health.samu440",

converter/tests/cisu/test_create_case_converter.py

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ def additional_validation(result):
3030
assert "initialalert.calltaker.organization" in custom_map_keys, (
3131
"initialalert.calltaker.organization must be present in customMap"
3232
)
33+
assert "qualification.victims.count" in custom_map_keys, (
34+
"qualification.victims.count must be present in customMap"
35+
)
36+
assert "qualification.victims.mainVictim" in custom_map_keys, (
37+
"qualification.victims.mainVictim must be present in customMap"
38+
)
3339

3440

3541
def test_from_cisu_conversion_local():
@@ -231,7 +237,7 @@ def test_count_victims_no_field(self):
231237
)
232238

233239

234-
class TestInitialCallTaker(unittest.TestCase):
240+
class TestCustomMap(unittest.TestCase):
235241
def setUp(self):
236242
self.fixtures_folder_path = "tests/fixtures/RC-EDA/"
237243
self.converter = CreateCaseCISUConverter
@@ -262,7 +268,51 @@ def test_initial_calltaker(self):
262268
self.assertEqual(calltaker_entry["label"], "Identifiant SDIS")
263269
self.assertIsNotNone(calltaker_entry["value"])
264270

265-
def test_custom_map_cleared_before_calltaker_added(self):
271+
def test_victim_count(self):
272+
message = TestHelper.create_edxl_json_from_sample(
273+
TestConstants.EDXL_FIRE_TO_HEALTH_ENVELOPE_PATH,
274+
self.fixtures_folder_path + "RC-EDA_exhaustive_fill.json",
275+
)
276+
277+
result_edxl = self.converter.from_cisu_to_rs(message)
278+
result = get_edxl_message(result_edxl)["createCaseHealth"]
279+
280+
custom_map = result["additionalInformation"]["customMap"]
281+
victim_count_entry = next(
282+
(e for e in custom_map if e["key"] == "qualification.victims.count"),
283+
None,
284+
)
285+
286+
self.assertIsNotNone(
287+
victim_count_entry, "qualification.victims.count must be in customMap"
288+
)
289+
self.assertEqual(victim_count_entry["label"], "Nombre de patients-victimes")
290+
self.assertIsNotNone(victim_count_entry["value"])
291+
292+
def test_main_victim(self):
293+
message = TestHelper.create_edxl_json_from_sample(
294+
TestConstants.EDXL_FIRE_TO_HEALTH_ENVELOPE_PATH,
295+
self.fixtures_folder_path + "RC-EDA_exhaustive_fill.json",
296+
)
297+
298+
result_edxl = self.converter.from_cisu_to_rs(message)
299+
result = get_edxl_message(result_edxl)["createCaseHealth"]
300+
301+
custom_map = result["additionalInformation"]["customMap"]
302+
main_victim_entry = next(
303+
(e for e in custom_map if e["key"] == "qualification.victims.mainVictim"),
304+
None,
305+
)
306+
307+
self.assertIsNotNone(
308+
main_victim_entry, "qualification.victims.mainVictim must be in customMap"
309+
)
310+
self.assertEqual(
311+
main_victim_entry["label"], "Type du patient-victime principal"
312+
)
313+
self.assertIsNotNone(main_victim_entry["value"])
314+
315+
def test_custom_map_cleared_before_custom_map_infos_added(self):
266316
message = TestHelper.create_edxl_json_from_sample(
267317
TestConstants.EDXL_FIRE_TO_HEALTH_ENVELOPE_PATH,
268318
self.fixtures_folder_path + "RC-EDA_exhaustive_fill.json",
@@ -278,8 +328,10 @@ def test_custom_map_cleared_before_calltaker_added(self):
278328
custom_map = get_edxl_message(result_edxl)["createCaseHealth"][
279329
"additionalInformation"
280330
]["customMap"]
281-
self.assertEqual(len(custom_map), 1)
282-
self.assertEqual(custom_map[0]["key"], "initialalert.calltaker.organization")
331+
self.assertEqual(len(custom_map), 3)
332+
self.assertEqual(custom_map[0]["key"], "qualification.victims.count")
333+
self.assertEqual(custom_map[1]["key"], "qualification.victims.mainVictim")
334+
self.assertEqual(custom_map[2]["key"], "initialalert.calltaker.organization")
283335

284336
def test_no_additional_information_if_empty_cutom_map_initially(self):
285337
message = TestHelper.create_edxl_json_from_sample(

0 commit comments

Comments
 (0)