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
52 changes: 37 additions & 15 deletions fhir/Dependencies.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

[ballerina]
dependencies-toml-version = "2"
distribution-version = "2201.12.3"
distribution-version = "2201.12.11"

[[package]]
org = "ballerina"
Expand Down Expand Up @@ -41,16 +41,33 @@ dependencies = [
[[package]]
org = "ballerina"
name = "crypto"
version = "2.9.0"
version = "2.9.3"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "time"}
]

[[package]]
org = "ballerina"
name = "data.csv"
version = "0.8.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]

[[package]]
org = "ballerina"
name = "data.jsondata"
version = "1.1.0"
version = "1.1.3"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "lang.object"}
]

[[package]]
org = "ballerina"
name = "data.xmldata"
version = "1.5.3"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "lang.object"}
Expand All @@ -73,12 +90,17 @@ modules = [
[[package]]
org = "ballerina"
name = "ftp"
version = "2.13.1"
version = "2.16.0"
dependencies = [
{org = "ballerina", name = "crypto"},
{org = "ballerina", name = "data.csv"},
{org = "ballerina", name = "data.jsondata"},
{org = "ballerina", name = "data.xmldata"},
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "log"},
{org = "ballerina", name = "task"}
{org = "ballerina", name = "task"},
{org = "ballerina", name = "time"}
]
modules = [
{org = "ballerina", packageName = "ftp", moduleName = "ftp"}
Expand All @@ -87,7 +109,7 @@ modules = [
[[package]]
org = "ballerina"
name = "http"
version = "2.14.2"
version = "2.14.9"
dependencies = [
{org = "ballerina", name = "auth"},
{org = "ballerina", name = "cache"},
Expand Down Expand Up @@ -137,7 +159,7 @@ version = "0.0.0"
[[package]]
org = "ballerina"
name = "jwt"
version = "2.15.0"
version = "2.15.1"
dependencies = [
{org = "ballerina", name = "cache"},
{org = "ballerina", name = "crypto"},
Expand Down Expand Up @@ -238,7 +260,7 @@ dependencies = [
[[package]]
org = "ballerina"
name = "log"
version = "2.12.0"
version = "2.14.0"
dependencies = [
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"},
Expand All @@ -252,7 +274,7 @@ modules = [
[[package]]
org = "ballerina"
name = "mime"
version = "2.12.0"
version = "2.12.1"
dependencies = [
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"},
Expand All @@ -263,7 +285,7 @@ dependencies = [
[[package]]
org = "ballerina"
name = "oauth2"
version = "2.14.0"
version = "2.14.1"
dependencies = [
{org = "ballerina", name = "cache"},
{org = "ballerina", name = "crypto"},
Expand All @@ -276,15 +298,15 @@ dependencies = [
[[package]]
org = "ballerina"
name = "observe"
version = "1.5.0"
version = "1.5.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]

[[package]]
org = "ballerina"
name = "os"
version = "1.10.0"
version = "1.10.1"
dependencies = [
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"}
Expand All @@ -293,7 +315,7 @@ dependencies = [
[[package]]
org = "ballerina"
name = "task"
version = "2.10.0"
version = "2.11.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "time"},
Expand All @@ -320,7 +342,7 @@ modules = [
[[package]]
org = "ballerina"
name = "time"
version = "2.7.0"
version = "2.8.0"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand All @@ -331,7 +353,7 @@ modules = [
[[package]]
org = "ballerina"
name = "url"
version = "2.6.0"
version = "2.6.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand Down
24 changes: 13 additions & 11 deletions fhir/utils.bal
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ isolated function getFhirResourceResponse(http:Response response) returns FHIRRe
xml|json responseBody = check extractResponseBody(response);
map<string> responseHeaders = extractHeadersFromResponse(response);
int statusCode = response.statusCode;
if statusCode == STATUS_CODE_OK {
if is2xx(statusCode) {
return {httpStatusCode: statusCode, 'resource: responseBody, serverResponseHeaders: responseHeaders};
} else {
return error(FHIR_SERVER_ERROR, httpStatusCode = statusCode, 'resource = responseBody, serverResponseHeaders = responseHeaders);
Expand Down Expand Up @@ -149,7 +149,7 @@ isolated function getAlteredResourceResponse(http:Response response, PreferenceT
int statusCode = response.statusCode;
map<string> responseHeaders = extractHeadersFromResponse(response);

if statusCode == STATUS_CODE_OK || statusCode == STATUS_CODE_CREATED {
if is2xx(statusCode) {
if preference == MINIMAL {
string header = check response.getHeader(LOCATION);
responseBody = extractResourceIdNVid(header);
Expand All @@ -173,12 +173,10 @@ isolated function getDeleteResourceResponse(http:Response response) returns FHIR
int statusCode = response.statusCode;
xml|json responseBody = "";
map<string> responseHeaders = extractHeadersFromResponse(response);

if statusCode == STATUS_CODE_OK {
responseBody = check extractResponseBody(response);
FHIRResponse fhirResponse = {httpStatusCode: statusCode, 'resource: responseBody, serverResponseHeaders: responseHeaders};
return fhirResponse;
} else if statusCode == STATUS_CODE_NO_CONTENT || statusCode == STATUS_CODE_ACCEPTED {
if is2xx(statusCode) {
if statusCode == STATUS_CODE_OK {
responseBody = check extractResponseBody(response);
}
FHIRResponse fhirResponse = {httpStatusCode: statusCode, 'resource: responseBody, serverResponseHeaders: responseHeaders};
return fhirResponse;
} else {
Expand Down Expand Up @@ -208,8 +206,7 @@ isolated function getBundleResponse(http:Response response) returns FHIRResponse
int statusCode = response.statusCode;
json|xml responseBody = check extractResponseBody(response);
map<string> responseHeaders = extractHeadersFromResponse(response);

if statusCode == STATUS_CODE_OK {
if (is2xx(statusCode)) {
FHIRResponse fhirResponse = {httpStatusCode: statusCode, 'resource: responseBody, serverResponseHeaders: responseHeaders};
return fhirResponse;
} else {
Expand Down Expand Up @@ -551,7 +548,7 @@ isolated function getBulkExportResponse(http:Response response) returns FHIRResp
return error FHIRConnectorError(string `${FHIR_CONNECTOR_ERROR}: ${tempResponseBody.message()}`, errorDetails = tempResponseBody);
}
map<string> responseHeaders = extractHeadersFromResponse(response);
if statusCode == http:STATUS_OK || statusCode == http:STATUS_ACCEPTED {
if is2xx(statusCode) {
return {
httpStatusCode: statusCode,
'resource: responseBody,
Expand Down Expand Up @@ -633,6 +630,11 @@ isolated function sanitizeRequestUrl(string url) returns string {
return url.endsWith(AMPERSAND) || url.endsWith(QUESTION_MARK) ? url.substring(0, url.length() - 1) : url;
}

// Checks whether the HTTP status code is in the 2xx range.
isolated function is2xx(int statusCode) returns boolean {
return statusCode >= 200 && statusCode < 300;
}

// regex in FHIR client
isolated function matchesQueryPattern(string input) returns boolean {
// Regex: key=value[&key=value]*
Expand Down
Loading