Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ class ResourcesInfoCISUConstants:
VEHICLE_TYPE_PATH = "$.vehicleType"

CASE_ID_FIELD = "caseId"
RESOURCE_ID_KEY = "resourceId"
PATIENT_ID_KEY = "patientId"
POSITION_KEY = "position"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class ResourcesStatusConstants:
RESOURCE_STATUS_PATH = "$.resourceStatus"
CASE_ID = "$.caseId"
RESOURCE_ID = "$.resourceId"
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
from converter.cisu.resources_info.resources_info_cisu_converter import (
ResourcesInfoCISUConverter,
)
from converter.cisu.resources_info.resources_info_cisu_constants import (
ResourcesInfoCISUConstants,
)
from converter.cisu.resources_status.resources_status_constants import (
ResourcesStatusConstants,
)
Expand Down Expand Up @@ -37,6 +40,7 @@ def from_rs_to_cisu(
raise ValueError(f"No RS-RI found for caseId: {case_id!r}")

rs_ri = rs_ri_msg.payload
cls.check_resource_belongs_to_case(rs_ri, current_use_case)

rs_sr_use_cases = [
cls.copy_rs_input_use_case_content(pm.payload) for pm in persisted_rs_sr
Expand All @@ -50,3 +54,26 @@ def from_rs_to_cisu(
enriched = enrich_rs_ri_with_rs_srs(rs_ri_use_case, rs_sr_use_cases)

return ResourcesInfoCISUConverter.convert_single_rs_ri(output_json, enriched)

@classmethod
def check_resource_belongs_to_case(
cls, rs_ri: Dict[str, Any], rs_sr_use_case: Dict[str, Any]
) -> None:
case_id = get_field_value(rs_sr_use_case, ResourcesStatusConstants.CASE_ID)
resource_id = get_field_value(
rs_sr_use_case, ResourcesStatusConstants.RESOURCE_ID
)

rs_ri_content = ResourcesInfoCISUConverter.copy_rs_input_use_case_content(rs_ri)
resources = (
get_field_value(rs_ri_content, ResourcesInfoCISUConstants.RESOURCE_PATH)
or []
)
resource_ids_in_rs_ri = {
r.get(ResourcesInfoCISUConstants.RESOURCE_ID_KEY) for r in resources
}

if resource_id not in resource_ids_in_rs_ri:
raise ValueError(
f"Resource '{resource_id}' from RS-SR not found in RS-RI for caseId '{case_id}'"
)
18 changes: 18 additions & 0 deletions converter/tests/cisu/test_resources_status_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,21 @@ def test_from_rs_to_cisu_no_rs_ri():
):
with pytest.raises(ValueError, match="No RS-RI found for caseId"):
ResourcesStatusConverter.from_rs_to_cisu(rs_sr_new)


def test_from_rs_to_cisu_resource_not_in_rs_ri():
unknown_resource_id = "fr.fire.sis076.cgo-076.resource.UNKNOWN_VLM"
rs_sr = make_rs_sr_from_sample(_CASE_ID, unknown_resource_id, "ARRIVEE")
rs_ri = make_rs_ri_from_sample(_CASE_ID)

with (
patch(
_PATCH_GET_RS_MESSAGES,
return_value=persisted_rs_ri_and_rs_sr(rs_ri, []),
),
pytest.raises(
ValueError,
match=f"Resource '{unknown_resource_id}' from RS-SR not found in RS-RI for caseId '{_CASE_ID}'",
),
):
ResourcesStatusConverter.from_rs_to_cisu(rs_sr)
Loading