Skip to content
This repository has been archived by the owner on Jan 31, 2024. It is now read-only.

Commit

Permalink
chore: release v6.1.4 (#237)
Browse files Browse the repository at this point in the history
  • Loading branch information
ssvegaraju authored Sep 29, 2023
1 parent f0b96a7 commit d57e66b
Show file tree
Hide file tree
Showing 19 changed files with 110 additions and 36 deletions.
5 changes: 4 additions & 1 deletion .viperlightignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,11 @@ fwoa-core/routing/src/router/middlewares/setLogger.test.ts:72
fwoa-core/routing/src/router/middlewares/setLogger.test.ts:132
fwoa-core/routing/src/router/middlewares/setLogger.test.ts:189
fwoa-core/interface/src/inputExampleEncryptSelectedField.json:18
#Email for eol mode
README.md:19

#Email for maintenance mode
README.md:5
README.md:23

# PDF Implementation Guide
FHIR Works on AWS Implementation Guide - 24-MAR-2023 - v6.0.0.pdf
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [6.1.4] - 2023-09-20

### Changelog for Packages in This project

Please click corresponded links for more details for changelog of each package.
| Folder | Package | CHANGELOG |
| ----------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------ |
| [solutions/deployment](./solutions/deployment/) | [@aws/fhir-works-on-aws-deployment] | [Changelog](./solutions/deployment/CHANGELOG.md) |
| [solutions/smart-deployment](./solutions/smart-deployment/) | [@aws/fhir-works-on-aws-smart-deployment] | [Changelog](./solutions/smart-deployment/CHANGELOG.md) |

## [6.1.3] - 2023-08-15

### Changelog for Packages in This project
Expand Down
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# FHIR Works on AWS

## **End of Life Notice**

FHIR Works on AWS is reaching end of life and will no longer be available starting on January 31, 2024 — the End of Life (EOL) date. Customers will be able to use FHIR Works on AWS until the EOL date, at which time the FHIR Works on AWS solution repository will be made read-only and archived for customers.

### Will there be any new feature releases for FHIR Works on AWS?

No. As the service is reaching EOL, we will not release any new features. However, we will continue to make security improvements and manage FHIR Works on AWS as expected until the EOL date. After the EOL date, FHIR Works on AWS will no longer receive any new feature updates, bug fixes or security updates from AWS. After the EOL date, customers who continue to use the software are responsible for the maintenance of the software and its dependencies.

### Where should I migrate to?

AWS HealthLake is a HIPAA-eligible service that provides FHIR APIs that help healthcare and life sciences companies securely store, transform, transact, and analyze health data in minutes to give a chronological view at the patient and population-level. AWS HealthLake natively achieved feature parity with FHIR Works on AWS including SMART on FHIR and Bulk FHIR capabilities. Further, AWS HealthLake can support customer conformance with 21st Century Cures Act for patient access and interoperability requirements through a fully managed FHIR server.

AWS has released a migration tool in the FHIR Works on AWS GitHub repository to enable migration to Amazon HealthLake. The migration tool is a collection of scripts that automates the export of FHIR resources from FHIR Works on AWS and imports them into Amazon HealthLake.

### What support is available?

Customers using FHIR Works on AWS can now move their workloads to AWS HealthLake leveraging the migration tool provided by AWS. Customers will be supported for migration from FHIR Works to an AWS Service such as AWS HealthLake beyond EOL. For you prefer not to migrate to AWS HealthLake or do not have AWS HealthLake support in your region, please contact your AWS account team for alternatives. If you have any questions regarding migration support, please reach out to AWS at fwoa-migration-support@amazon.com.

## Maintenance Notice

FHIR Works on AWS has been moved to maintenance mode. While in maintenance, we will not add any new features to this solution. All security issues should be reported directly to AWS Security at [aws-security@amazon.com](mailto:security@amazon.com). If you are new to this solution, we advise you to explore using [HealthLake](https://aws.amazon.com/healthlake), which is our managed service for building FHIR based transactional and analytics applications. You can get started by contacting your AWS Account team. If you are an existing customer of FHIR Works on AWS, and have additional questions or need immediate help, please reach out to [fwoa-migration-support@amazon.com](mailto:fwoa-migration-support@amazon.com) or contact your AWS Account team.
Expand All @@ -17,6 +35,8 @@ designed to be extensible.

To learn more about FWoA, download the [FWoA Implementation Guide](./FHIR%20Works%20on%20AWS%20Implementation%20Guide%20-%2024-MAR-2023%20-%20v6.0.0.pdf) and see the following README files for individual FWoA packages:

and see the following README files for individual FWoA packages:

- [deployment](./solutions/deployment/README.md)
- [smart-deployment](./solutions/smart-deployment/README.md)
- [authz-rbac](./fwoa-core/authz-rbac/README.md)
Expand Down
2 changes: 0 additions & 2 deletions buildspec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ phases:
pre_build:
commands:
- echo "Installing dependencies and executing unit tests - `pwd`"
- echo Update npm to latest
- npm install -g npm@latest
- cd deployment && chmod +x ./run-unit-tests.sh && ./run-unit-tests.sh
- echo "Installing dependencies and executing unit tests completed `date`"
build:
Expand Down
2 changes: 1 addition & 1 deletion common/autoinstallers/commitizen/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"pnpm": {
"overrides": {
"word-wrap@<1.2.4": ">=1.2.4"
"word-wrap": ">=1.2.4"
}
}
}
8 changes: 4 additions & 4 deletions common/autoinstallers/commitizen/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions common/config/rush/browser-approved-packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,10 @@
"name": "react-dom",
"allowedCategories": ["production"]
},
{
"name": "readline",
"allowedCategories": ["tools"]
},
{
"name": "sanitize-html",
"allowedCategories": ["production"]
Expand Down
9 changes: 9 additions & 0 deletions common/config/rush/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion common/config/rush/repo-state.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush.
{
"pnpmShrinkwrapHash": "797a36e72644222027160dddc6307b621f1aca06",
"pnpmShrinkwrapHash": "1e80f843db705311c2ebbb964cd20e09be460b65",
"preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
}
3 changes: 2 additions & 1 deletion fwoa-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
"dependencies": {
"axios": "0.25.0",
"lodash": "^4.17.21",
"object-hash": "^3.0.0"
"object-hash": "^3.0.0",
"readline": "^1.3.0"
},
"devDependencies": {
"@aws/eslint-config-fwoa-eslint-custom": "workspace:*",
Expand Down
8 changes: 8 additions & 0 deletions fwoa-tools/src/binaryConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ export async function convertBinaryResource(outputFile: ExportOutput): Promise<v
logs.write(`${new Date().toISOString()}: No Binary resources found to convert...\n`);
continue;
}
const additionalFiles: string[] = [];
logs.write(`${new Date().toISOString()}: Retrieved All Binary Keys from migration export output.\n`);
for (const itemKey of itemKeys) {
logs.write(`${new Date().toISOString()}: Retrieving Binary Resource from ${itemKey}...\n`);
Expand Down Expand Up @@ -145,6 +146,9 @@ export async function convertBinaryResource(outputFile: ExportOutput): Promise<v
'./binaryFiles/temp.ndjson',
`./binaryFiles/${key}/Binary-part-${currentFilePartition}.ndjson`
);
additionalFiles.push(
`${itemKey.replace(pathToSyncedFile, `/${key}/Binary-part-${currentFilePartition}.ndjson`)}`
);
results = createWriteStream('./binaryFiles/temp.ndjson');
currentFileSize = 0;
currentFilePartition += 1;
Expand All @@ -159,6 +163,8 @@ export async function convertBinaryResource(outputFile: ExportOutput): Promise<v
// eslint-disable-next-line security/detect-non-literal-fs-filename
renameSync('./binaryFiles/temp.ndjson', `./binaryFiles${pathToSyncedFile}`);
}
// eslint-disable-next-line security/detect-object-injection
outputFile.file_names[key].push(...additionalFiles);
}
const uploadStartTime = performance.now();
execSync(
Expand All @@ -168,6 +174,8 @@ export async function convertBinaryResource(outputFile: ExportOutput): Promise<v
const uploadEndTime = performance.now();
totalUploadTime += uploadEndTime - uploadStartTime;
logs.write(`${new Date().toISOString()}: Updated Binary .ndjson uploaded to Export Bucket!\n`);
// eslint-disable-next-line security/detect-non-literal-fs-filename
writeFileSync(EXPORT_STATE_FILE_NAME, JSON.stringify(outputFile));
}

