Skip to content

Commit 726d0f9

Browse files
committed
fix(converter): translate rc ref messages in cisu conversion
1 parent 90e9299 commit 726d0f9

File tree

6 files changed

+171
-0
lines changed

6 files changed

+171
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from typing import Dict, Any
2+
3+
from converter.cisu.base_cisu_converter import BaseCISUConverter
4+
5+
6+
class IdenticalCISUConverter(BaseCISUConverter):
7+
@classmethod
8+
def from_rs_to_cisu(cls, edxl_json) -> Dict[str, Any]:
9+
return edxl_json
10+
11+
@classmethod
12+
def from_cisu_to_rs(cls, edxl_json: Dict[str, Any]) -> Dict[str, Any]:
13+
return edxl_json
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from converter.cisu.identical_cisu_converter import IdenticalCISUConverter
2+
3+
4+
class ReferenceConverter(IdenticalCISUConverter):
5+
REFERENCE_MESSAGE_TYPE = "reference"
6+
7+
@classmethod
8+
def get_rs_message_type(cls) -> str:
9+
return cls.REFERENCE_MESSAGE_TYPE
10+
11+
@classmethod
12+
def get_cisu_message_type(cls) -> str:
13+
return cls.REFERENCE_MESSAGE_TYPE

converter/converter/conversion_strategy/cisu_conversion_strategy.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from converter.cisu.create_case.create_case_cisu_converter import (
44
CreateCaseCISUConverter,
55
)
6+
from converter.cisu.reference.reference_converter import ReferenceConverter
67
from converter.cisu.resources_info.resources_info_cisu_converter import (
78
ResourcesInfoCISUConverter,
89
)
@@ -80,6 +81,8 @@ def select_conversion_strategy(message_content):
8081
return CreateCaseCISUConverter
8182
elif "resourcesInfo" in message_content or "resourcesInfoCisu" in message_content:
8283
return ResourcesInfoCISUConverter
84+
elif "reference" in message_content:
85+
return ReferenceConverter
8386
else:
8487
deducted_message_type = extract_message_type_from_message_content(
8588
message_content
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# -*- coding: utf-8 -*-
2+
# snapshottest: v1 - https://goo.gl/zC4yUc
3+
from __future__ import unicode_literals
4+
5+
from snapshottest import Snapshot
6+
7+
8+
snapshots = Snapshot()
9+
10+
snapshots[
11+
"TestSnapshotReferenceConverter::test_exhaustive_snapshot_cisu_to_rs 1"
12+
] = """{
13+
"distributionID": "fr.health.samuA_2608323d-507d-4cbf-bf74-52007f8124ea",
14+
"senderID": "fr.health.samuA",
15+
"dateTimeSent": "2022-09-27T08:23:34+02:00",
16+
"dateTimeExpires": "2072-09-27T08:23:34+02:00",
17+
"distributionStatus": "Actual",
18+
"distributionKind": "Report",
19+
"descriptor": {
20+
"language": "fr-FR",
21+
"explicitAddress": {
22+
"explicitAddressScheme": "hubex",
23+
"explicitAddressValue": "fr.health.samuB"
24+
}
25+
},
26+
"content": [
27+
{
28+
"jsonContent": {
29+
"embeddedJsonContent": {
30+
"message": {
31+
"messageId": "2608323d-507d-4cbf-bf74-52007f8124ea",
32+
"sender": {
33+
"name": "samuA",
34+
"URI": "hubsante:fr.health.samuA"
35+
},
36+
"sentAt": "2022-09-27T08:23:34+02:00",
37+
"status": "Actual",
38+
"kind": "Report",
39+
"recipient": [
40+
{
41+
"name": "samuB",
42+
"URI": "hubsante:fr.health.samuB"
43+
}
44+
],
45+
"reference": {
46+
"distributionID": "fr.health.samuB_2607723d-507d-4cbf-bf74-12345f7064cd",
47+
"refused": false,
48+
"errorDistributionID": "2607723d-507d-4cbf-bf74-12345f7064cd",
49+
"step": "ERREUR"
50+
}
51+
}
52+
}
53+
}
54+
}
55+
]
56+
}"""
57+
58+
snapshots[
59+
"TestSnapshotReferenceConverter::test_exhaustive_snapshot_rs_to_cisu 1"
60+
] = """{
61+
"distributionID": "fr.health.samuA_2608323d-507d-4cbf-bf74-52007f8124ea",
62+
"senderID": "fr.health.samuA",
63+
"dateTimeSent": "2022-09-27T08:23:34+02:00",
64+
"dateTimeExpires": "2072-09-27T08:23:34+02:00",
65+
"distributionStatus": "Actual",
66+
"distributionKind": "Report",
67+
"descriptor": {
68+
"language": "fr-FR",
69+
"explicitAddress": {
70+
"explicitAddressScheme": "hubex",
71+
"explicitAddressValue": "fr.health.samuB"
72+
}
73+
},
74+
"content": [
75+
{
76+
"jsonContent": {
77+
"embeddedJsonContent": {
78+
"message": {
79+
"messageId": "2608323d-507d-4cbf-bf74-52007f8124ea",
80+
"sender": {
81+
"name": "samuA",
82+
"URI": "hubsante:fr.health.samuA"
83+
},
84+
"sentAt": "2022-09-27T08:23:34+02:00",
85+
"status": "Actual",
86+
"kind": "Report",
87+
"recipient": [
88+
{
89+
"name": "samuB",
90+
"URI": "hubsante:fr.health.samuB"
91+
}
92+
],
93+
"reference": {
94+
"distributionID": "fr.health.samuB_2607723d-507d-4cbf-bf74-12345f7064cd",
95+
"refused": false,
96+
"errorDistributionID": "2607723d-507d-4cbf-bf74-12345f7064cd",
97+
"step": "ERREUR"
98+
}
99+
}
100+
}
101+
}
102+
}
103+
]
104+
}"""
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from converter.cisu.identical_cisu_converter import IdenticalCISUConverter
2+
3+
mock_message = {"message": {"content": "This is a mock CISU message.", "status": "200"}}
4+
5+
6+
def test_from_rs_to_cisu():
7+
initial_message = mock_message.copy()
8+
converted_message = IdenticalCISUConverter.from_rs_to_cisu(initial_message)
9+
assert converted_message == mock_message
10+
11+
12+
def test_from_cisu_to_rs():
13+
initial_message = mock_message.copy()
14+
converted_message = IdenticalCISUConverter.from_cisu_to_rs(initial_message)
15+
assert converted_message == mock_message
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import json
2+
from snapshottest import TestCase
3+
from converter.cisu.reference.reference_converter import ReferenceConverter
4+
from tests.constants import TestConstants
5+
from tests.test_helpers import TestHelper
6+
7+
8+
class TestSnapshotReferenceConverter(TestCase):
9+
def test_exhaustive_snapshot_rs_to_cisu(self):
10+
message = TestHelper.create_edxl_json_from_sample(
11+
TestConstants.EDXL_HEALTH_TO_HEALTH_ENVELOPE_PATH,
12+
"tests/fixtures/RC-REF/RC-REF_V3.0_exhaustive_fill.json",
13+
)
14+
output_data = ReferenceConverter.from_rs_to_cisu(message)
15+
self.assertMatchSnapshot(json.dumps(output_data, indent=2))
16+
17+
def test_exhaustive_snapshot_cisu_to_rs(self):
18+
message = TestHelper.create_edxl_json_from_sample(
19+
TestConstants.EDXL_HEALTH_TO_HEALTH_ENVELOPE_PATH,
20+
"tests/fixtures/RC-REF/RC-REF_V3.0_exhaustive_fill.json",
21+
)
22+
output_data = ReferenceConverter.from_cisu_to_rs(message)
23+
self.assertMatchSnapshot(json.dumps(output_data, indent=2))

0 commit comments

Comments
 (0)