Skip to content

Commit 6abcd3e

Browse files
committed
Change the search all logic so the response in not nested in an object
When the request comes in via the openhim, the mapping mediator responds in an openhim response format (this is needed for all the details of the transaction to be displayed on the openhim). The logic we had before was returning the response nested in an object with the orchestrations instead of only the response body. This has been changed
1 parent b25ca6f commit 6abcd3e

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

client-registry-jempi/importer/mapping-mediator/searchAll.json

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,53 @@
88
"output": "JSON"
99
},
1010
"inputTransforms": {
11-
"operands": "($transform := function($v) {[query.family ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'familyName', 'value': query.family}},query.given ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'givenName', 'value': query.given}},query.gender ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'gender', 'value': query.gender}},query.birthDate ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'dob', 'value': query.birthDate}},query.address ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'city', 'value': query.address}},query.telecom ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'phoneNumber', 'value': query.telecom}},query.identifier ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'nationalId', 'value': query.identifier}}]};$transform(query))"
11+
"total": "$count(lookupRequests.jempiSearchAll.data.goldenRecords)",
12+
"entry": "$map(lookupRequests.jempiSearchAll.data.goldenRecords, function($v) {{'fullUrl': 'Patient/' & $v.goldenId, 'resource': {'resourceType': 'Patient','id': $v.goldenId,'name': {'given': [$v.demographicData.givenName],'family': $v.demographicData.familyName},'address': [{'city': $v.demographicData.city}],'birthDate': $v.demographicData.dob,'telecom': [{'value': $v.demographicData.phoneNumber,'system': 'phone'}],'identifier': [{'system': $v.sourceId.facility,'value': $v.sourceId.patient},{'system': 'NationalID','value': $v.demographicData.nationalId}],'gender': $v.demographicData.gender}}})"
1213
},
1314
"inputMapping": {
14-
"transforms.operands": "operands",
15-
"transforms.operands[0].operand": "operand"
15+
"constants.resourceType": "resourceType",
16+
"constants.type": "type",
17+
"transforms.total": "total",
18+
"transforms.entry": "entry"
19+
},
20+
"constants": {
21+
"resourceType": "Bundle",
22+
"type": "searchset"
1623
},
1724
"requests": {
18-
"response": [
25+
"lookup": [
1926
{
2027
"id": "jempiSearchAll",
2128
"config": {
22-
"method": "post",
29+
"method": "get",
2330
"headers": {
2431
"contentType": "application/json"
2532
},
33+
"params": {
34+
"query": {
35+
"family": {
36+
"path": "query.family"
37+
},
38+
"given": {
39+
"path": "query.given"
40+
},
41+
"telecom": {
42+
"path": "query.telecom"
43+
},
44+
"identifier": {
45+
"path": "query.identifier"
46+
},
47+
"gender": {
48+
"path": "query.gender"
49+
},
50+
"birthDate": {
51+
"path": "query.birthDate"
52+
},
53+
"address": {
54+
"path": "query.address"
55+
}
56+
}
57+
},
2658
"url": "http://openhim-mapping-mediator:3003/search-response"
2759
}
2860
}

client-registry-jempi/importer/mapping-mediator/searchAllResponse.json

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,20 @@
22
"name": "Search Endpoint deterministic response",
33
"endpoint": {
44
"pattern": "/search-response",
5-
"method": "POST"
5+
"method": "GET"
66
},
77
"transformation": {
8-
"input": "JSON",
98
"output": "JSON"
109
},
11-
"constants": {
12-
"resourceType": "Bundle",
13-
"type": "searchset"
14-
},
1510
"inputTransforms": {
16-
"total": "$count(lookupRequests.jempiSearchAllResponse.data.goldenRecords)",
17-
"entry": "$map(lookupRequests.jempiSearchAllResponse.data.goldenRecords, function($v) {{'fullUrl': 'Patient/' & $v.goldenId, 'resource': {'resourceType': 'Patient','id': $v.goldenId,'name': {'given': [$v.demographicData.givenName],'family': $v.demographicData.familyName},'address': [{'city': $v.demographicData.city}],'birthDate': $v.demographicData.dob,'telecom': [{'value': $v.demographicData.phoneNumber,'system': 'phone'}],'identifier': [{'system': $v.sourceId.facility,'value': $v.sourceId.patient},{'system': 'NationalID','value': $v.demographicData.nationalId}],'gender': $v.demographicData.gender}}})"
11+
"operands": "($transform := function($v) {[query.family ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'familyName', 'value': query.family}},query.given ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'givenName', 'value': query.given}},query.gender ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'gender', 'value': query.gender}},query.birthDate ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'dob', 'value': query.birthDate}},query.address ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'city', 'value': query.address}},query.telecom ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'phoneNumber', 'value': query.telecom}},query.identifier ? {'operator': 'and', 'operand': {'fn': 'eq', 'name': 'nationalId', 'value': query.identifier}}]};$transform(query))"
1812
},
1913
"inputMapping": {
20-
"constants.resourceType": "resourceType",
21-
"constants.type": "type",
22-
"transforms.total": "total",
23-
"transforms.entry": "entry"
14+
"transforms.operands": "operands",
15+
"transforms.operands[0].operand": "operand"
2416
},
2517
"requests": {
26-
"lookup": [
18+
"response": [
2719
{
2820
"id": "jempiSearchAllResponse",
2921
"forwardExistingRequestBody": true,

0 commit comments

Comments
 (0)