/* istanbul ignore next */
Expand Down
20 changes: 11 additions & 9 deletions fwoa-tools/src/migrationImport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { existsSync, readFileSync, WriteStream, createWriteStream, writeFileSync } from 'fs';
import * as readline from 'readline';
import { Readable } from 'stream';
import { HealthLake, S3 } from 'aws-sdk';
import { StartFHIRImportJobRequest } from 'aws-sdk/clients/healthlake';
import { ListObjectsV2Output } from 'aws-sdk/clients/s3';
Expand Down Expand Up @@ -277,19 +279,17 @@ export async function deleteFhirResourceFromHealthLakeIfNeeded(
// eslint-disable-next-line security/detect-object-injection
const resourcePath = outputFile.file_names[folderName][j];
logs.write(`${new Date().toISOString()}: Checking resources from ${resourcePath}...\n`);
const resourceFile = await s3Client
const resourceFileStream: Readable = s3Client
.getObject({
Bucket: process.env.EXPORT_BUCKET_NAME!,
Key: resourcePath
})
.promise();
if (resourceFile.$response.error) {
throw new Error(`Failed to read file ${resourceFile.$response.error}`);
}
const allResources: string[] = resourceFile.Body!.toString().trimEnd().split('\n');
for (let i = 0; i < allResources.length; i++) {
// eslint-disable-next-line security/detect-object-injection
const resource = JSON.parse(allResources[i]);
.createReadStream();
const resourceFile: readline.Interface = readline.createInterface({ input: resourceFileStream });

let i = 0;
for await (const line of resourceFile) {
const resource = JSON.parse(line);
// This is a resource marked for deletion
if (resource.meta.tag.some((x: { display: string; code: string }) => x.code === 'DELETED')) {
// DELETE the resource from HealthLake
Expand All @@ -303,6 +303,7 @@ export async function deleteFhirResourceFromHealthLakeIfNeeded(
deleteQueue = [];
}
}
i++;
}
}
if (deleteQueue.length !== 0) {
Expand Down Expand Up @@ -383,6 +384,7 @@ async function runScript(): Promise<void> {
}
}

/* istanbul ignore next */
(async () => {
// don't runScript when importing code for unit tests
if (!process.env.UNIT_TEST) {
Expand Down
29 changes: 18 additions & 11 deletions fwoa-tools/src/migrationVerify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { readFileSync, WriteStream, createWriteStream } from 'fs';
import * as readline from 'readline';
import { Readable } from 'stream';
import { S3 } from 'aws-sdk';
import { aws4Interceptor } from 'aws4-axios';
import axios from 'axios';
Expand Down Expand Up @@ -101,26 +103,30 @@ export async function verifyFolderImport(
// eslint-disable-next-line security/detect-object-injection
const resourcePath = resourcePaths[i];
logs.write(`\n${new Date().toISOString()}: Verifying Import from ${resourcePath}...`);
const resourceFile = await s3Client
.getObject({
Bucket: process.env.EXPORT_BUCKET_NAME!,
Key: resourcePath
})
.promise();
if (resourceFile.$response.error) {
let resourceFileStream: Readable;
try {
resourceFileStream = s3Client
.getObject({
Bucket: process.env.EXPORT_BUCKET_NAME!,
Key: resourcePath
})
.createReadStream();
} catch (e) {
if (!continueOnError) {
throw new Error(`Failed to read file ${resourceFile.$response.error}`);
throw new Error(`Failed to read file ${e}\n`);
} else {
completedWithErrors = true;
continue;
}
}
const resourceFile: readline.Interface = readline.createInterface({ input: resourceFileStream! });

let j = 0;
// Each resource file can contain a number of resource objects
const allResources: string[] = resourceFile.Body!.toString().trimEnd().split('\n');
for (let j = 0; j < allResources.length; j += 1) {
/* istanbul ignore next */
for await (const line of resourceFile) {
// eslint-disable-next-line security/detect-object-injection
const resource = JSON.parse(allResources[j]);
const resource = JSON.parse(line);
// Skip any resources marked for deletion, we don't need to verify these.
if (resource.meta.tag.some((x: { display: string; code: string }) => x.code === 'DELETED')) {
continue;
Expand Down Expand Up @@ -177,6 +183,7 @@ export async function verifyFolderImport(
);
}
}
j++;
}
}
logs.write(`\n${new Date().toISOString()}: Successfully completed verifying Import Jobs!`);
Expand Down
8 changes: 7 additions & 1 deletion solutions/deployment/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [6.1.4] (2023-09-20)

### Fixes

- fix reading of large files through stream

## [6.1.3] (2023-08-15)

### Fixes

- fix retry logic for bundle requests in import script
- fix retry logic for bundle requests

## [6.1.2] (2023-08-03)

Expand Down
2 changes: 1 addition & 1 deletion solutions/deployment/lib/cdk-infra-stack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ export default class FhirWorksStack extends Stack {
}.amazoncognito.com/oauth2`,
EXPORT_RESULTS_BUCKET: bulkExportResources.bulkExportResultsBucket.bucketName,
EXPORT_RESULTS_SIGNER_ROLE_ARN: bulkExportResources.exportResultsSignerRole.roleArn,
CUSTOM_USER_AGENT: 'AwsSolution/SO0128/GH-v6.1.3',
CUSTOM_USER_AGENT: 'AwsSolution/SO0128/GH-v6.1.4',
ENABLE_MULTI_TENANCY: `${props!.enableMultiTenancy}`,
ENABLE_SUBSCRIPTIONS: `${props!.enableSubscriptions}`,
LOG_LEVEL: props!.logLevel,
Expand Down
2 changes: 1 addition & 1 deletion solutions/deployment/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@aws/fhir-works-on-aws-deployment",
"version": "6.1.3",
"version": "6.1.4",
"description": "FHIR Works on AWS deployment",
"homepage": "https://github.com/aws-solutions/fhir-works-on-aws",
"repository": {
Expand Down
8 changes: 7 additions & 1 deletion solutions/smart-deployment/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [6.1.4] (2023-09-20)

### Fixes

- fix reading of large files through stream

## [6.1.3] (2023-08-15)

### Fixes

- fix retry logic for bundle requests in import script
- fix retry logic for bundle requests

## [6.1.2] (2023-08-03)

Expand Down
2 changes: 1 addition & 1 deletion solutions/smart-deployment/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@aws/fhir-works-on-aws-smart-deployment",
"version": "6.1.3-smart",
"version": "6.1.4-smart",
"description": "FHIR Works on AWS deployment with SMART",
"homepage": "https://github.com/aws-solutions/fhir-works-on-aws",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion solutions/smart-deployment/src/lib/cdk-infra-stack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ export default class FhirWorksStack extends Stack {
PATIENT_PICKER_ENDPOINT: props!.patientPickerEndpoint,
EXPORT_RESULTS_BUCKET: bulkExportResources.bulkExportResultsBucket.bucketName,
EXPORT_RESULTS_SIGNER_ROLE_ARN: bulkExportResources.exportResultsSignerRole.roleArn,
CUSTOM_USER_AGENT: 'AwsSolution/SO0128/GH-v6.1.3-smart',
CUSTOM_USER_AGENT: 'AwsSolution/SO0128/GH-v6.1.4-smart',
ENABLE_MULTI_TENANCY: `${props!.enableMultiTenancy}`,
ENABLE_SUBSCRIPTIONS: `${props!.enableSubscriptions}`,
LOG_LEVEL: props!.logLevel,
Expand Down

0 comments on commit d57e66b

Please sign in to comment.