diff --git a/docs/package-lock.json b/docs/package-lock.json index c6a6238fe..0f8daa65b 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -15,6 +15,7 @@ "@vuepress/plugin-markdown-tab": "2.0.0-rc.104", "@vuepress/plugin-slimsearch": "2.0.0-rc.104", "katex": "^0.16.22", + "sass-embedded": "^1.89.2", "sass-loader": "16.0.5", "vue": "3.5.14", "vuepress": "2.0.0-rc.23", @@ -70,6 +71,13 @@ "node": ">=6.9.0" } }, + "node_modules/@bufbuild/protobuf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.6.2.tgz", + "integrity": "sha512-vLu7SRY84CV/Dd+NUdgtidn2hS5hSMUC1vDBY0VcviTdgRYkU43vIz3vIFbmx14cX1r+mM7WjzE5Fl1fGEM0RQ==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.4", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", @@ -1111,293 +1119,6 @@ "node": ">= 8" } }, - "node_modules/@parcel/watcher": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", - "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", - "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@pkgr/core": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", @@ -2985,6 +2706,13 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true, + "license": "MIT/X11" + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -3228,6 +2956,13 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -3350,20 +3085,6 @@ "node": ">=6" } }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -3753,6 +3474,16 @@ "node": ">=6.0" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", @@ -3935,12 +3666,11 @@ } }, "node_modules/immutable": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", - "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "dev": true, - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -4426,14 +4156,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -4982,32 +4704,333 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sass": { - "version": "1.89.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.0.tgz", - "integrity": "sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==", + "node_modules/sass-embedded": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.2.tgz", + "integrity": "sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "chokidar": "^4.0.0", + "@bufbuild/protobuf": "^2.5.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" }, "bin": { - "sass": "sass.js" + "sass": "dist/bin/sass.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "optionalDependencies": { - "@parcel/watcher": "^2.4.1" + "sass-embedded-android-arm": "1.89.2", + "sass-embedded-android-arm64": "1.89.2", + "sass-embedded-android-riscv64": "1.89.2", + "sass-embedded-android-x64": "1.89.2", + "sass-embedded-darwin-arm64": "1.89.2", + "sass-embedded-darwin-x64": "1.89.2", + "sass-embedded-linux-arm": "1.89.2", + "sass-embedded-linux-arm64": "1.89.2", + "sass-embedded-linux-musl-arm": "1.89.2", + "sass-embedded-linux-musl-arm64": "1.89.2", + "sass-embedded-linux-musl-riscv64": "1.89.2", + "sass-embedded-linux-musl-x64": "1.89.2", + "sass-embedded-linux-riscv64": "1.89.2", + "sass-embedded-linux-x64": "1.89.2", + "sass-embedded-win32-arm64": "1.89.2", + "sass-embedded-win32-x64": "1.89.2" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.2.tgz", + "integrity": "sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.2.tgz", + "integrity": "sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.2.tgz", + "integrity": "sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.2.tgz", + "integrity": "sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.2.tgz", + "integrity": "sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.2.tgz", + "integrity": "sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.2.tgz", + "integrity": "sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.2.tgz", + "integrity": "sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.2.tgz", + "integrity": "sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.2.tgz", + "integrity": "sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.2.tgz", + "integrity": "sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.2.tgz", + "integrity": "sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.2.tgz", + "integrity": "sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.2.tgz", + "integrity": "sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.2.tgz", + "integrity": "sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.2.tgz", + "integrity": "sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" } }, "node_modules/sass-loader": { @@ -5050,38 +5073,6 @@ } } }, - "node_modules/sass/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/sass/node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -5294,6 +5285,45 @@ "node": ">=16" } }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/synckit": { "version": "0.11.6", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.6.tgz", @@ -5383,6 +5413,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -5390,10 +5427,11 @@ "dev": true }, "node_modules/undici": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", - "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.17" } @@ -5552,6 +5590,13 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, + "license": "MIT" + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", diff --git a/docs/package.json b/docs/package.json index 739155972..28198b19a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -17,6 +17,7 @@ "@vuepress/plugin-markdown-tab": "2.0.0-rc.104", "@vuepress/plugin-slimsearch": "2.0.0-rc.104", "katex": "^0.16.22", + "sass-embedded": "^1.89.2", "sass-loader": "16.0.5", "vue": "3.5.14", "vuepress": "2.0.0-rc.23", diff --git a/docs/src/.vuepress/client.ts b/docs/src/.vuepress/client.ts index cd4b777c2..f4c038cf4 100644 --- a/docs/src/.vuepress/client.ts +++ b/docs/src/.vuepress/client.ts @@ -3,11 +3,19 @@ import { Layout as ParentLayout } from "vuepress-theme-hope/client"; import Layout from './layouts/PageLayout.vue' import NotFoundLayout from './layouts/NotFoundLayout.vue' +import BlogLayout from './layouts/BlogLayout.vue'; +import NewsList from "./components/NewsList.vue"; // adjust if path differs + export default defineClientConfig({ + enhance({ app }) { + app.component("NewsList", NewsList); + }, layouts: { ParentLayout, Layout, - NotFound: NotFoundLayout + NotFound: NotFoundLayout, + Blog: BlogLayout, + }, }) \ No newline at end of file diff --git a/docs/src/.vuepress/components/NewsList.vue b/docs/src/.vuepress/components/NewsList.vue new file mode 100644 index 000000000..09ce2977c --- /dev/null +++ b/docs/src/.vuepress/components/NewsList.vue @@ -0,0 +1,8 @@ + + + diff --git a/docs/src/.vuepress/config.ts b/docs/src/.vuepress/config.ts index b8f6542bb..b41eb68ce 100644 --- a/docs/src/.vuepress/config.ts +++ b/docs/src/.vuepress/config.ts @@ -27,7 +27,9 @@ export default defineUserConfig({ description: "", }, },*/ - plugins: [ ], + plugins: [ + + ], // Enable it with pwa shouldPrefetch: false, diff --git a/docs/src/.vuepress/layouts/BlogLayout.vue b/docs/src/.vuepress/layouts/BlogLayout.vue new file mode 100644 index 000000000..15bb449bd --- /dev/null +++ b/docs/src/.vuepress/layouts/BlogLayout.vue @@ -0,0 +1,21 @@ + + + \ No newline at end of file diff --git a/docs/src/.vuepress/layouts/NotFoundLayout.vue b/docs/src/.vuepress/layouts/NotFoundLayout.vue index b3ae22965..22becfb1d 100644 --- a/docs/src/.vuepress/layouts/NotFoundLayout.vue +++ b/docs/src/.vuepress/layouts/NotFoundLayout.vue @@ -29,12 +29,21 @@ redirectToParentDirectoryIfInOperations(); });*/ + +function goBack() { + router.go(-1); +} + +function goHome() { + router.push('/'); +} + diff --git a/docs/src/.vuepress/public/assets/presentations/250603_maximiliankurscheidt_ips_challenge.pdf b/docs/src/.vuepress/public/assets/presentations/250603_maximiliankurscheidt_ips_challenge.pdf new file mode 100644 index 000000000..df04839e9 Binary files /dev/null and b/docs/src/.vuepress/public/assets/presentations/250603_maximiliankurscheidt_ips_challenge.pdf differ diff --git a/docs/src/.vuepress/public/assets/presentations/250606_HaukeHund_DataSharingFramework_fsh.pdf b/docs/src/.vuepress/public/assets/presentations/250606_HaukeHund_DataSharingFramework_fsh.pdf new file mode 100644 index 000000000..1613a5cf8 Binary files /dev/null and b/docs/src/.vuepress/public/assets/presentations/250606_HaukeHund_DataSharingFramework_fsh.pdf differ diff --git a/docs/src/.vuepress/public/photos/info/use-cases/ping-pong2.png b/docs/src/.vuepress/public/photos/info/use-cases/ping-pong2.png new file mode 100644 index 000000000..6d8124b86 Binary files /dev/null and b/docs/src/.vuepress/public/photos/info/use-cases/ping-pong2.png differ diff --git a/docs/src/.vuepress/public/photos/info/use-cases/ping-pongv2.png b/docs/src/.vuepress/public/photos/info/use-cases/ping-pongv2.png new file mode 100644 index 000000000..0bb2252b7 Binary files /dev/null and b/docs/src/.vuepress/public/photos/info/use-cases/ping-pongv2.png differ diff --git a/docs/src/.vuepress/public/photos/news/fhir-community.jpeg b/docs/src/.vuepress/public/photos/news/fhir-community.jpeg new file mode 100644 index 000000000..33f34c895 Binary files /dev/null and b/docs/src/.vuepress/public/photos/news/fhir-community.jpeg differ diff --git a/docs/src/.vuepress/public/photos/news/milad-fakurian-unsplash.jpg b/docs/src/.vuepress/public/photos/news/milad-fakurian-unsplash.jpg new file mode 100644 index 000000000..81de467c0 Binary files /dev/null and b/docs/src/.vuepress/public/photos/news/milad-fakurian-unsplash.jpg differ diff --git a/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh b/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh new file mode 100644 index 000000000..d5fd6fe52 --- /dev/null +++ b/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# To run: chmod +x fetch-versioned-release-notes.sh && ./fetch-versioned-release-notes.sh +# Dokumentation https://wiki.gecko.hs-heilbronn.de/doc/dokumentation-release-notes-script-45Ex3hoxjB + +# GitHub repository details +REPO_OWNER="datasharingframework" +REPO_NAME="dsf" + +# Output base directory (this will hold the versioned folders) +OUTPUT_BASE_DIR="../../operations" + +# Define the range of versions +VERSIONS=("v1.0.0" "v1.1.0" "v1.2.0" "v1.3.0" "v1.3.1" "v1.3.2" "v1.4.0" "v1.5.0" "v1.5.1" "v1.5.2" "v1.6.0" "v1.7.0" "v1.7.1" "v1.8.0") + +# Fetch all release details +echo "Fetching all releases..." +RELEASES=$(curl -s https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases) + +# Loop through each version in the version list +for VERSION in "${VERSIONS[@]}"; do + VERSION_FOUND=$(echo "$RELEASES" | jq -r ".[] | select(.tag_name == \"$VERSION\")") + + if [ ! -z "$VERSION_FOUND" ]; then + VERSION_DIR="$OUTPUT_BASE_DIR/$VERSION" + + if [ ! -d "$VERSION_DIR" ]; then + echo "Directory $VERSION_DIR does not exist. Skipping $VERSION." + continue + fi + + OUTPUT_FILE="$VERSION_DIR/release-notes.md" + + +# Write frontmatter at the top of the Markdown file +cat < "$OUTPUT_FILE" +--- +title: Release Notes ($VERSION) +icon: note +--- + +## [Release Notes for $VERSION](https://github.com/$REPO_OWNER/$REPO_NAME/releases/tag/$VERSION) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +EOF + + echo "$RELEASES" | jq -r ".[] | select(.tag_name == \"$VERSION\") | @base64" | while read -r RELEASE; do + RELEASE_JSON=$(echo "$RELEASE" | base64 --decode) + RELEASE_BODY=$(echo "$RELEASE_JSON" | jq -r '.body') + RELEASE_NAME=$(echo "$RELEASE_JSON" | jq -r '.name') + + # Convert #issue_number to GitHub issue link + RELEASE_BODY=$(echo "$RELEASE_BODY" | sed -E 's/#([0-9]+)/[#\1](https:\/\/github.com\/datasharingframework\/dsf\/issues\/\1)/g') + + # Convert @username to GitHub user link + RELEASE_BODY=$(echo "$RELEASE_BODY" | sed -E 's/@([a-zA-Z0-9_-]+)/[@\1](https:\/\/github.com\/\1)/g') + + + echo "### $RELEASE_NAME" >> "$OUTPUT_FILE" + echo "$RELEASE_BODY" >> "$OUTPUT_FILE" + echo "" >> "$OUTPUT_FILE" + done + + echo "Release notes for version $VERSION saved to $OUTPUT_FILE" + else + echo "No release found for version $VERSION" + fi +done + +echo "Process completed." diff --git a/docs/src/.vuepress/sidebar/operations-v1.ts b/docs/src/.vuepress/sidebar/operations-v1.ts index 95778edf3..87d7936ce 100644 --- a/docs/src/.vuepress/sidebar/operations-v1.ts +++ b/docs/src/.vuepress/sidebar/operations-v1.ts @@ -6,17 +6,17 @@ export function generate_v1_latest_sidebar() { icon: "tool", link: "./", }, - "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", "root-certificates", "passwords-secrets", { - text: "FHIR Reverse Proxy", - icon: "module", - prefix: "fhir-reverse-proxy/", - link: "fhir-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] - }, { + "release-notes", "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", "root-certificates", "passwords-secrets", { + text: "FHIR Reverse Proxy", + icon: "module", + children: [ + { + icon: "config", + text: "Configuration", + link: "fhir-reverse-proxy/configuration", + } + ]}, + { text: "FHIR Server", icon: "module", prefix: "fhir/", @@ -37,13 +37,13 @@ export function generate_v1_latest_sidebar() { }, { text: "BPE Reverse Proxy", icon: "module", - prefix: "bpe-reverse-proxy/", - link: "bpe-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] + children: [ + { + icon: "config", + text: "Configuration", + link: "bpe-reverse-proxy/configuration", + } + ] }, { text: "BPE Server", icon: "module", @@ -80,17 +80,17 @@ export function generate_v1_gt_eq_1_7_0_sidebar() { link: "./" }, - "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", "root-certificates", "passwords-secrets", { - text: "FHIR Reverse Proxy", - icon: "module", - prefix: "fhir-reverse-proxy/", - link: "fhir-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] - }, { + "release-notes", "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", "root-certificates", "passwords-secrets", { + text: "FHIR Reverse Proxy", + icon: "module", + children: [ + { + icon: "config", + text: "Configuration", + link: "fhir-reverse-proxy/configuration", + } + ]}, + { text: "FHIR Server", icon: "module", prefix: "fhir/", @@ -111,13 +111,13 @@ export function generate_v1_gt_eq_1_7_0_sidebar() { }, { text: "BPE Reverse Proxy", icon: "module", - prefix: "bpe-reverse-proxy/", - link: "bpe-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] + children: [ + { + icon: "config", + text: "Configuration", + link: "bpe-reverse-proxy/configuration", + } + ] }, { text: "BPE Server", icon: "module", @@ -151,17 +151,16 @@ export function generate_v1_gt_eq_1_5_0_sidebar() { text: "Get Started", icon: "tool", link: "./", - }, "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", { - text: "FHIR Reverse Proxy", - icon: "module", - prefix: "fhir-reverse-proxy/", - link: "fhir-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] - }, { + }, "release-notes", "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", { + text: "FHIR Reverse Proxy", + icon: "module", + children: [ + { + icon: "config", + text: "Configuration", + link: "fhir-reverse-proxy/configuration", + } + ]}, { text: "FHIR Server", icon: "module", prefix: "fhir/", @@ -182,13 +181,13 @@ export function generate_v1_gt_eq_1_5_0_sidebar() { }, { text: "BPE Reverse Proxy", icon: "module", - prefix: "bpe-reverse-proxy/", - link: "bpe-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] + children: [ + { + icon: "config", + text: "Configuration", + link: "bpe-reverse-proxy/configuration", + } + ] }, { text: "BPE Server", icon: "module", @@ -214,35 +213,35 @@ export function generate_v1_gt_eq_1_5_0_sidebar() { link: "install-plugins" }, ] + } - export function generate_v1_gt_eq_1_0_0_sidebar() { return [ - { text: "Get Started", icon: "tool", link: "./", - }, "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", { - text: "FHIR Reverse Proxy", - icon: "module", - prefix: "fhir-reverse-proxy/", - link: "fhir-reverse-proxy/", - children: [{ - icon: "config", - text: "Configuration", - link: "configuration" - }] - }, { + }, "release-notes", "install", "upgrade-from-1", "upgrade-from-0", "allowList-mgm", { + text: "FHIR Reverse Proxy", + icon: "module", + children: [ + { + icon: "config", + text: "Configuration", + link: "fhir-reverse-proxy/configuration", + } + ]}, + { text: "FHIR Server", icon: "module", prefix: "fhir/", link: "fhir/", children: [{ - icon: "config", - text: "Configuration", - link: "configuration" + icon: "config", + text: "Configuration", + link: "configuration" + }, { icon: "config", text: "Access Control", diff --git a/docs/src/.vuepress/styles/index.scss b/docs/src/.vuepress/styles/index.scss index 5e818b22b..590efcce0 100644 --- a/docs/src/.vuepress/styles/index.scss +++ b/docs/src/.vuepress/styles/index.scss @@ -30,8 +30,10 @@ h1, h2, h3, h4, h5 { background: #63C7A6 !important; } + .vp-category-count{ color: black !important; + background: white !important; } .page-category-item { color: black !important; @@ -44,4 +46,10 @@ h1, h2, h3, h4, h5 { .vp-sidebar { font-size: 85%; +} + +.vp-blog-hero-title { + font-size: xx-large; + font-weight: bolder; + color: #3F8999; } \ No newline at end of file diff --git a/docs/src/.vuepress/theme.ts b/docs/src/.vuepress/theme.ts index 30414205e..ee2679598 100644 --- a/docs/src/.vuepress/theme.ts +++ b/docs/src/.vuepress/theme.ts @@ -7,6 +7,7 @@ export default hopeTheme({ name: "DSF-Team", url: "/community/team.html", }, + logo: "/photos/home/logo-small.svg", @@ -25,7 +26,7 @@ export default hopeTheme({ icon: "info", link: "/explore/", prefix: "/explore/", - children: ["concepts/introduction", "use-cases/", "publications", "/security/"], + children: ["concepts/introduction", "use-cases/", "publications", "/security/", "/news/"], }, { text: "Operations", @@ -75,7 +76,7 @@ export default hopeTheme({ { text: "News", icon: "news", - link: "tag/news/" + link: "news/" }, { text: "Concepts", @@ -103,13 +104,14 @@ export default hopeTheme({ { text: "Awards", icon: "creative", - link: "explore/awards", + link: "tag/awards/", }, ], "/hackathon": [], "/spring-school": [], "/news": [], + "/operations/old-versions": [], "/operations/latest/": generate_v1_latest_sidebar(), "/operations/next/": [], "/operations/v2.0.0-M3/": [], @@ -133,14 +135,172 @@ export default hopeTheme({ icon: "", prefix: "api-v1/", link: "api-v1/", - children: [ "get-started","concept","create", "publishing/publish-on-dsfhub", "tooling/", "tutorials/", "javadoc"], + children: [ "get-started", { + text: "Concepts", + icon: "info", + link: "concept", + collapsible: true, + children: [ + { + text: "BPMN", + prefix: "bpmn/", + collapsible: true, + children: [ + "conditions", + "gateways", + "messaging", + "sequence-flow", + "service-tasks", + "timer-intermediate-catching-events", + ], }, + { + text: "FHIR", + prefix: "fhir/", + collapsible: true, + children: [ + "activitydefinition", + "codesystem", + "task", + "valueset", + ], + }, + { + text: "DSF", + prefix: "dsf/", + collapsible: true, + children: [ + "bpmn-process-execution", + "bpmn-process-variables", + "draft-task-resources", + "environment-variables", + "message-correlation", + "message-delegates", + "organization-identifiers", + "process-plugin-api", + "process-plugin-definition", + "read-access-tag", + "requester-and-recipient", + "service-delegates", + "spring-framework-integration", + "versions-placeholders-urls", + ], + }, + { + text: "Guides", + prefix: "guides/", + collapsible: true, + children: [ + "index", + "accessing-bpmn-process-variables", + "accessing-task-resources-during-execution", + "adding-task-input-parameters-to-task-profiles", + "configuring-read-access-tags", + "creating-activity-definitions", + "creating-codesystems-for-dsf-processes", + "creating-task-resources-based-on-a-definition", + "creating-valuesets-for-dsf-processes", + "managing-mutiple-incoming-messages-and-missing-messages", + "setting-targets-for-message-events", + "starting-a-process-via-task-resources", + "user-tasks-in-the-dsf", + ], + }, + ], + }, "create", "publishing/publish-on-dsfhub", "tutorials/", "javadoc", { + text: "Process Plugin Dev Tools", + icon: "info", + prefix: "tooling", + collapsible: true, + children: [ + "validator"], + },] + }, { text: "API v2", icon: "", prefix: "api-v2/", link: "api-v2/", - children: [ "get-started","concept","implementation", "migration", "create", "best-practices","testing", "publishing/publish-on-dsfhub", "tooling/", "tutorials/", "javadoc"], + children: [ "get-started",{ + text: "Concepts", + icon: "info", + link: "concept", + collapsible: true, + children: [ + { + text: "BPMN", + prefix: "bpmn/", + collapsible: true, + children: [ + "conditions", + "gateways", + "messaging", + "sequence-flow", + "service-tasks", + "timer-intermediate-catching-events", + ], + }, + { + text: "FHIR", + prefix: "fhir/", + collapsible: true, + children: [ + "activitydefinition", + "codesystem", + "task", + "valueset", + ], + }, + { + text: "DSF", + prefix: "dsf/", + collapsible: true, + children: [ + "bpmn-process-execution", + "bpmn-process-variables", + "draft-task-resources", + "environment-variables", + "message-correlation", + "message-delegates", + "organization-identifiers", + "process-plugin-api", + "process-plugin-definition", + "read-access-tag", + "requester-and-recipient", + "service-delegates", + "spring-framework-integration", + "versions-placeholders-urls", + ], + }, + { + text: "Guides", + prefix: "guides/", + collapsible: true, + children: [ + "index", + "accessing-bpmn-process-variables", + "accessing-task-resources-during-execution", + "adding-task-input-parameters-to-task-profiles", + "configuring-read-access-tags", + "creating-activity-definitions", + "creating-codesystems-for-dsf-processes", + "creating-task-resources-based-on-a-definition", + "creating-valuesets-for-dsf-processes", + "managing-mutiple-incoming-messages-and-missing-messages", + "setting-targets-for-message-events", + "starting-a-process-via-task-resources", + "user-tasks-in-the-dsf", + ], + }, + ], + }, "implementation", "migration", "create", "best-practices","testing", "publishing/publish-on-dsfhub", "tutorials/", "javadoc", { + text: "Process Plugin Dev Tools", + icon: "info", + prefix: "tooling", + collapsible: true, + children: [ + "validator"], + },] }, ], "/dsf-development": [ @@ -159,6 +319,18 @@ export default hopeTheme({ children: ["team", "communication", "ecosystem", "contribute/", "consultation-hours", "events/",] } ], + "/posts": [ + { + text: "Home", + icon: "home", + link: "/", + }, + { + text: "News", + icon: "news", + link: "/tag/news/", + }, + ], "/intro/use-cases/internal-mii-data-sharing.html": [] }, @@ -193,6 +365,7 @@ export default hopeTheme({ imgMark: true, figure: true, imgSize: true, + component: true, math: { }, @@ -232,6 +405,9 @@ export default hopeTheme({ sup: true, tasklist: false, vPre: false, - vuePlayground: false - } + vuePlayground: false, + + }, + + }); diff --git a/docs/src/community/consultation-hours.md b/docs/src/community/consultation-hours.md index deb4ffa46..e996f5e5f 100644 --- a/docs/src/community/consultation-hours.md +++ b/docs/src/community/consultation-hours.md @@ -3,11 +3,6 @@ title: Consultation Hours icon: guide --- - -::: warning Schedule Change -Due to the FDPG Data Extraction Consultation (DANA), the consultation hour will take place from 14:00–14:50 starting January 20, 2025. -::: - ::: tip Joint Technical Consultation of the DSF Community and FDPG+ Mondays, 14:00–14:50 diff --git a/docs/src/community/events/GMDS2022-dev.md b/docs/src/community/events/GMDS2022-dev.md deleted file mode 100644 index 28f3cacdb..000000000 --- a/docs/src/community/events/GMDS2022-dev.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: GMDS 2022 -icon: code ---- -## GMDS Conference 2022 - -A tutorial on implementing Process Plugins for DSF version 0.9.x was presented at GMDS 2022. You can watch the recordings of the event [here](https://www.youtube.com/playlist?list=PLsHs7HOt6jDMe3PNevpo-uGsDTWVSMsYZ) - -##### Implementing BPMN Processes as DSF Process-Plugins -This [repository](https://github.com/highmed/dsf-process-tutorial) contains exercises to learn how to implement process plugins for the [Data Sharing Framework (DSF)](https://github.com/highmed/highmed-dsf). The tutorial is divided into several exercises that build on each other. For each exercise, a sample solution is provided in a separate branch. -This tutorial was first executed at the [GMDS / TMF 2022](https://www.gmds.de/) conference. The slides of the opening remarks by H. Hund and R. Wettstein are available as a [PDF download](https://raw.githubusercontent.com/highmed/dsf-process-tutorial/main/exercises/figures/2022-08-21_GMDS_2022_DSF_Process_Tutorial.pdf). diff --git a/docs/src/community/events/README.md b/docs/src/community/events/README.md index de9c56f9b..72ff9f325 100644 --- a/docs/src/community/events/README.md +++ b/docs/src/community/events/README.md @@ -2,6 +2,15 @@ title: Events icon: news --- -- [MIE 2023](MIE2023.md) -- [GMDS 2022](GMDS2022-dev.md) +## Upcoming Events +To be announced! +## Past Events +- [FHIR Devdays 2025 Follow-up](../../posts/2025-07-04-follow-up-fhir-devdays.md) +- [FHIR Devdays 2025 Announcement](../../posts/2025-05-07-fhir-devdays-2025) +- [Springschool 2025](../../posts/2025-04-23-spring-school-2025) +- [Miracum Difuture Kolloquium 2024](../../posts/2024-02-20-miracum-difuture-kolloquium.md) + +### Tutorials +- [MIE 2023](tutorials/2023-05-30-MIE2023.md) +- [GMDS 2022](tutorials/2022-09-10-GMDS2022-dev.md) diff --git a/docs/src/community/events/tutorials/2022-09-10-GMDS2022-dev.md b/docs/src/community/events/tutorials/2022-09-10-GMDS2022-dev.md new file mode 100644 index 000000000..24b6e698a --- /dev/null +++ b/docs/src/community/events/tutorials/2022-09-10-GMDS2022-dev.md @@ -0,0 +1,25 @@ +--- +title: GMDS 2022 +icon: code +date: 2022-09-10 +type: "news" +excerpt: "The German Society for Medical Informatics, Biometry, and Epidemiology e.V. (GMDS) is an independent scientific and medical society with over 2,000 members. At the GMDS conference 2022, the Data Sharing Framework (DSF) was presented." +category: + - News +tags: + - News + - Events + - Tutorials + - GMDS +--- +## GMDS Conference 2022 +The German Society for Medical Informatics, Biometry, and Epidemiology e.V. (GMDS) is an independent scientific and medical society with over 2,000 members. At the GMDS conference, the Data Sharing Framework (DSF) was presented, accompanied by a tutorial on implementing Process Plugins for DSF version 0.9.x. You can watch the recordings of the event [here](https://www.youtube.com/playlist?list=PLsHs7HOt6jDMe3PNevpo-uGsDTWVSMsYZ) + +##### Implementing BPMN Processes as DSF Process-Plugins + +::: warning Outdated Tutorial +Please note that the version presented was designed for DSF < 1.0.0 and that namespaces and other aspects have changed since then. A more recent version of the Tutorial can be found [here](https://github.com/datasharingframework/dsf-process-tutorial). +::: + +This [repository](https://github.com/highmed/dsf-process-tutorial) contains exercises to learn how to implement process plugins for the [Data Sharing Framework (DSF)](https://github.com/highmed/highmed-dsf). The tutorial is divided into several exercises that build on each other. For each exercise, a sample solution is provided in a separate branch. A recording of the opening remarks by H. Hund and R. Wettstein can be found on [YouTube](https://youtu.be/2AUPwQQQsPY?si=r1tWF3-q3Q4paYef). The slides of the opening remarks are available as a [PDF download](https://raw.githubusercontent.com/highmed/dsf-process-tutorial/main/exercises/figures/2022-08-21_GMDS_2022_DSF_Process_Tutorial.pdf). + diff --git a/docs/src/community/events/MIE2023.md b/docs/src/community/events/tutorials/2023-05-30-MIE2023.md similarity index 90% rename from docs/src/community/events/MIE2023.md rename to docs/src/community/events/tutorials/2023-05-30-MIE2023.md index 56e397b34..d19e8c189 100644 --- a/docs/src/community/events/MIE2023.md +++ b/docs/src/community/events/tutorials/2023-05-30-MIE2023.md @@ -1,6 +1,16 @@ --- title: MIE May 2023 icon: info +date: 2023-05-30 +type: "news" +excerpt: "Between the 22nd and 25th of May, Medical Informatics Europe 2023 was held in Gothenburg, Sweden. It was organized by the European Federation for Medical Informatics (EFMI) and the Swedish Federation for Medical Informatics (SFMI). The DSF team presented its project and held a tutorial. An archived version of the tutorial can be read here." +category: + - News +tags: + - News + - Events + - Tutorials + - MIE --- ## Abstract diff --git a/docs/src/community/team.md b/docs/src/community/team.md index 721dc10de..95238c855 100644 --- a/docs/src/community/team.md +++ b/docs/src/community/team.md @@ -13,7 +13,7 @@ The funded project team includes: - Alexander Kiel • [GitHub](https://github.com/alexanderkiel) - Jan Böhringer • [GitHub](https://github.com/jaboehri) - Mathias Rühle • [GitHub](https://github.com/EmteZogaf) -- Mohamad Khalil Malla +- Mohamad Khalil Malla • [GitHub](https://github.com/khalilMa24) - Paul Maibach • [GitHub](https://github.com/javarum) - Sylvester Baidoo-A. - Tom Holler • [GitHub](https://github.com/H99-code) diff --git a/docs/src/dsf-development/v2/readme.md b/docs/src/dsf-development/v2/readme.md index 56201af90..e9cd696a1 100644 --- a/docs/src/dsf-development/v2/readme.md +++ b/docs/src/dsf-development/v2/readme.md @@ -1,8 +1,6 @@ --- title: DSF v2 --- -::: warning Work in progress -No content yet. Please visit this page later. - -::: \ No newline at end of file +- [FHIR Implementation Guide](fhir-ig.md) +- [Maven](maven.md) \ No newline at end of file diff --git a/docs/src/explore/awards.md b/docs/src/explore/awards.md index 7a8139dad..06403e955 100644 --- a/docs/src/explore/awards.md +++ b/docs/src/explore/awards.md @@ -3,6 +3,4 @@ title: Awards icon: creative --- ## Awards - -### Rolf Hansen Memorial Award 2023 goes to [Hauke Hund](https://github.com/hhund) -We are very pleased to have won the Rolf Hansen Memorial Award at [EFMI MIE 2023](https://www.mie23.org/) in Gothenburg. The Rolf Hansen Memorial Award is presented annually by the European Federation for Medical Informatics (EFMI) for an outstanding paper as well as for an excellent presentation. It is named after Rolf Hansen (1931-1993), a well-known Norwegian medical informatician and former president of EFMI. Hauke Hund presented his Paper: *No Transfer Without Validation: A Data Sharing Framework Use Case* in May at the EFMI MIE. [doi:10.3233/SHTI230066 ](https://ebooks.iospress.nl/doi/10.3233/SHTI230066) +- [Rolf Hansen Memorial Award 2023](../posts/2023-05-30-mie-award-2023.md) diff --git a/docs/src/explore/concepts/allow-list.md b/docs/src/explore/concepts/allow-list.md index 30b23752a..76160fabc 100644 --- a/docs/src/explore/concepts/allow-list.md +++ b/docs/src/explore/concepts/allow-list.md @@ -9,8 +9,6 @@ First, we need a list of organizations that we trust. Secondly, we need a way to The Allow List consists of Organization-, Endpoint- and OrganisationAffiliation- resources. With these resources the allow list defines communication partners and and parent organizations like research consortia and groups as well as the roles of each organization. Each DSF FHIR server stores their own allow list. To make sure that processes can be executed, parties must allow access via their allow list. -![Architecture](/photos/info/allowList/allowList-architecture.png) - ## Allow List Managment [Here](/operations/latest/allowList-mgm.md) you can read all the information if you want to create or update an Allow List. diff --git a/docs/src/explore/concepts/process-plugins.md b/docs/src/explore/concepts/process-plugins.md index e2ce5484a..a05a4b5ac 100644 --- a/docs/src/explore/concepts/process-plugins.md +++ b/docs/src/explore/concepts/process-plugins.md @@ -16,7 +16,7 @@ BPMN models can be created with [Camunda Modeler](https://camunda.com/de). The f ## Ping Pong Process as an example Process Plugin The [ping process plugin](https://github.com/datasharingframework/dsf-process-ping-pong) can be used for (periodic) connection testing between organizations that are part of your DSF allow list. The following figure shows a representation of the process. -![Ping-Pong Process](/photos/info/use-cases/ping-pong.png) +![Ping-Pong Process v.2](/photos/info/use-cases/ping-pongv2.png) The ping pong process is composed of 3 different subprocesses: diff --git a/docs/src/explore/concepts/security.md b/docs/src/explore/concepts/security.md index a4af089d1..2c8368742 100644 --- a/docs/src/explore/concepts/security.md +++ b/docs/src/explore/concepts/security.md @@ -15,5 +15,5 @@ Authentication of organizations within the DSF is handled by the use of X.509 cl A webserver certificate is needed to run the FHIR endpoint and a 802.1X client certificate is used to authenticate against other organizations endpoints and as a server certificate for the business process engine. -More information about client and server certificates can be found [here](/operations/v1/latest/install#client-server-certificates). +More information about client and server certificates can be found [here](/operations/latest/install#client-server-certificates). diff --git a/docs/src/index.md b/docs/src/index.md index 62d671707..74710fa4e 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -38,7 +38,18 @@ The **Data Sharing Framework (DSF)** is a concept for a secure middleware to dis ![DSF concept](/photos/info/introduction/dsf-concept.png) -## [News](tag/news/) +## [News](/news/) + +**DSF 2.0 Announcement** +We’re excited to announce that the next major release, DSF 2.0, is currently in development! This update brings significant improvements and new features designed to enhance performance and usability. In this article is a summary of what to expect in the upcoming release. Upcomming datails will be available under [Operations](operations/v2.0.0-M3/index.md) +[Read more](/posts/2025-07-28-dsfv2-announcement) + +--- +**Follow-up FHIR DevDays 2025** +After much anticipation, the DSF team participated at the FHIR DevDays 2025. The Event was held from June 3rd until June 6th in Amsterdam. As the world’s largest event dedicated to HL7 FHIR, DevDays brings together health IT professionals from across the globe to deepen their understanding of the standard, to exchange knowledge, and to explore innovative real-world applications in healthcare! +[Read more](/posts/2025-07-04-follow-up-fhir-devdays) + +---
FHIR DevDays 2025
@@ -49,10 +60,6 @@ Our DSF team will be at FHIR DevDays 2025 from June 3rd to 6th in Amsterdam! Dev If you'd like to connect with us during the event, feel free to arrange a meeting beforehand by emailing us at 📧dsf-gecko@hs-heilbronn.de [Read more](/posts/2025-05-07-fhir-devdays-2025.html) ---- -**DSF Spring School 2025** -From April 2nd to 4th, members of the DSF community gathered at Heilbronn University for the annual DSF Spring School 2025. The three-day event provided an in-depth look at the Data Sharing Framework (DSF) and its latest developments, featuring expert talks, hands-on sessions, and collaborative projects during a community-driven hackathon. With vibrant discussions and plenty of memorable moments, the event concluded on a high note. -[Read more](/posts/2025-04-23-spring-school-2025) --- #### Feel free to contact us via dsf-gecko@hs-heilbronn.de and we will take care of your request as soon as possible. diff --git a/docs/src/news/index.md b/docs/src/news/index.md index c3d1f9bb0..f36614e51 100644 --- a/docs/src/news/index.md +++ b/docs/src/news/index.md @@ -1,17 +1,8 @@ --- icon: news title: News +layout: Blog +heroImage: /photos/home/logo.svg +heroText: News +bgImage: photos/news/milad-fakurian-unsplash.jpg --- - - -## FHIR DevDays 2025 -Our DSF team will be at FHIR DevDays 2025 from June 3rd to 6th in Amsterdam! -DevDays is the world’s leading FHIR event in the field of digital health. Join us at the event for engaging community talks by Maximilian Kurscheidt and Hauke Hund. We’ll be discussing the International Patient Summary Challenge 2025, as well as how we can foster research through Real-World Data Sharing and Process Orchestration using FHIR and BPMN. We look forward to seeing you there! If you'd like to connect with us during the event, feel free to arrange a meeting beforehand by emailing us at **📧 dsf-gecko@hs-heilbronn.de**. - -For more information, visit: -[FHIR DevDays2025](./fhir-devdays-2025/) -## DSF Spring School 2025 -From April 2nd to 4th, members of the DSF community gathered at Heilbronn University for the annual DSF Spring School 2025. The three-day event provided an in-depth look at the Data Sharing Framework (DSF) and its latest developments, featuring expert talks, hands-on sessions, and collaborative projects during a community-driven hackathon. With vibrant discussions and plenty of memorable moments, the event concluded on a high note. - -For more information, read about the event here: -[Spring School 2025](./spring-school-2025/) diff --git a/docs/src/operations/v1.0.0/configuration/common.md b/docs/src/operations/v1.0.0/bpe/common.md similarity index 100% rename from docs/src/operations/v1.0.0/configuration/common.md rename to docs/src/operations/v1.0.0/bpe/common.md diff --git a/docs/src/operations/v1.0.0/configuration/bpe.md b/docs/src/operations/v1.0.0/bpe/configuration.md similarity index 100% rename from docs/src/operations/v1.0.0/configuration/bpe.md rename to docs/src/operations/v1.0.0/bpe/configuration.md diff --git a/docs/src/operations/v1.0.0/configuration/reverseproxy.md b/docs/src/operations/v1.0.0/fhir-reverse-proxy/configuration.md similarity index 100% rename from docs/src/operations/v1.0.0/configuration/reverseproxy.md rename to docs/src/operations/v1.0.0/fhir-reverse-proxy/configuration.md diff --git a/docs/src/operations/v1.0.0/configuration/fhir.md b/docs/src/operations/v1.0.0/fhir/configuration.md similarity index 100% rename from docs/src/operations/v1.0.0/configuration/fhir.md rename to docs/src/operations/v1.0.0/fhir/configuration.md diff --git a/docs/src/operations/v1.0.0/index.md b/docs/src/operations/v1.0.0/index.md index 6c46285a8..930cd3435 100644 --- a/docs/src/operations/v1.0.0/index.md +++ b/docs/src/operations/v1.0.0/index.md @@ -10,8 +10,8 @@ This is a major DSF release not compatible with 0.9.x and older version develope # System Administrators -- [Upgrade from DSF 0.9.x.](upgrade-from-0) - [Install DSF 1.0.0](install) +- [Upgrade from DSF 0.9.x.](upgrade-from-0) ## New features @@ -22,5 +22,3 @@ This is a major DSF release not compatible with 0.9.x and older version develope - Removed mostly unused features to simplify instance configuration - Unified proxy setup - Many more [features](https://github.com/datasharingframework/dsf/releases/tag/v1.0.0) - - diff --git a/docs/src/operations/v1.0.0/release-notes.md b/docs/src/operations/v1.0.0/release-notes.md new file mode 100644 index 000000000..c24347547 --- /dev/null +++ b/docs/src/operations/v1.0.0/release-notes.md @@ -0,0 +1,78 @@ +--- +title: Release Notes (v1.0.0) +icon: note +--- + +## [Release Notes for v1.0.0](https://github.com/datasharingframework/dsf/releases/tag/v1.0.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.0.0 - Major Release +General remarks: +- This is a major DSF release not compatible with 0.9.x and older version developed at https://github.com/highmed/highmed-dsf + +Features: +- OpenID Connect authentication for local users is now available for the FHIR server, which is acting as an OIDC client authenticating users for the HTML frontend via Authorization Code Flow. +- OAuth Bearer Token Authentication supports clients in directly interacting with the FHIR rest webservice. +- Authorization extensions were added to ActivityDefinition resources which allow plugins to configure execution of processes for users. +- The FHIR `_summary` parameter is available as defined by the [specification](http://hl7.org/fhir/R4/search.html#summary). +- The DSF FHIR docker image contains a default "external" `bundle.xml` file to create the local Organization and Endpoint resources and therefore no longer needs to be mounted via a docker-volume. +- The process plugin API has been redesigned. Process plugins are now build for a specific API version that will be supported across future DSF versions. +- A new HTML view allows starting processes via Task resources with status `draft`. +- The authorization rule for `draft` Task resources was modified to allow creation of Tasks even if the Task would not be allowed to be executed. +- A `business-key` input parameter is automatically added via DSF BPE server TaskHandler if not set by user, so that executed processes can be traced better. +- Two new organization-roles are now available: `DTS`, `UAC`. +- The helper classes for Task and QuestionnaireResponse resources have been adapted to the new process plugin API. +- The documentation generator can now be used as a maven plugin using compile-time only annotations. +- The code base has been migrated to Java 17 and uses the new `dsf.dev` namespace. +- The Jetty config properties are now aligned with all other existing `dev.dsf...` properties. +- A common forward proxy server config with config parameters for: `url`, `username`, `password` and a `no-proxy` list is available and can be accessed via the process plugin API. +- The database migration steps have been streamlined as much as possible because there is no backwards +compatibility with 0.9.x and older versions. +- Maven modules are now released via [maven central](https://repo.maven.apache.org/maven2/dev/dsf/). +- Self hosted runners are now provided to circumvent RAM and CPU shortages in GitHub hosted runners. + +Removed: +- It is no longer possible to define dependencies between processes. +- It is no longer possible to deploy processes as folders. +- FHIR Metadata resources, profiles and authorization rules only needed for HiGHmed processes have been removed. +- Modules that are not considered as core modules of the DSF but are process specific have been removed: `dsf-consent`, `dsf-mpi`, `dsf-openehr`, `dsf-pseudonymization`, `dsf-bpe-webservice-client` +- The deprecated `organization-type` CodeSystem and ValueSet have been removed. +- The `plugin` folder has beed hidden from standard deployments. Processes should be released as fat-jars containing the "old" plugins. +- The VM-based test-setup has been removed in favor of the docker-based test-setup. + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.0.0](https://github.com/orgs/datasharingframework/packages/container/bpe/105302481?tag=1.0.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.0.0](https://github.com/orgs/datasharingframework/packages/container/fhir/105300858?tag=1.0.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.0.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/105293483?tag=1.0.0) + +Issues closed: +- Rework Draft Task Authorization and Extend ActivityDefinition Task Authorization Rules [#51](https://github.com/datasharingframework/dsf/issues/51) +- Create a Task HTML view [#50](https://github.com/datasharingframework/dsf/issues/50) +- Add OAuth Bearer Token Authentication [#47](https://github.com/datasharingframework/dsf/issues/47) +- Simplify the DB Migration Scripts [#45](https://github.com/datasharingframework/dsf/issues/45) +- Better align organization roles with currently existing roles [#43](https://github.com/datasharingframework/dsf/issues/43) +- Add Default External bundle.xml to Docker Image [#40](https://github.com/datasharingframework/dsf/issues/40) +- Cleanup TaskHelper and Add JavaDoc [#38](https://github.com/datasharingframework/dsf/issues/38) +- Add Common Forward Proxy Server Config [#36](https://github.com/datasharingframework/dsf/issues/36) +- Switch to self hosted github runner [#34](https://github.com/datasharingframework/dsf/issues/34) +- Separate documentation-generator and -annotations [#30](https://github.com/datasharingframework/dsf/issues/30) +- Mandatory business-key input parameter [#27](https://github.com/datasharingframework/dsf/issues/27) +- Improve Process Plugin API [#26](https://github.com/datasharingframework/dsf/issues/26) +- Add Support for Query Parameter _summary [#23](https://github.com/datasharingframework/dsf/issues/23) +- Remove dependencies between processes [#22](https://github.com/datasharingframework/dsf/issues/22) +- Remove process deployments using folders [#21](https://github.com/datasharingframework/dsf/issues/21) +- Align Jetty Config Properties With Existing dev.dsf... Properties [#18](https://github.com/datasharingframework/dsf/issues/18) +- Remove FHIR Metadata resources, profiles and authorization rules only needed for HiGHmed processes [#13](https://github.com/datasharingframework/dsf/issues/13) +- Remove deprecated organization-type CodeSystem and ValueSet [#12](https://github.com/datasharingframework/dsf/issues/12) +- Hide/rename plugin folder from default deployments [#11](https://github.com/datasharingframework/dsf/issues/11) +- Remove process specific modules [#9](https://github.com/datasharingframework/dsf/issues/9) +- Add OpenID Connect Authentication for Local Users [#7](https://github.com/datasharingframework/dsf/issues/7) +- Remove VM-based Test-Setup [#6](https://github.com/datasharingframework/dsf/issues/6) +- Migrate to Java 17 [#2](https://github.com/datasharingframework/dsf/issues/2) +- Migrate to dsf.dev Namespace [#1](https://github.com/datasharingframework/dsf/issues/1) + +This release contains contributions from [@schwzr](https://github.com/schwzr), [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.1.0/index.md b/docs/src/operations/v1.1.0/index.md index 8fd884f5d..a8540cd74 100644 --- a/docs/src/operations/v1.1.0/index.md +++ b/docs/src/operations/v1.1.0/index.md @@ -10,9 +10,11 @@ This is a major DSF release not compatible with 0.9.x and older version develope # System Administrators -- [Upgrade from DSF 0.9.x.](upgrade-from-0) -- [Upgrade from DSF 1.x.](upgrade-from-1) - [Install DSF 1.1.0](install) +- [Upgrade from DSF 1.x.](upgrade-from-1) +- [Upgrade from DSF 0.9.x.](upgrade-from-0) + + ## New features diff --git a/docs/src/operations/v1.1.0/release-notes.md b/docs/src/operations/v1.1.0/release-notes.md new file mode 100644 index 000000000..d5da50bab --- /dev/null +++ b/docs/src/operations/v1.1.0/release-notes.md @@ -0,0 +1,54 @@ +--- +title: Release Notes (v1.1.0) +icon: note +--- + +## [Release Notes for v1.1.0](https://github.com/datasharingframework/dsf/releases/tag/v1.1.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.1.0 - UI and Other Improvements +General remarks: +- This is an update for the new 1.0.0 DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- To Update an existing 1.0.0 installation, please see the [1.0.0 -> 1.1.0 Upgrade Guide](https://dsf.dev/v1.1.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.1.0/maintain/install.html). + +Features: +- Changes to the DSF FHIR server user interface (UI): While instantiating Task resources via the UI, input elements with cardinality 0..* or 1..* can now be added/removed dynamically. Placeholder attributes of input elements can be copied into the value attribute using a button. The user interface now supports dark and light themes selected based on operating system preferences or user selection. New UIs have been added for Task and QuestionnaireResponse search-bundle results. +- Search parameters can now beused more than once to perform AND queries. Descriptions for the history `_at` and `_since` parameters was added to the capability statement (/metadata) and help UIs. +- The unique criteria of the OrganizationAffiliation authorization rule was reworked. Different endpoint can now be configured for different roles of a member organization within a parent organization. +- For easier debugging, a custom User-Agent Header (DSF/${version}) is now send by the DSF webservice and websocket clients. +- The access log pattern of the DSF FHIR reverse-proxy now includes the user-agent header and client certificate subject DN string. An environment variable to configure the mod_ssl parameter `SSLVerifyClient` has been added to the DSF FHIR reverse-proxy. This environment variable can be used to make client certificate non mandatory in order to used local OIDC authentication. +- Java dependency have been upgraded where possible. + +Bug Fixes: +- Input elements are now always shown within the Task user interface of the DSF FHIR server. +- Process Plugin API: The Implementation of the OrganizationProvider.getOrganization(Identifier) method was fixed and now returns the correct results. +- Process Plugin Loader: A check for the existence of a NamingSystem version property was removed since NamingSystem resources in FHIR R4 do not support the version property. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.0.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.0](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.1.0](https://github.com/orgs/datasharingframework/packages/container/bpe/121017713?tag=1.1.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.1.0](https://github.com/orgs/datasharingframework/packages/container/fhir/121016922?tag=1.1.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.1.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/121014165?tag=1.1.0) + +Issues closed: +- Upgrade Dependencies [#79](https://github.com/datasharingframework/dsf/issues/79) +- FHIR Server UI Dark Mode [#75](https://github.com/datasharingframework/dsf/issues/75) +- NamingSystem not deployable from Process Plugin [#72](https://github.com/datasharingframework/dsf/issues/72) +- Allow SSLVerifyClient Option in RevProxy to Be Configured Via Environment Variable [#70](https://github.com/datasharingframework/dsf/issues/70) +- Include Software Version in User-Agent for outgoing requests (BPE) [#68](https://github.com/datasharingframework/dsf/issues/68) +- Allow-List: Add Support for Specific Endpoints for Different Roles in a Parent Organization [#65](https://github.com/datasharingframework/dsf/issues/65) +- Add Support for Repeated Search Parameters to Define AND Queries [#63](https://github.com/datasharingframework/dsf/issues/63) +- OrganizationProvider Never Finds Organization by Identifier [#61](https://github.com/datasharingframework/dsf/issues/61) +- Start New Development Cycle [#58](https://github.com/datasharingframework/dsf/issues/58) +- Improve Task HTML view [#56](https://github.com/datasharingframework/dsf/issues/56) + +This release contains contributions from [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.2.0/index.md b/docs/src/operations/v1.2.0/index.md index fb15ddfbf..048a8f85b 100644 --- a/docs/src/operations/v1.2.0/index.md +++ b/docs/src/operations/v1.2.0/index.md @@ -10,9 +10,9 @@ This is a major DSF release not compatible with 0.9.x and older version develope # System Administrators -- [Upgrade from DSF 0.9.x.](upgrade-from-0) -- [Upgrade from DSF 1.x.](upgrade-from-1) - [Install DSF 1.2.0](install) +- [Upgrade from DSF 1.x.](upgrade-from-1) +- [Upgrade from DSF 0.9.x.](upgrade-from-0) ## New features diff --git a/docs/src/operations/v1.2.0/release-notes.md b/docs/src/operations/v1.2.0/release-notes.md new file mode 100644 index 000000000..10dcacc77 --- /dev/null +++ b/docs/src/operations/v1.2.0/release-notes.md @@ -0,0 +1,54 @@ +--- +title: Release Notes (v1.2.0) +icon: note +--- + +## [Release Notes for v1.2.0](https://github.com/datasharingframework/dsf/releases/tag/v1.2.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.2.0 - Improved Concurrency Support +General remarks: +- This is an update for the new 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.2.0 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.2.0 Upgrade Guide](https://dsf.dev/v1.2.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.2.0/maintain/install.html). + +Features: +- The BPE server config parameter `dev.dsf.bpe.fhir.server.organization.identifier.value` (environment variable `DEV_DSF_BPE_FHIR_SERVER_ORGANIZATION_IDENTIFIER_VALUE`) was not needed and has been removed. +- Start and continue events for processes are now executed on a separate thread pool enabling concurrent execution of processes using "non async" process tasks. +- Support for "async" processes has been improved and config parameter / environment variables have been added to configure the process engine job executor. +- The special java StatusClient used for docker health checks has been replaced with `curl`. +- A new environment variable `SERVER_CONTEXT_PATH` was added to the reverse proxy docker image. The new environment variable can be used to configure the reverse-proxy path that gets delegated to the DSF FHIR app server. +- The FHIR server config parameter `dev.dsf.fhir.server.roleConfig` (environment variable `DEV_DSF_FHIR_SERVER_ROLECONFIG` is now optional and the validation of the config YAML has been improved. +- Java dependency have been upgraded where possible. + +Bug Fixes: +- Literal block scalars can now be used with the environment variable `DEV_DSF_PROXY_NOPROXY`. +- The websocket connection to the DSF FHIR server no longer disconnects if long-running "non async" process tasks are executed. By handing over incoming Task and QuenstionnaireResponse resources to a separate thread-pool, the websocket client thread is immediately freed and able respond to websocket ping-frames keeping the connection from timing out. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Feasibility v1.0.0.0](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.2.0](https://github.com/orgs/datasharingframework/packages/container/bpe/127300257?tag=1.2.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.2.0](https://github.com/orgs/datasharingframework/packages/container/fhir/127299735?tag=1.2.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.2.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/127298803?tag=1.2.0) + +Issues closed: +- Increase Camunda DefaultJobExecutor Queue Size and Expose Config Options [#101](https://github.com/datasharingframework/dsf/issues/101) +- Make FHIR Server Role Config Optional, Improve Role Config Validation [#96](https://github.com/datasharingframework/dsf/issues/96) +- Replace Java StatusClient With curl [#93](https://github.com/datasharingframework/dsf/issues/93) +- Modify the BPE to Enable Parallel Execution of Non Async Processes [#91](https://github.com/datasharingframework/dsf/issues/91) +- BPE Task Websocket Connection Fails During Long Running Processes [#90](https://github.com/datasharingframework/dsf/issues/90) +- Remove Not Needed Organization Identifier Config Parameter From BPE [#89](https://github.com/datasharingframework/dsf/issues/89) +- DEV_DSF_PROXY_NOPROXY Not Working With Literal Block Scalar [#87](https://github.com/datasharingframework/dsf/issues/87) +- Start New Development Cycle [#86](https://github.com/datasharingframework/dsf/issues/86) +- Make FHIR proxy server context path customizable [#85](https://github.com/datasharingframework/dsf/issues/85) + +This release contains contributions from [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.3.0/index.md b/docs/src/operations/v1.3.0/index.md index d3bf4a913..895a60d29 100644 --- a/docs/src/operations/v1.3.0/index.md +++ b/docs/src/operations/v1.3.0/index.md @@ -10,9 +10,9 @@ This is a major DSF release not compatible with 0.9.x and older version develope # System Administrators -- [Upgrade from DSF 0.9.x.](upgrade-from-0) -- [Upgrade from DSF 1.x.](upgrade-from-1) - [Install DSF 1.3.0](install) +- [Upgrade from DSF 1.x.](upgrade-from-1) +- [Upgrade from DSF 0.9.x.](upgrade-from-0) ## New features diff --git a/docs/src/operations/v1.3.0/release-notes.md b/docs/src/operations/v1.3.0/release-notes.md new file mode 100644 index 000000000..c0893f473 --- /dev/null +++ b/docs/src/operations/v1.3.0/release-notes.md @@ -0,0 +1,46 @@ +--- +title: Release Notes (v1.3.0) +icon: note +--- + +## [Release Notes for v1.3.0](https://github.com/datasharingframework/dsf/releases/tag/v1.3.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.3.0 - Validation Support +General remarks: +- This is an update for the new 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.3.0 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.3.0 Upgrade Guide](https://dsf.dev/v1.3.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.3.0/maintain/install.html). + +Features: +- Necessary library dependencies were added to the BPE to support for FHIR resource validation in process plugins. +- HTML views for Organization, OrganizationAffiliation and Endpoint resources and their search Bundles have been added. + +Bug Fixes: +- An infinite loop condition in the OrganizationProvider class used by process plugins was fixed. [#104](https://github.com/datasharingframework/dsf/issues/104) +- For reverse proxies configured with a non standard context URL, an invalid redirect from the root url without a trailing slash was corrected. [#85](https://github.com/datasharingframework/dsf/issues/85) + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Feasibility v1.0.0.0](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.0) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.3.0](https://github.com/orgs/datasharingframework/packages/container/bpe/136172848?tag=1.3.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.3.0](https://github.com/orgs/datasharingframework/packages/container/fhir/136172183?tag=1.3.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.3.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/136170954?tag=1.3.0) + +Issues closed: +- Upgrade Dependencies [#114](https://github.com/datasharingframework/dsf/issues/114) +- Add Validation Dependencies to BPE [#111](https://github.com/datasharingframework/dsf/issues/111) +- Create HTML Views for Organization, OrganizationAffiliation and Endpoint Search Bundles [#107](https://github.com/datasharingframework/dsf/issues/107) +- Search for organizations by parent organization and member role hangs in infinite loop [#104](https://github.com/datasharingframework/dsf/issues/104) +- Make FHIR proxy server context path customizable [#85](https://github.com/datasharingframework/dsf/issues/85) + +This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.3.1/index.md b/docs/src/operations/v1.3.1/index.md index 0a69a5b16..fa4b91616 100644 --- a/docs/src/operations/v1.3.1/index.md +++ b/docs/src/operations/v1.3.1/index.md @@ -10,9 +10,9 @@ This is a major DSF release not compatible with 0.9.x and older version develope # System Administrators -- [Upgrade from DSF 0.9.x.](upgrade-from-0) -- [Upgrade from DSF 1.3.0](upgrade-from-1) - [Install DSF 1.3.1](install) +- [Upgrade from DSF 1.3.0](upgrade-from-1) +- [Upgrade from DSF 0.9.x.](upgrade-from-0) ## New features diff --git a/docs/src/operations/v1.3.1/release-notes.md b/docs/src/operations/v1.3.1/release-notes.md new file mode 100644 index 000000000..caa819320 --- /dev/null +++ b/docs/src/operations/v1.3.1/release-notes.md @@ -0,0 +1,53 @@ +--- +title: Release Notes (v1.3.1) +icon: note +--- + +## [Release Notes for v1.3.1](https://github.com/datasharingframework/dsf/releases/tag/v1.3.1) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.3.1 - Maintenance Release +General remarks: +- This is an update for the new 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.3.1 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.3.1 Upgrade Guide](https://dsf.dev/v1.3.1/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.3.1/maintain/install.html). + +Features: +- Removes insecure TLS cipher suites from the apache httpd reverse proxy Docker image. +- Adds browser security policy headers for `text/html` requests and requests for `/static/...` resources. +- Removes in-line css `style` and javascript event-handler definitions. +- Reorganized `commons-logging` excludes, added Dependency ban rule. +- Only sends the `X-ClientCert` header if the variable `SSL_CLIENT_CERT` is not empty. The value is empty if a users is not authenticated with a client certificate and client certificate authentication is optional. +- Adds generated mail address based on the `iss` (issuer) and `sub` (subject) values from the access token to the currently logged in Practitioner object if the token does not contain an `email` claim. + +Bug Fixes: +- The OrganizationAffiliation page showed the `Participation Organization` identifier in the column `Parent Organization`. The expected `Parent Organization` identifier is now shown. +- The apache httpd reverse proxy did not set the required `X-Forwarded-Proto` header, leading to "faulty" redirect URLs when using OIDC logins. The `X-Forwarded-Proto` header for proxy request to the FHIR App server is now set. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.0](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.0) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.3.1](https://github.com/orgs/datasharingframework/packages/container/bpe/142957162?tag=1.3.1) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.3.1](https://github.com/orgs/datasharingframework/packages/container/fhir/142954854?tag=1.3.1) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.3.1](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/142950963?tag=1.3.1) + +Issues closed: +- Upgrade Dependencies [#127](https://github.com/datasharingframework/dsf/issues/127) +- Improve Some Logging for OIDC Logins [#125](https://github.com/datasharingframework/dsf/issues/125) +- Redirect URI for OIDC Login is Http [#124](https://github.com/datasharingframework/dsf/issues/124) +- Start New Development Cycle [#120](https://github.com/datasharingframework/dsf/issues/120) +- Remove Not Needed commons-logging Dependencies and Enforce Non Use [#119](https://github.com/datasharingframework/dsf/issues/119) +- WebUI: Bug on OrganizationAffiliation page [#118](https://github.com/datasharingframework/dsf/issues/118) +- Unsafe 3DES Cipher Suite in FHIR Proxy [#117](https://github.com/datasharingframework/dsf/issues/117) + +This release contains contributions from [@wetret](https://github.com/wetret), [@schwzr](https://github.com/schwzr) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.3.2/release-notes.md b/docs/src/operations/v1.3.2/release-notes.md new file mode 100644 index 000000000..9c8834e14 --- /dev/null +++ b/docs/src/operations/v1.3.2/release-notes.md @@ -0,0 +1,38 @@ +--- +title: Release Notes (v1.3.2) +icon: note +--- + +## [Release Notes for v1.3.2](https://github.com/datasharingframework/dsf/releases/tag/v1.3.2) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.3.2 - Maintenance Release +General remarks: +- This is an update for the new 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.3.2 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.3.2 Upgrade Guide](https://dsf.dev/v1.3.2/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.3.2/maintain/install.html). + +Bug Fixes: +- Switches the database ID generation strategy for the BPE from `DbIdGenerator` to `StrongUuidGenerator`, as described in the [camunda documentation](https://docs.camunda.org/manual/7.20/user-guide/process-engine/id-generator). + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.1](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.1) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.3.2](https://github.com/orgs/datasharingframework/packages/container/bpe/154354379?tag=1.3.2) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.3.2](https://github.com/orgs/datasharingframework/packages/container/fhir/154351273?tag=1.3.2) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.3.2](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/154349744?tag=1.3.2) + +Issues closed: +- Use UUID generator instead of database id generator [#139](https://github.com/datasharingframework/dsf/issues/139) + +This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@wetret](https://github.com/wetret), [@schwzr](https://github.com/schwzr) and [@hhund](https://github.com/hhund). + diff --git a/docs/src/operations/v1.4.0/release-notes.md b/docs/src/operations/v1.4.0/release-notes.md new file mode 100644 index 000000000..cf7194254 --- /dev/null +++ b/docs/src/operations/v1.4.0/release-notes.md @@ -0,0 +1,59 @@ +--- +title: Release Notes (v1.4.0) +icon: note +--- + +## [Release Notes for v1.4.0](https://github.com/datasharingframework/dsf/releases/tag/v1.4.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.4.0 - General Improvements and Bug Fixes +General remarks: +- This is an update for the new 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.4.0 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.4.0 Upgrade Guide](https://dsf.dev/v1.4.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.4.0/maintain/install.html). + +Features: +- HTML views for ActivityDefinition resources and searchset Bundle results have been added. +- The `name` search parameter was implemented for resources: CodeSystem, HealthcareService, Library, Location, Measure, Questionnaire, StructureDefinition and ValueSet. The `name` search parameter for Organization is now fully implemented and also works with the `Organization.alias` property. +- The Apache module `mod_proxy_wstunnel` is no longer needed and was removed from the fhir_proxy docker image. +- The maven `site` goal was configured to generate pmd, cpd and spotbugs with slf4j bug patterns static code analysis reports as well as javadoc html views. The maven goal `mvn site site:stage` can be used to create a combined report with working links at `\target\staging`. +- Changes suggested by static code analysis tools were implemented and a general code base cleanup was performed. +- Parallel maven builds with parallel execution of tests can now be performed, for example using `mvn install -T2C -DforkCount=4`. +- Release-candidate and milestone releases of process plugins are now treated like snapshot releases. During deployment metadata resources from these plugin types are created with status `draft` and updated on every startup. + +Bug Fixes: +- Binary resources in JSON format exceeding length 20.000.000 previously resulted in a `ca.uhn.fhir.parser.DataFormatException`. Resources can now be up to max integer length (i.e. 2,14 GB) in size. +- A missing SLF4J placeholder was added to circumvent a `java.lang.IllegalArgumentException`. +- Reading a resource with the version after the current version, resulted in a HTTP 500 status code. The REST API now correctly answers with a HTTP 404 status code. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.0](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.0) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.1](https://github.com/medizininformatik-initiative/feasibility-dsf-process/releases/tag/v1.0.0.3) +- [MII Data Transfer v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.0.0) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.4.0](https://github.com/orgs/datasharingframework/packages/container/bpe/159291561?tag=1.4.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.4.0](https://github.com/orgs/datasharingframework/packages/container/fhir/159288668?tag=1.4.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.4.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/159285465?tag=1.4.0) + +Issues closed: +- Upgrade Dependencies [#155](https://github.com/datasharingframework/dsf/issues/155) +- Add HTML Views for ActivityDefinitions [#151](https://github.com/datasharingframework/dsf/issues/151) +- Remove mod_proxy_wstunnel From Apache Reverse Proxy [#145](https://github.com/datasharingframework/dsf/issues/145) +- Configure Maven Site Goal [#142](https://github.com/datasharingframework/dsf/issues/142) +- Increase maximum string length [#138](https://github.com/datasharingframework/dsf/issues/138) +- Exception when logging audit information for resource without entity [#137](https://github.com/datasharingframework/dsf/issues/137) +- Enable Parallel Maven Builds [#135](https://github.com/datasharingframework/dsf/issues/135) +- Start New Development Cycle [#133](https://github.com/datasharingframework/dsf/issues/133) +- Prevent HTTP 500 Statuscode on non existent history element [#132](https://github.com/datasharingframework/dsf/issues/132) +- Treat RC releases similar to SNAPSHOT releases [#131](https://github.com/datasharingframework/dsf/issues/131) + +This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.5.0/release-notes.md b/docs/src/operations/v1.5.0/release-notes.md new file mode 100644 index 000000000..01cd0dd99 --- /dev/null +++ b/docs/src/operations/v1.5.0/release-notes.md @@ -0,0 +1,61 @@ +--- +title: Release Notes (v1.5.0) +icon: note +--- + +## [Release Notes for v1.5.0](https://github.com/datasharingframework/dsf/releases/tag/v1.5.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.5.0 - UI and Questionnaire Improvements +General remarks: +- This is an update for the 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.5.0 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.5.0 Upgrade Guide](https://dsf.dev/v1.5.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.5.0/maintain/install.html). +- GitHub's [CodeQL](https://codeql.github.com) scanner was added to the suite of tools we used to regularly scan the repository for security vulnerabilities, inefficiencies and other bugs in Java and JavaScript code. +- Community guidelines including feature, issue and pull-request templates as well as security information and contribution guidelines have been added to the repository. + +Features: +- Debug logging of DB queries, webservice request headers and the current (authenticated) user are now disabled by default and can be activated using config options. +- To improve the maintainability and robustness of the HTML generation code base, the DSF user interface is now generated using the [Thymeleaf](https://www.thymeleaf.org) templating engine. +- A visual indicator to differentiate between **dev**elopment, **test** and **prod**uction environments can now be configured using the [DEV_DSF_FHIR_SERVER_UI_THEME](https://dsf.dev/stable/maintain/fhir/configuration.html#dev-dsf-fhir-server-ui-theme) and [DEV_DSF_BPE_SERVER_UI_THEME](https://dsf.dev/stable/maintain/fhir/configuration.html#dev-dsf-bpe-server-ui-theme) environment variables. Additionally, the look and feel of the user interface can now be customized via CSS overrides. +- To show deployed processes and their BPMN diagrams as well as active process instances a user interface (UI) was added to the DSF BPE server application. The BPE UI is in _beta_ state and may change significantly in future releases. +- A database migration script has been added to cleanup old orphaned entries in the `read_access` table of the DSF FHIR database. In order to remove future corresponding entries from the `read_access` table ,if resources are permanently deleted, `BEFORE DELETE` database triggers have been added to resource tables. +- Questionnaire resources can now have optional items for BPMN user-tasks. The UI for displaying Task and QuestionnaireReponse Resources has been improved and now supports data-absent-reason extensions to create inputs without default values. +- Library dependencies were upgraded where possible and applicable. + +Bug Fixes: +- The file-system readability of the client certificate private-key file in the BPE is now checked correctly. +- The `:below` name modifier has been configured for the ActivityDefinition.url search parameter. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.1](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.1) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.4](https://github.com/medizininformatik-initiative/mii-process-feasibility/releases/tag/v1.0.0.4) +- [MII Data Transfer v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.0.0) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.5.0](https://github.com/orgs/datasharingframework/packages/container/bpe/181872709?tag=1.5.0) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.5.0](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/181867281?tag=1.5.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.5.0](https://github.com/orgs/datasharingframework/packages/container/fhir/181870747?tag=1.5.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.5.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/181866902?tag=1.5.0) + +Issues closed: +- Add Config Options to Enable Debug Logging of DB Queries, Webservice Request Headers and the Current User [#183](https://github.com/datasharingframework/dsf/issues/183) +- Upgrade Dependencies [#178](https://github.com/datasharingframework/dsf/issues/178) +- Template Engine for HTML UIs [#175](https://github.com/datasharingframework/dsf/issues/175) +- Cleanup and Prevent Orphaned read_access Entries for Permanently Deleted Resources [#170](https://github.com/datasharingframework/dsf/issues/170) +- Readability of Client Certificate PrivateKey Not Checked Correctly in BPE [#169](https://github.com/datasharingframework/dsf/issues/169) +- :below Modifier Not Configured for Search Parameter ActivityDefinition.url [#165](https://github.com/datasharingframework/dsf/issues/165) +- Enable GitHub CodeQL [#164](https://github.com/datasharingframework/dsf/issues/164) +- Allow Optional Elements in Questionnaire [#160](https://github.com/datasharingframework/dsf/issues/160) +- Start New Development Cycle [#158](https://github.com/datasharingframework/dsf/issues/158) +- Add community guidelines [#152](https://github.com/datasharingframework/dsf/issues/152) + +This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jbellmann](https://github.com/jbellmann), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.5.1/release-notes.md b/docs/src/operations/v1.5.1/release-notes.md new file mode 100644 index 000000000..034463c67 --- /dev/null +++ b/docs/src/operations/v1.5.1/release-notes.md @@ -0,0 +1,44 @@ +--- +title: Release Notes (v1.5.1) +icon: note +--- + +## [Release Notes for v1.5.1](https://github.com/datasharingframework/dsf/releases/tag/v1.5.1) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.5.1 - Maintenance Release +General remarks: +- This is an update for the 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.5.1 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.5.1 Upgrade Guide](https://dsf.dev/v1.5.1/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.5.1/maintain/install.html). +- With this maintenance release, library dependencies have been updated. + +Bug Fixes: +- The DSF FHIR server now correctly shows the recipient organization within the Task details view. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.1](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.1) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Feasibility v1.0.0.4](https://github.com/medizininformatik-initiative/mii-process-feasibility/releases/tag/v1.0.0.4) +- [MII Data Transfer v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.0.0) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.5.1](https://github.com/orgs/datasharingframework/packages/container/bpe/205087165?tag=1.5.1) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.5.1](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/205059195?tag=1.5.1) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.5.1](https://github.com/orgs/datasharingframework/packages/container/fhir/205085313?tag=1.5.1) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.5.1](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/205057772?tag=1.5.1) + +Issues closed: +- Upgrade Dependencies [#193](https://github.com/datasharingframework/dsf/issues/193) +- Start New Development Cycle [#191](https://github.com/datasharingframework/dsf/issues/191) +- fhir-proxy | 3 apache vulnerabilities fixed in apache 2.4.59 [#190](https://github.com/datasharingframework/dsf/issues/190) +- FHIR Server GUI: Fix recipient in Task view [#189](https://github.com/datasharingframework/dsf/issues/189) + +This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.5.2/release-notes.md b/docs/src/operations/v1.5.2/release-notes.md new file mode 100644 index 000000000..98db3ec09 --- /dev/null +++ b/docs/src/operations/v1.5.2/release-notes.md @@ -0,0 +1,46 @@ +--- +title: Release Notes (v1.5.2) +icon: note +--- + +## [Release Notes for v1.5.2](https://github.com/datasharingframework/dsf/releases/tag/v1.5.2) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.5.2 - Maintenance Release +General remarks: +- This is an update for the 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- DSF v1.5.2 is **not** compatible with DSF Ping Pong v1.0.0.0, upgrade/use the Ping Pong plugin [v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) if your are upgrading/using this version. +- To Update an existing 1.x installation, please see the [1.x -> 1.5.2 Upgrade Guide](https://dsf.dev/v1.5.2/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.5.2/maintain/install.html). +- With this maintenance release, library dependencies have been updated. The new builds of the bpe_proxy and fhir_proxy docker images are now based on Apache httpd 2.4.61 with amongst others a fix for CVE-2024-38477 mitigating potential denial-of-service attacks. + +Bug Fixes: +- Forms for FHIR Task and QuestionnaireResponse resource can now be submitted using the `Enter`-key. + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.1](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.1) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.0.0.0](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.0.0.0) +- [MII Report v1.1.0.1](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.1.0.1) +- [MII Feasibility v1.0.0.5](https://github.com/medizininformatik-initiative/mii-process-feasibility/releases/tag/v1.0.0.5) +- [MII Data Transfer v1.0.1.0](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.1.0) +- [MII Data Sharing v1.0.0.1](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.0.1) +- [NUM Data Transfer v1.0.0.0](https://github.com/num-codex/codex-processes-ap1/releases/tag/v1.0.0.0) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.5.2](https://github.com/orgs/datasharingframework/packages/container/bpe/241270645?tag=1.5.2) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.5.2](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/241262795?tag=1.5.2) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.5.2](https://github.com/orgs/datasharingframework/packages/container/fhir/241267527?tag=1.5.2) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.5.2](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/241262265?tag=1.5.2) + +Issues closed: +- Upgrade Dependencies [#215](https://github.com/datasharingframework/dsf/issues/215) +- fhir-proxy | 9 apache vulnerabilities fixed in apache 2.4.61 [#214](https://github.com/datasharingframework/dsf/issues/214) +- Fix "onSubmit" action on Task forms [#213](https://github.com/datasharingframework/dsf/issues/213) +- Start New Development Cycle [#198](https://github.com/datasharingframework/dsf/issues/198) + +This release contains contributions from [@hhund](https://github.com/hhund) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.6.0/release-notes.md b/docs/src/operations/v1.6.0/release-notes.md new file mode 100644 index 000000000..0cd100306 --- /dev/null +++ b/docs/src/operations/v1.6.0/release-notes.md @@ -0,0 +1,55 @@ +--- +title: Release Notes (v1.6.0) +icon: note +--- + +## [Release Notes for v1.6.0](https://github.com/datasharingframework/dsf/releases/tag/v1.6.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.6.0 - Improved Update Performance +General remarks: +- This is an update for the 1.x DSF and not compatible with 0.9.x and older version developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- To Update an existing 1.x installation, please see the [1.x -> 1.6.0 Upgrade Guide](https://dsf.dev/v1.6.0/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.6.0/maintain/install.html). +- With this release, library dependencies have been updated, a number of bugs fixed and the execution of FHIR update operations for `Organization` and `OrganizationAffiliation` improved. + +Known Issue: +- Duplicate `ActivityDefinition` resources in DSF FHIR server prevent processes from being executed, for more infos and a workaround see [#247](https://github.com/datasharingframework/dsf/issues/247) + +Features: +- The execution performance of FHIR rest update operations for `Organization` and `OrganizationAffiliation` resource has been improved. + +Bug Fixes: +- The DSF BPE missed `Task` and `QuestionnaireResponse` resources received by the DSF FHIR server during a connection outage between the DSF FHIR and DSF BPE servers. Missed `Task` and `QuestionnaireResponse` are now always downloded after the connection is reestablished. See [#233](https://github.com/datasharingframework/dsf/issues/233) +- The OIDC provider URL could not be configured as a "no proxy" URL if a general forward proxy was configured for the DSF FHIR or DSF BPE servers. The responsible logic error in the code was fixed. See [#232](https://github.com/datasharingframework/dsf/issues/232) +- `QuestionnaireResponse` and corresponding `Questionnaire` resource could not be created together in a `transaction` `Bundle`. The reference check for the `QuestionnaireResponse.questionnaire` canoncial reference was move to the correct `transaction` `Bundle` execution phase. See [#226](https://github.com/datasharingframework/dsf/issues/226) +- A wrong resource type in the `getLocalVersionlessAbsoluteUrl` method of the plugin API class `QuestionnaireResponseHelperImpl` was fixed. See [#224](https://github.com/datasharingframework/dsf/issues/224) + +Known Compatible Process Plugins: +- [DSF Allow List v1.0.0.1](https://github.com/datasharingframework/dsf-process-allow-list/releases/tag/v1.0.0.1) +- [DSF Ping Pong v1.0.1.0](https://github.com/datasharingframework/dsf-process-ping-pong/releases/tag/v1.0.1.0) +- [MII Report v1.1.0.1](https://github.com/medizininformatik-initiative/mii-process-report/releases/tag/v1.1.0.1) +- [MII Feasibility v1.0.0.7](https://github.com/medizininformatik-initiative/mii-process-feasibility/releases/tag/v1.0.0.7) +- [MII Data Transfer v1.0.1.0](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.1.0) +- [MII Data Sharing v1.0.0.1](https://github.com/medizininformatik-initiative/mii-process-data-transfer/releases/tag/v1.0.0.1) + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.6.0](https://github.com/orgs/datasharingframework/packages/container/bpe/289527794?tag=1.6.0) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.6.0](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/289517305?tag=1.6.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.6.0](https://github.com/orgs/datasharingframework/packages/container/fhir/289523073?tag=1.6.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.6.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/289517017?tag=1.6.0) + +Issues closed: +- Upgrade Dependencies [#236](https://github.com/datasharingframework/dsf/issues/236) +- BPE Misses Task and QuestionnaireResponse Resources if Network Disconnects [#233](https://github.com/datasharingframework/dsf/issues/233) +- OIDC Provider Can’t Be Excluded From Configured Forwarding-Proxy [#232](https://github.com/datasharingframework/dsf/issues/232) +- Improve Performance of Organization and OrganizationAffiliation Updates [#230](https://github.com/datasharingframework/dsf/issues/230) +- A Questionnaire and corresponding QuestionnaireResponse resource cannot be posted to the FHIR server at the same time in a transaction Bundle [#226](https://github.com/datasharingframework/dsf/issues/226) +- QuestionnaireResponseHelperImpl Uses Wrong Resource Type in getLocalVersionlessAbsoluteUrl Method [#224](https://github.com/datasharingframework/dsf/issues/224) +- Start New Development Cycle [#219](https://github.com/datasharingframework/dsf/issues/219) + +This release contains contributions from [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.7.0/bpe-reverse-proxy/README.md b/docs/src/operations/v1.7.0/bpe-reverse-proxy/README.md index 4e6a614a0..e2b826d48 100644 --- a/docs/src/operations/v1.7.0/bpe-reverse-proxy/README.md +++ b/docs/src/operations/v1.7.0/bpe-reverse-proxy/README.md @@ -2,5 +2,7 @@ title: BPE Reverse Proxy icon: module --- + + ## Overview - [Configuration Parameters](configuration) diff --git a/docs/src/operations/v1.7.0/fhir-reverse-proxy/README.md b/docs/src/operations/v1.7.0/fhir-reverse-proxy/README.md index d88afe12a..6151c34ed 100644 --- a/docs/src/operations/v1.7.0/fhir-reverse-proxy/README.md +++ b/docs/src/operations/v1.7.0/fhir-reverse-proxy/README.md @@ -2,5 +2,7 @@ title: FHIR Reverse Proxy icon: module --- + + ## Overview - [Configuration Parameters](configuration) diff --git a/docs/src/operations/v1.7.0/release-notes.md b/docs/src/operations/v1.7.0/release-notes.md new file mode 100644 index 000000000..5850f1928 --- /dev/null +++ b/docs/src/operations/v1.7.0/release-notes.md @@ -0,0 +1,45 @@ +--- +title: Release Notes (v1.7.0) +icon: note +--- + +## [Release Notes for v1.7.0](https://github.com/datasharingframework/dsf/releases/tag/v1.7.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.7.0 - Simplified Configuration and Duplicate Resources Fix +General remarks: +- This is an update for the 1.x DSF and not compatible with 0.9.x and older versions developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- To Update an existing 1.x installation, please see the [1.x -> 1.7.0 Upgrade Guide](https://dsf.dev/v1.7.0/maintain/upgrade-from-1.html). **Note:** Upgrading to 1.7.0 requires additional work beyond updating the version number. +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.7.0/maintain/install.html). +- With this release, library dependencies have been updated, a bug regarding duplicate FHIR resources fixed and a few features implemented to simplify the configuration. + +Features: +- The default organization bookmarks in the FHIR server UI have been updated to reflect parent organizations supported by the allow list management application. +- New uniqueness criteria have been implemented for draft Task resources, enforcing unique resources based on identifiers. +- The integrated list of valid media types (CodeSystem urn:ietf:bcp:13) has been updated to reflect all published types by the [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml) and extended with the non standard mimetype `application/x-ndjson`. +- Default trusted root certificate authorities, previously published as part of the install guide resources, have been moved into the docker images. This simplifies the setup for MII/NUM users and still leaves the existing options to set custom CAs. For more details, see the [Default Root Certificates](https://dsf.dev/v1.7.0/maintain/root-certificates.html) page. **Note:** If not explicitly configured, optional connections to the OIDC provider and mail server previously used the default certificate trust store of the Java Virtual Machine (JVM). The new default trusts a limited number of certificate authorities only and thus may need to be manually overridden. +- The docker secrets reader has been extended to also work with environment variables ending in `_SECRET` enabling definition of these values via files. For additional information, see the [Passwords and Secrets](https://dsf.dev/v1.7.0/maintain/passwords-secrets.html) page. + +Bug Fixes: +- Duplicate ActivityDefinition resources (same url and version) prevent processes from being executed in version 1.6.0. If inserts into the FHIR server fail during BPE startup (for example due to read timeouts), duplicate metadata resources like ActivityDefinition from process plugins can be created if the BPE container restarts too fast. Constraint trigger based unique criteria have been implemented for the database in 1.7.0 to prevent duplicate resources. The default transaction isolation level for modifying transactions was changed from "repeatable read" to "read committed", enabling dirty reads needed to allow constraint triggers to see inserts/updates executed by parallel running transactions. Serial execution of constraint triggers is realized by using exclusive transaction level advisory locks before executing the constraint trigger function. + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.7.0](https://github.com/orgs/datasharingframework/packages/container/bpe/341515944?tag=1.7.0) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.7.0](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/341496484?tag=1.7.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.7.0](https://github.com/orgs/datasharingframework/packages/container/fhir/341502917?tag=1.7.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.7.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/341494817?tag=1.7.0) + +Issues closed: +- Extend Secrets Reader for Environment Variables Ending in _SECRET_FILE [#261](https://github.com/datasharingframework/dsf/issues/261) +- Add Default Root CAs to Docker Images [#259](https://github.com/datasharingframework/dsf/issues/259) +- Update CodeSystem urn:ietf:bcp:13 [#256](https://github.com/datasharingframework/dsf/issues/256) +- Upgrade Dependencies maintenance [#253](https://github.com/datasharingframework/dsf/issues/253) +- Update Default Organization Bookmark List [#248](https://github.com/datasharingframework/dsf/issues/248) +- Duplicate ActivityDefinition Resources Prevent Processes From Being Executed [#247](https://github.com/datasharingframework/dsf/issues/247) +- Start New Development Cycle [#245](https://github.com/datasharingframework/dsf/issues/245) + +This release contains contributions from [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.7.1/release-notes.md b/docs/src/operations/v1.7.1/release-notes.md new file mode 100644 index 000000000..b40dd5711 --- /dev/null +++ b/docs/src/operations/v1.7.1/release-notes.md @@ -0,0 +1,38 @@ +--- +title: Release Notes (v1.7.1) +icon: note +--- + +## [Release Notes for v1.7.1](https://github.com/datasharingframework/dsf/releases/tag/v1.7.1) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.7.1 - Maintenance Release +General remarks: + +- This is an update for the 1.x DSF and not compatible with 0.9.x and older versions developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- To Update an existing 1.x installation, please see the [1.x -> 1.7.1 Upgrade Guide](https://dsf.dev/v1.7.1/maintain/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/v1.7.1/maintain/install.html). +- With this release, library dependencies have been updated and among others a bug fixed where the BPE did not connect the websocket on startup. + +Bug Fixes: +- The Subscription `criteria` search parameter was not used with the `:exact` modifier, leading to manually created Subscription resources being overridden on startup if their `criteria` value stared with the same value as one of the standard Subscription resources. The `:exact` modifier is now used in the internal bundle for the standard DSF FHIR Subscription resources. +- The BPE server did not connect the websocket connection for `requested` Task resources, if Task resources downloaded on startup either belonged to processes no longer deployed or included references to FHIR resource no longer available. The error handling of the BPE TaskHandler was improved. In the DSF FHIR server updates to Task resources from status `requested` to `failed` are now allowed and validation rules were improved for Task resource updates with status `failed`. + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.7.1](https://github.com/orgs/datasharingframework/packages/container/bpe/380821506?tag=1.7.1) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.7.1](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/380812987?tag=1.7.1) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.7.1](https://github.com/orgs/datasharingframework/packages/container/fhir/380818455?tag=1.7.1) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.7.1](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/380812518?tag=1.7.1) + +Issues closed: +- Upgrade Dependencies [#287](https://github.com/datasharingframework/dsf/issues/287) +- BPE Websocket Not Connected When In-Progress Update Fails for Old Tasks [#279](https://github.com/datasharingframework/dsf/issues/279) +- Subscription criteria Search Parameter Should Be Used With :exact Modifier [#272](https://github.com/datasharingframework/dsf/issues/272) +- Start New Development Cycle [#266](https://github.com/datasharingframework/dsf/issues/266) +- Modify Documentation Generator to Support SECRET_FILE Environment Variables [#265](https://github.com/datasharingframework/dsf/issues/265) + +This release contains contributions from [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v1.8.0/index.md b/docs/src/operations/v1.8.0/index.md index fab0d102c..2390fd646 100644 --- a/docs/src/operations/v1.8.0/index.md +++ b/docs/src/operations/v1.8.0/index.md @@ -15,4 +15,5 @@ Data Sharing Framework 1.x is the current major release of the Data Sharing Fram ## New features - See [Release Notes](https://github.com/datasharingframework/dsf/releases/tag/v1.8.0) + diff --git a/docs/src/operations/v1.8.0/install.md b/docs/src/operations/v1.8.0/install.md index 68be14e49..cf7cd7eed 100644 --- a/docs/src/operations/v1.8.0/install.md +++ b/docs/src/operations/v1.8.0/install.md @@ -37,6 +37,8 @@ Two Certificates from the GÉANT TCS (via DFN e.V.), D-Trust (via TMF e.V.) or D If you use GÉANT TCS certificates, then they are configured by default with the necessary *X509v3 Extended Key Usage*s: `TLS Web Server Authentication, TLS Web Client Authentication`. +For further details on supported Root Certificate Authorities click [here](root-certificates.html#list-of-default-trusted-certificate-authorities) + ### Network setup / Network access diff --git a/docs/src/operations/v1.8.0/release-notes.md b/docs/src/operations/v1.8.0/release-notes.md new file mode 100644 index 000000000..293051cee --- /dev/null +++ b/docs/src/operations/v1.8.0/release-notes.md @@ -0,0 +1,40 @@ +--- +title: Release Notes (v1.8.0) +icon: note +--- + +## [Release Notes for v1.8.0](https://github.com/datasharingframework/dsf/releases/tag/v1.8.0) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### 1.8.0 - Dependency Upgrades and UI Fixes +General remarks: + +- This is an update for the 1.x DSF and not compatible with 0.9.x and older versions developed at [highmed/highmed-dsf](https://github.com/highmed/highmed-dsf). +- To Update an existing 1.x installation, please see the [1.7.1 -> 1.8.0 Upgrade Guide](https://dsf.dev/operations/v1.8.0/upgrade-from-1.html). +- For a fresh deployment, follow the [installation instructions](https://dsf.dev/operations/v1.8.0/install.html). +- With this release, library dependencies have been updated and small bugs in the UI of the DSF FHIR have been fixed. +- The integrated camunda engine of the DSF BPE server was upgraded to version 7.23, requiring a small change to the database schema of the DSF BPE and thus making this the 1.8.0 and not a 1.7.2 release. + +Bug Fixes: +- Task resources with status `draft` were not correctly rendered if an optional input parameter was not defined in the Task resource ([#306](https://github.com/datasharingframework/dsf/issues/306)). +- Boolean input parameters of Task resource with status `draft`, were not included in the created Task resource with status `requested` if the `false` option was selected ([#323](https://github.com/datasharingframework/dsf/issues/323)). + +Docker containers for this release can be access via the GitHub Docker registry - ghcr.io: +* **bpe**: [ghcr.io/datasharingframework/bpe:1.8.0](https://github.com/orgs/datasharingframework/packages/container/bpe/428297252?tag=1.8.0) +* **bpe_proxy**: [ghcr.io/datasharingframework/bpe_proxy:1.8.0](https://github.com/orgs/datasharingframework/packages/container/bpe_proxy/428292655?tag=1.8.0) +* **fhir**: [ghcr.io/datasharingframework/fhir:1.8.0](https://github.com/orgs/datasharingframework/packages/container/fhir/428294010?tag=1.8.0) +* **fhir_proxy**: [ghcr.io/datasharingframework/fhir_proxy:1.8.0](https://github.com/orgs/datasharingframework/packages/container/fhir_proxy/428292563?tag=1.8.0) + +Issues closed: +- FHIR UI: Task Boolean Input Parameter With Value False Not Included in Created Task [#323](https://github.com/datasharingframework/dsf/issues/323) +- Upgrade Dependencies [#320](https://github.com/datasharingframework/dsf/issues/320) +- Start New Development Cycle [#312](https://github.com/datasharingframework/dsf/issues/312) +- Migrate OSSRH Namespace to Central Portal [#308](https://github.com/datasharingframework/dsf/issues/308) +- Fix Cardinality Handling on Draft Tasks (Templates) with Missing Optional Inputs [#306](https://github.com/datasharingframework/dsf/issues/306) +- Adapt Github Actions to build on pull request [#163](https://github.com/datasharingframework/dsf/issues/163) + +This release contains contributions from [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). + diff --git a/docs/src/operations/v2.0.0-M3/index.md b/docs/src/operations/v2.0.0-M3/index.md index 3014a68f0..50309c206 100644 --- a/docs/src/operations/v2.0.0-M3/index.md +++ b/docs/src/operations/v2.0.0-M3/index.md @@ -1 +1,8 @@ -Coming soon! \ No newline at end of file +## DSF v2.0.0-M3 + +### DSF 2 Dependency Updates: Transitioning from Camunda 7 to Operaton +As part of the upcoming DSF 2 release, several internal dependencies will be updated. Where appropriate, some components will also be replaced with more sustainable alternatives to ensure long-term maintainability and support. + +One significant change involves the replacement of Camunda 7 Community Edition. As its support is scheduled to end in autumn 2025, DSF 2 will be delivered with an alternative BPMN engine. According to the current planning status, this will be [Operaton](https://operaton.org/), an open-source BPMN engine with an active development community. + +For users of DSF 1, a final release will be made available that includes the last supported version of Camunda 7 CE, allowing for continued use without immediate migration. diff --git a/docs/src/posts/2023-05-30-mie-award-2023.md b/docs/src/posts/2023-05-30-mie-award-2023.md new file mode 100644 index 000000000..d9a83dc6d --- /dev/null +++ b/docs/src/posts/2023-05-30-mie-award-2023.md @@ -0,0 +1,18 @@ +--- +title: " Rolf Hansen Memorial Award 2023" +icon: creative +date: 2023-05-30 +type: "news" +excerpt: "Hauke Hund was awarded the 2023 Rolf Hansen Memorial Award at EFMI MIE in Gothenburg for his paper, 'No Transfer Without Validation: A Data Sharing Framework Use Case'. The prestigious award recognizes outstanding research and presentation in medical informatics and honors Rolf Hansen’s legacy." +article: true +category: + - News +tags: + - News + - MIE + - Awards +--- +## Awards + +### Rolf Hansen Memorial Award 2023 goes to [Hauke Hund](https://github.com/hhund) +We are very pleased to have won the Rolf Hansen Memorial Award at [EFMI MIE 2023](https://www.mie23.org/) in Gothenburg. The Rolf Hansen Memorial Award is presented annually by the European Federation for Medical Informatics (EFMI) for an outstanding paper as well as for an excellent presentation. It is named after Rolf Hansen (1931-1993), a well-known Norwegian medical informatician and former president of EFMI. Hauke Hund presented his Paper: *No Transfer Without Validation: A Data Sharing Framework Use Case* in May at the EFMI MIE. [doi:10.3233/SHTI230066 ](https://ebooks.iospress.nl/doi/10.3233/SHTI230066) diff --git a/docs/src/posts/2023-09-29-GMDS2023.md b/docs/src/posts/2023-09-29-GMDS2023.md new file mode 100644 index 000000000..c979cdb0d --- /dev/null +++ b/docs/src/posts/2023-09-29-GMDS2023.md @@ -0,0 +1,23 @@ +--- +title: GMDS 2023 +date: 2023-09-29 +type: "news" +excerpt: "Under the theme 'Science. Close to People', the 68th annual conference of the German Society of Medical Informatics, Biometry and Epidemiology e.V.(GMDS) was held at the Bildungscampus of Heilbronn University of Applied Sciences from 17th to 23 September 2023." +article: true +category: + - News +tags: + - News + - Events + - GMDS +--- + +## GMDS 2023 + +The 68th Annual Conference of the German Society for Medical Informatics, Biometry, and Epidemiology e.V. (GMDS) was held from September 17 to 23 at the Bildungscampus of Heilbronn University of Applied Sciences. It marked the first in-person GMDS conference since 2019, following disruptions caused by the COVID-19 pandemic. The DSF team actively supported the organization of the event. + +Held under the theme "Science. Close to People," the conference brought together leading experts in medical informatics, biometry, and epidemiology. It provided a forum for presenting recent advancements and showcasing innovative tools that foster collaboration and interdisciplinary research. Researchers and professionals had the opportunity to share cutting-edge insights into their work. A total of 227 scientific contributions were submitted to GMDS 2023. + +We were pleased to present insights from our work with the Data Sharing Framework (DSF), sharing lessons learned from its deployment across German university hospitals. Our presentation focused on how the framework, originally developed within the HiGHmed consortium, aims to improve access to real-world patient data for biomedical research. + +Further details about the paper and presentation are available here: [GMDS](https://www.egms.de/static/en/meetings/gmds2023/23gmds007.shtml) diff --git a/docs/src/posts/2024-02-20-miracum-difuture-kolloquium.md b/docs/src/posts/2024-02-20-miracum-difuture-kolloquium.md new file mode 100644 index 000000000..cb3d3e159 --- /dev/null +++ b/docs/src/posts/2024-02-20-miracum-difuture-kolloquium.md @@ -0,0 +1,22 @@ +--- +title: "Miracum Difuture Kolloquium 2024" +date: 2024-02-20 +type: "news" +excerpt: "On February 20, 2024, the DSF team had the opportunity to present the Data Sharing Framework (DSF) Community Project at the MIRACUM-DIFUTURE Colloquium. The session provided insights into the DSF’s architecture, its role within the Medical Informatics Initiative (MII), and how it supports the secure, standardized, and federated sharing of medical research data. The talk included real-world use cases, demonstrated distributed processes, and addressed challenges faced during implementation." +article: true +category: + - News +tags: + - Miracum Difuture Kolloquium + - News + - Events +--- +## Miracum Difuture Kolloquium 2024 + +On February 20, 2024, the DSF team had the opportunity to present the Data Sharing Framework (DSF) Community Project at the MIRACUM-DIFUTURE Colloquium. The aim of the MIRACUM-DIFUTURE Colloquium is to promote knowledge exchange and enable project participants to gain foundational and advanced insights into key topics by having experts present methods, techniques, tools, processes, and frameworks. + +During the presentation, the DSF team highlighted the role of the framework within the Medical Informatics Initiative (MII). The DSF is a federated research data infrastructure developed to support the secondary use of routine medical data. + +The primary goal of the presentation was to provide a foundational understanding of the DSF’s architecture and operational principles. The DSF was conceptualized as a secure middleware based on standardized communication protocols, information models, and widely adopted standards such as HL7 FHIR, BPMN 2.0, and X.509 client and server certificates. In addition, Maximilian Kurscheidt demonstrated distributed data sharing processes and showcased real-world use cases implemented with the DSF. The talk illustrated obstacles and challenges the DSF community had to overcome. + +If you want to check out the presentation slides or listen to the recordings in German visit: [Miracum Difuture Kolloquium](https://sites.google.com/master-bids.de/miracum-difuture-kolloquium/archiv/2024/2024-02-20_data-sharing-framework-community?authuser=0) \ No newline at end of file diff --git a/docs/src/posts/2025-04-23-spring-school-2025.md b/docs/src/posts/2025-04-23-spring-school-2025.md index 8a926e7ff..f573956fb 100644 --- a/docs/src/posts/2025-04-23-spring-school-2025.md +++ b/docs/src/posts/2025-04-23-spring-school-2025.md @@ -3,11 +3,13 @@ title: "Spring School 2025" date: 2025-04-23 type: "news" excerpt: "From April 2nd to 4th, members of the DSF community gathered at Heilbronn University for the annual DSF Spring School 2025. The three-day event provided an in-depth look at the Data Sharing Framework (DSF) and its latest developments, featuring expert talks, hands-on sessions, and collaborative projects during a community-driven hackathon. With vibrant discussions and plenty of memorable moments, the event concluded on a high note. " +article: true category: - News tags: - News - Spring School + - Events --- # Recap of the DSF Spring School 2025 diff --git a/docs/src/posts/2025-05-07-fhir-devdays-2025.md b/docs/src/posts/2025-05-07-fhir-devdays-2025.md index 465555d13..c348071ed 100644 --- a/docs/src/posts/2025-05-07-fhir-devdays-2025.md +++ b/docs/src/posts/2025-05-07-fhir-devdays-2025.md @@ -3,12 +3,14 @@ title: "FHIR DevDays 2025" date: 2025-05-07 type: "news" excerpt: "Our DSF team will be at FHIR DevDays 2025 from June 3rd to 6th in Amsterdam! DevDays is the world’s leading FHIR event in the field of digital health. Join us at the event for engaging community talks by Maximilian Kurscheidt and Hauke Hund. We’ll be discussing the International Patient Summary Challenge 2025, as well as how we can foster research through Real-World Data Sharing and Process Orchestration using FHIR and BPMN. We look forward to seeing you there! If you'd like to connect with us during the event, feel free to arrange a meeting beforehand by emailing us at 📧 dsf-gecko@hs-heilbronn.de." -img: "![FHIR DevDays2025](/photos/news/Devdays-world.png)" +cover: /photos/news/Devdays-world.png +article: true category: - News tags: - FHIR - News + - Events --- # FHIR DevDays 2025 The DSF Team will be attending **FHIR DevDays 2025** from **June 3rd to 6th** in **Amsterdam**! The DevDays is the world’s leading event focused on HL7® FHIR® (Fast Healthcare Interoperability Resources). It’s dedicated to helping participants build expertise and accelerate the global implementation of FHIR standards. We’re excited to be speaking at the event and sharing insights from our work! diff --git a/docs/src/posts/2025-07-04-follow-up-fhir-devdays.md b/docs/src/posts/2025-07-04-follow-up-fhir-devdays.md new file mode 100644 index 000000000..6229b4131 --- /dev/null +++ b/docs/src/posts/2025-07-04-follow-up-fhir-devdays.md @@ -0,0 +1,52 @@ +--- +title: "Follow-up FHIR DevDays 2025" +date: 2025-07-04 +type: "news" +excerpt: "After much anticipation, the DSF team participated at the FHIR DevDays 2025. The Event was held from June 3rd until June 6th in Amsterdam. As the world’s largest event dedicated to HL7 FHIR, DevDays brings together health IT professionals from across the globe to deepen their understanding of the standard, to exchange knowledge, and to explore innovative real-world applications in healthcare!" +img: "![FHIR DevDays2025](/photos/news/Devdays-world.png)" +article: true +category: + - News +tags: + - FHIR + - News + - Events +--- +## Follow-Up on the FHIR Dev Days + +After much anticipation, the DSF team participated at the FHIR DevDays 2025. The event was held from June 3rd until June 6th in Amsterdam. As the world’s largest event dedicated to HL7 FHIR, DevDays brings together health IT professionals from across the globe to deepen their understanding of the standard, to exchange knowledge, and to explore innovative real-world applications in healthcare. The event offered us a valuable opportunity to share our insights and lessons learned from implementing and working with FHIR in various contexts such as the DSF and the International Patient Summary (IPS). + +![FHIR DevDays2025](/photos/news/Devdays-world.png) + +### Community Talk: Fostering Research with FHIR and BPMN + +On the last day of the conference, Hauke Hund presented lesson learned from the DSF in his talk “Fostering Research: Real-World Data Sharing and Process Orchestration with FHIR and BPMN”. In this session, Hauke shared valuable lessons learned from the implementation, rollout, and maintenance of different DSF networks. The talk illustrated how combining **FHIR** with Business Process Model and Notation (**BPMN** 2.0) enables secure, automated, scalable sharing of real-world research data across institutional boundaries. + +**Slides from this talk can be viewed here: [Fostering Research with FHIR and BPMN](/assets/presentations/250606_HaukeHund_DataSharingFramework_fsh.pdf)** + + +### Birds of a Feather Session: FHIR and Terminology Validation + +On Thursday, we hosted a spontaneous deep-dive session on FHIR and terminology validation, which proved to be a great success, sparking lively discussions and active engagement among participants. With over 70 registrations and 35 attendees, the session underscored the significance of this topic within the FHIR community. + +The session explored how terminology validation can be integrated into current workflows and it shed light on common challenges and limitations of existing FHIR validators. The dicsussion also included ideas for future improvements and their potential for wider adoption of FHIR validation tools. + +This session served as a valuable preparation for the upcoming MII validation workshop. **If you're interested, you can find more information here in german: [FHIR Validation Workshop](https://www.tmf-ev.de/news/fhir-validierungs-workshop-bei-der-tmf)** + +**Following the event, the DSF Validator was published and is available at: [DSF FHIR Validator](https://github.com/datasharingframework/dsf-fhir-validator)** + + +### Community Talk: International Patient Summary (IPS) Challenge 2025 + +On Tuesday, we hosted a community talk focused on the International Patient Summary (IPS) Challenge 2025. The IPS is a standardized set of clinical data that provides a concise overview of a patient’s current health status. As part of the challenge, students from Heilbronn University and the Universidad de Chile collaborated to implement and demonstrate IPS-based use cases. + +Participants in the challenge had the opportunity to present their work at the HL7 Chile Connectathon. The FHIR Implementation Guide (IG) was used as the basis for five demonstrators. The use cases focused on providing medical summaries for patients with conditions such as hypertension, food intolerance, post-surgical history, diabetes, and asthma, with a particular focus on cross-border care scenarios + +Maximilian Kurscheidt shared our insights and lessons learned from this initiative. Topics included challenges in cross-border IPS data exchange, effective visualization of longitudinal health records, and the complexities of translating FHIR resources and medical terminologies across languages and systems. The talk also addressed handling medical imaging within the IPS and compared general-purpose IPS viewers with use case-specific applications. + +**Slides from this talk can be viewed here: [International Patient Summary Challenge 2025](/assets/presentations/250603_maximiliankurscheidt_ips_challenge.pdf)** + +FHIR DevDays 2025 was an excellent opportunity to showcase our work, gain valuable insights, and engage with the global FHIR community. We extend our sincere thanks to the organizers and to everyone who participated in our talks and discussions. We truly appreciated the chance to connect with fellow experts and look forward to continuing the dialogue on interoperability, research, and innovation in digital health innovation. + +FHIR +Group picture of german participants on FHIR DEVDays. Great to meet such a thriving active community! Photo by Simone Heckmann. \ No newline at end of file diff --git a/docs/src/posts/2025-07-28-dsfv2-announcement.md b/docs/src/posts/2025-07-28-dsfv2-announcement.md new file mode 100644 index 000000000..a9321f0f6 --- /dev/null +++ b/docs/src/posts/2025-07-28-dsfv2-announcement.md @@ -0,0 +1,35 @@ +--- +title: "DSF 2.0 Announcement" +date: 2025-07-28 +type: "news" +excerpt: "We’re excited to announce that the next major release, DSF 2.0, is currently in development! This update brings significant improvements and new features designed to enhance performance and usability. In this article is a summary of what to expect in the upcoming release." +article: true +category: + - News +tags: + - News + - DSF v2 +--- + +## Realease Strategy for the Data Sharing Framework + +The following outlines the current release strategy for the Data Sharing Framework (DSF) and provides an overview of planned developments. + +The next major version, **DSF 2**, is currently under active development. A central element of this release is a revised API for process plugins, designed to simplify and accelerate the development of custom plugins for individual use cases. + +According to the current development status, **DSF 2 will remain backwards compatible with DSF 1**. Existing process plugins are expected to continue functioning, and compatibility with current DSF versions is intended. + +In addition to the new API, DSF 2 will include a range of enhancements: + +* Upgrade to the latest versions of Java, Jetty, Spring, HAPI, and other core dependencies +* Support for large binary resources (currently tested with files of approx. 250GiB) +* Improved and streamlined process plugin API +* Numerous internal optimizations for increased performance and stability (including improved logging and simplified configuration of external FHIR servers) + +A **test release of DSF 2** is scheduled for fall of this year, with **general availability for production use** planned by the end of the year. A milestone release is already available for preview purposes; however, both the API and feature set are subject to change prior to the final release. + +Following the production release of DSF 2, further development of DSF 1 will be discontinued. Until then, at least one additional DSF 1 release is planned. + +The new API V2 is particularly relevant for stakeholders involved in the development of custom process plugins. Feedback and contributions to the ongoing development are welcome. + +Any changes to the current timeline will be communicated promptly. Upcomming datails will be available under [Operations](../operations/v2.0.0-M3/index.md). \ No newline at end of file diff --git a/docs/src/process-development/api-v1/concept.md b/docs/src/process-development/api-v1/concept.md index 426420d67..f983d5e66 100644 --- a/docs/src/process-development/api-v1/concept.md +++ b/docs/src/process-development/api-v1/concept.md @@ -3,11 +3,6 @@ title: Concepts icon: info --- -::: warning Work in progress - -This site is work in progress, please come back later. -::: - ## BPMN - [Conditions](bpmn/conditions.md) - [Gateways](bpmn/gateways.md) diff --git a/docs/src/process-development/api-v1/get-started.md b/docs/src/process-development/api-v1/get-started.md index 28c53ecb6..c6b0f7f8b 100644 --- a/docs/src/process-development/api-v1/get-started.md +++ b/docs/src/process-development/api-v1/get-started.md @@ -9,3 +9,22 @@ icon: edit This site is work in progress, please come back later. ::: + +## Concepts +For an overview of key concepts related to Process Plugin development, please refer to [this page](concept.md) + +## Tutorials +Our collection of tutorials is designed to help you get started and deepen your understanding of Process Plugin development. + +Explore the tutorials below to begin your journey into Process Plugin development: +- [Tutorial Overview](./tutorials/README.md) +- The [DSF Process Plugin Tutorial](https://github.com/datasharingframework/dsf-process-tutorial) +- The [hello world plugin](https://github.com/datasharingframework/dsf-process-hello-world) +- The [ping pong plugin](https://github.com/datasharingframework/dsf-process-ping-pong) +- The [update allowlist plugin](https://github.com/datasharingframework/dsf-process-allow-list) + + + +::: tip Important Note +If you have any questions or encounter any issues, please do not hesitate to contact us during our designated consulting hours. You can find the details [here](../../community/consultation-hours) +::: \ No newline at end of file diff --git a/docs/src/process-development/api-v1/publishing/publish-on-dsfhub.md b/docs/src/process-development/api-v1/publishing/publish-on-dsfhub.md index 06d62153d..441daf53b 100644 --- a/docs/src/process-development/api-v1/publishing/publish-on-dsfhub.md +++ b/docs/src/process-development/api-v1/publishing/publish-on-dsfhub.md @@ -3,7 +3,7 @@ title: Publishing on DSF Hub icon: share --- -::: tip Marketplace for process plugins +::: info Marketplace for process plugins To view already published Process Plugins, visit the [DSF Hub](https://hub.dsf.dev). ::: diff --git a/docs/src/process-development/api-v1/tooling/README.md b/docs/src/process-development/api-v1/tooling/README.md index 031086e21..88e246da3 100644 --- a/docs/src/process-development/api-v1/tooling/README.md +++ b/docs/src/process-development/api-v1/tooling/README.md @@ -1,10 +1,7 @@ --- -title: Tooling +title: Process Plugin Dev Tools icon: operate --- -## Process plugin tutorials -::: warning Work in progress - -This site is work in progress, please come back later. -::: \ No newline at end of file +## Process Plugin Dev Tools +- [ DSF Process Plugin Validator](validator.md) \ No newline at end of file diff --git a/docs/src/process-development/api-v1/tooling/validator.md b/docs/src/process-development/api-v1/tooling/validator.md index a23b77569..8605181b4 100644 --- a/docs/src/process-development/api-v1/tooling/validator.md +++ b/docs/src/process-development/api-v1/tooling/validator.md @@ -1,11 +1,234 @@ --- -title: DSF Validator -icon: share +title: Process Plugin Validator +icon: operate --- +# DSF Process Plugin Validator v 1.3.0 -## DSF Validator +## 1  Introduction -::: warning Work in progress +The **DSF Validator** is a quality‑assurance tool for Digital Sample Framework (DSF) process plugins. Version **1.3.0** extends the 1.2.0 release by adding  + +* a dedicated **FHIR *Task* validator** for the base profile `dsf-task-base`, +* a **StructureDefinition validator** with slice‑aware cardinality checks,  +* enhanced terminology look‑ups via **FhirAuthorizationCache**, and +* a streamlined **CLI & Maven plugin** that share the same validation core. + +The validator now supports end‑to‑end consistency checks across BPMN models and all core FHIR artefacts used in the DSF platform. It targets **Java 21** and can be embedded in CI/CD pipelines, local project builds, or executed as a standalone JAR. + + +## 2  Project Overview + +| Component | Purpose | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **BPMN analysis** | Verifies Camunda‑compatible workflows (tasks, events, gateways, multi‑instance sub‑processes, field injections). | +| **FHIR analysis** | Validates XML/JSON resources against DSF profiles (ActivityDefinition, CodeSystem, Questionnaire, Task, ValueSet, *Task (base)*, StructureDefinition). | +| **Aggregator** | `FhirInstanceValidatorAggregator` discovers concrete validators and produces a single `ValidationOutput`. | +| **Authorization cache** | `FhirAuthorizationCache` holds all known DSF `CodeSystem` codes in a thread‑safe map for high‑performance terminology look‑ups. | +| **Report generator** | Writes structured JSON reports under `report/` (CLI) or `target/dsf-validation-reports/` (Maven plugin). | + +Camunda models are parsed with the **Camunda BPMN Model API** ([github.com](https://github.com/camunda/camunda-bpm-platform/blob/master/model-api/bpmn-model/README.asciidoc?utm_source=chatgpt.com)), while FHIR resources are processed via standard DOM/XPath and validated by custom DSF-specific validators augmented by DSF‑specific rule sets. + + + +## 3  Validation Scope + +### 3.1 BPMN Model Validation (module `validator‑core`) + +| Validator | BPMN elements inspected | Key DSF rules enforced | +| ----------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `BpmnTaskValidator` | `ServiceTask`, `UserTask`, `SendTask`, `ReceiveTask` | \* camunda\:class/expression must reference a Java class implementing `JavaDelegate`.
\* Field injections validated against DSF profiles (`profile`, `message-name`, `instantiatesCanonical`).
\* `UserTask → camunda:formKey` must resolve to an existing `Questionnaire` file. | +| `BpmnEventValidator` | `StartEvent`, `EndEvent`, `IntermediateCatch`, `ThrowEvent`, `BoundaryEvent` | \* Message events require a non‑blank `` and `` pointing to an `ActivityDefinition.url`.
\* Timer/signal events: ISO‑8601 expressions and registered signal definitions. | +| `BpmnGatewayAndFlowValidator` | `ExclusiveGateway`, `EventBasedGateway`, `SequenceFlow` | \* Exclusive gateways: every outgoing `SequenceFlow` needs `name + conditionExpression`.
\* Event‑based gateways: exactly one incoming flow; only allowed outgoing event types. | +| `BpmnFieldInjectionValidator` | Camunda `` | \* `profile` must reference a `StructureDefinition` in `src/main/resources/fhir/StructureDefinition`.
\* `message-name` must exist as an `input` slice in a `Task`.
\* `instantiatesCanonical` must match an existing `ActivityDefinition`. | | -------------------------------------------------------------------------------------------------------------------------- | +| `BpmnSubProcessValidator` | `SubProcess` (+ `MultiInstanceLoopCharacteristics`) | • Requires `camunda:asyncBefore="true"` for multi-instance subprocesses. • Checks loop cardinality and clean termination. | + +### 3.2 FHIR Resource Validation (module `validator‑core`) + +| DSF Profile & Class | Mandatory elements | DSF‑specific checks | Shared checks | +| ----------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- | +| **ActivityDefinition 1.0.0**  `FhirActivityDefinitionValidator` | `url`, `status="unknown"`, `kind="Task"` | \* First `meta.tag` = system `…/read-access-tag`, code `ALL`.
\* `extension-process-authorization`: every requester/recipient coding must be known to the authorization cache. | Placeholder enforcement (`#{version}`, `#{date}`) | +| **CodeSystem 1.0.0**  `FhirCodeSystemValidator` | `url`, `name`, `title`, `publisher`, `content`, `caseSensitive` | \* `status="unknown"`.
\* `url` must start with `http://dsf.dev/fhir/CodeSystem/`.
\* All `concept.code` values unique; each concept needs `code + display`. | Placeholder enforcement; read‑access tag | +| **Questionnaire 1.5.0**  `FhirQuestionnaireValidator` | `meta.profile`, `url`, `version`, `date`, `status` | \* Mandatory items `business-key` & `user-task-id` (type string, `required=true`).
\* Ensures unique `linkId`; warns on non‑conformant patterns. | Placeholder enforcement; read‑access tag | +| **Task 1.0.0**  `FhirTaskValidator` | `id`, `instantiatesCanonical`, `intent`, `status` | \* Required `input` slices `message-name`, `business-key`; optional `correlation-key`.
\* Duplicate `input` slices detected via `Map` counter.
\* Output slice rules: if `status=failed` → must contain `error` slice. | Placeholder enforcement (`#{date}`, `#{organization}`); terminology look‑ups via the authorization cache | +| **ValueSet 1.0.0**  `FhirValueSetValidator` | `url`, `name`, `title`, `publisher`, `description` | \* Enforces read‑access tag.
\* `compose.include`: each `system` present; `concept.code` non‑blank and known.
\* Flags duplicate concepts within the same `include` block. | Placeholder enforcement (`#{version}`, `#{date}`) | +| **StructureDefinition 1.0.0**  `FhirStructureDefinitionValidator`
(**NEW in v1.3.0**) | `meta.profile`, `differential`, `url` | \* Must contain `meta.tag` & `meta.profile`.
\* `version` and `date` fields require `#{version}` / `#{date}` placeholders.
\* No `snapshot` allowed; all element `@id`s unique.
\* **Slice cardinality**: min/max constraints are verified for each slice using rules from FHIR §5.1.0.14 ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)). | Placeholder enforcement; read‑access tag | + +### 3.3 Cross‑resource Consistency + +*The validator resolves every `` to its canonical URL and verifies that a corresponding `ActivityDefinition.url` exists. Field injections (`profile`, `message-name`, `instantiatesCanonical`) are likewise cross-checked against the available FHIR artefacts to ensure that referenced canonicals exist. **Slice-level conformity to the referenced `StructureDefinition` is not evaluated.*** + + +## 4  Validation Approach + +1. **File discovery** – Recursively searches for either full Maven-style paths (e.g., `src/main/resources/bpe`) or flat folder names (e.g., `bpe`). Supports both Maven projects and unpacked JARs in CI. +2. **BPMN pass** – Camunda Model API parses the model; validators run sequentially. +3. **FHIR pass** – XML/JSON files stream through `FhirInstanceValidatorAggregator`, which delegates to each concrete validator. +4. **Slice cardinality checks** – For every `StructureDefinition`, the validator loads min/max values of the base and sliced elements and enforces them according to FHIR profiling rules §5.1.0.14 ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)). +5. **Terminology** – `FhirAuthorizationCache` accelerates terminology look-ups (read-access tags, concept codes). Authorization checks for requester/recipient organisations rely on these look-ups at run time but are not cached.* +6. **Output generation** – All validation items are collected, sorted, and written to JSON reports. + + + +## 5  Implementation & Components + +``` +validator-core + ├─ BpmnModelValidator + │ ├─ BpmnEventValidator + │ ├─ BpmnGatewayAndFlowValidator + │ ├─ BpmnTaskValidator + │ ├─ BpmnFieldInjectionValidator + │ └─ BpmnSubProcessValidator + ├─ AbstractFhirInstanceValidator (base class) + │ ├─ FhirActivityDefinitionValidator + │ ├─ FhirCodeSystemValidator + │ ├─ FhirQuestionnaireValidator + │ ├─ FhirTaskValidator + │ ├─ FhirValueSetValidator + │ ├─ FhirStructureDefinitionValidator ← NEW + ├─ FhirResourceValidator + ├─ FhirInstanceValidatorAggregator + ├─ FhirAuthorizationCache + ├─ ValidationOutput (print + JSON export) + ├─ ReportCleaner + ├─ ApiVersionDetector / ApiVersionHolder + ├─ MavenBuilder + └─ DsfValidatorImpl +validator-cli + └─ Main (Picocli CLI entry point) +validator-maven-plugin + └─ ValidateMojo (goal bound to *verify* phase) +``` + + + +## 6  Build System & Dependencies + +* **Apache Maven** – multi‑module build (`dsf-validator`, `validator-core`, `validator-api`, `validator-cli`). +* **Java 21** target, **Byte Buddy** for test instrumentation. +* External libraries: Camunda BPMN Model API ([github.com](https://github.com/camunda/camunda-bpm-platform/blob/master/model-api/bpmn-model/README.asciidoc?utm_source=chatgpt.com)), **Picocli**, **JGit**, **Jackson**, **JUnit 5**, **Mockito**. + + + + +## 7 Running the Validator + +The DSF Validator supports multiple execution environments: + +| **Scenario** | **Command / Configuration** | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **CLI – local folder** | `java -jar dsf-validator-1.3.0.jar --localPath /path/to/project` | +| **CLI – remote Git repo** | `java -jar dsf-validator-1.3.0.jar --remoteRepo https://gitlab.com/org/repo.git` | +| **Maven (one-shot)** | `mvn dev.dsf.utils.validator:validator-maven-plugin:verify` | +| **Maven (POM snippet)** | `xml

dev.dsf.utils.validator
validator-maven-plugin
1.2


verify
verify


` | +| **CI Pipeline (GitLab)** | See below – fully automated GitLab CI validation pipeline using containerized validator image | + +--- + +### Maven Plugin Features + +* Runs during `verify`, `compile`, or `install` phase. +* Validates BPMN models (`src/main/resources/bpe`) and FHIR resources (`src/main/resources/fhir`). +* Reports are written to: + `target/dsf-validation-reports/` + +**Example Output Structure:** + +``` +target/dsf-validation-reports/ +├── bpmnReports/ +│ ├── success/ +│ ├── other/ +│ └── bpmn_issues_aggregated.json +├── fhirReports/ +│ ├── success/ +│ ├── other/ +│ └── fhir_issues_aggregated.json +└── aggregated.json +``` +The validator automatically runs +`mvn clean package dependency:copy-dependencies` before analysis. + +--- + +### GitLab CI Pipeline Features + +The DSF validation pipeline enables automated quality checks of submitted plugins using Dockerized jobs. + +#### **Pipeline Overview** + +```yaml +# Example job in .gitlab-ci.yml +analyze-dsf-validator: + stage: analyze + image: + name: registry.it.hs-heilbronn.de/dsf/qs/hub-qa-pipeline/dsf-validator:1.2-3 + entrypoint: [""] + dependencies: [build1] + script: + - java -jar /opt/validator/validator.jar --localPath output + - mkdir -p "$CI_PROJECT_DIR/reports/dsf-validator" + - cp -r report/* "$CI_PROJECT_DIR/reports/dsf-validator/" || true +``` + +#### **Features** + +* **Input:** Validated plugin is extracted from the submitted JAR. +* **Execution flow:** + + * `build1` stage prepares the plugin. + * `analyze-dsf-validator` performs static validation of BPMN and FHIR resources. + * `collect-reports` aggregates results from all analyzers into `final-reports/`. + +#### **Outputs** + +All JSON-formatted validation results are stored as GitLab artifacts under: + +``` +final-reports/ +└── dsf-validator/ + ├── bpmnReports/ + ├── fhirReports/ + └── aggregated.json +``` + +#### **Requirements** + +* Internet access (for downloading dependencies and validator image) +* Maven-compatible environment +* Container image: + `registry.it.hs-heilbronn.de/dsf/qs/hub-qa-pipeline/dsf-validator:1.2-3` + + +--- + +## 8  Data Processing & Storage + +Validation items are materialised as `BpmnElementValidationItem` or `FhirElementValidationItem` and serialised to JSON. The **top‑level `aggregated.json`** summarises overall status (`ERROR` / `WARN` / `INFO` / `SUCCESS`). + + +## 9  Execution Workflow + +1. **RepositoryManager** clones remote sources if requested. +2. **MavenBuilder** compiles the project. +3. **BpmnModelValidator** & **FhirInstanceValidatorAggregator** perform analysis. +4. **ReportCleaner** purges previous results; writers store fresh reports. +5. **ApiVersionDetector** prints the detected DSF BPE API version (v1 or v2). + + +## 10  Expected Output + +* **Errors** – fatal; block deployment. +* **Warnings** – non‑fatal but may break runtime paths. +* **Info** – best‑practice hints (e.g. missing `display` in `CodeSystem.concept`). + +Developers review `report/aggregated.json` or per‑file reports under `success/` and `other/`. + +## 11  Conclusion + +Version **1.3.0** turns the DSF Validator into a *profile‑aware* verification tool: + +* It validates every BPMN construct and all core FHIR artefacts *plus* the DSF‑specific `dsf-task-base` profile and StructureDefinitions. +* It caches authorised `CodeSystem` codes, enforces slice cardinalities ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)), and guards core metadata placeholders. +* It can be launched via an intuitive CLI or a zero‑configuration Maven plugin, making it an early quality gate that helps DSF process authors catch structural, semantic, and interoperability issues long before deployment. -This site is work in progress, please come back later. -::: \ No newline at end of file diff --git a/docs/src/process-development/api-v1/tutorials/README.md b/docs/src/process-development/api-v1/tutorials/README.md index 9af2d0ca8..0a7bc9211 100644 --- a/docs/src/process-development/api-v1/tutorials/README.md +++ b/docs/src/process-development/api-v1/tutorials/README.md @@ -2,10 +2,10 @@ title: Tutorials icon: slides --- - ## Process plugin tutorials -Visit the [how the DSF can help you](../../../explore/concepts/README.md) page to get started. +- Visit the [how the DSF can help you](../../../explore/concepts/README.md) page to get started. +- Begin with the [DSF Process Plugin Tutorial](https://github.com/datasharingframework/dsf-process-tutorial) to access the most recent tutorial on GitHub. ::: tip Work in progress We are currently in the process of updating the written documentation on how to create a DSF process plugin. diff --git a/docs/src/process-development/api-v2/README.md b/docs/src/process-development/api-v2/README.md index 24fc603c0..40f3fdb73 100644 --- a/docs/src/process-development/api-v2/README.md +++ b/docs/src/process-development/api-v2/README.md @@ -3,6 +3,6 @@ title: API v2 icon: code --- ## Overview -- [About API2](description) +- [About API2](get-started) - [Implementation Guide](implementation) - [Migration Guide](migration) \ No newline at end of file diff --git a/docs/src/process-development/api-v2/concept.md b/docs/src/process-development/api-v2/concept.md index 76b9a46c6..f983d5e66 100644 --- a/docs/src/process-development/api-v2/concept.md +++ b/docs/src/process-development/api-v2/concept.md @@ -3,12 +3,6 @@ title: Concepts icon: info --- - -::: warning Work in progress - Outdated Content - -This site is work in progress, please come back later. -::: - ## BPMN - [Conditions](bpmn/conditions.md) - [Gateways](bpmn/gateways.md) diff --git a/docs/src/process-development/api-v2/tooling/README.md b/docs/src/process-development/api-v2/tooling/README.md index 8e02f9852..88e246da3 100644 --- a/docs/src/process-development/api-v2/tooling/README.md +++ b/docs/src/process-development/api-v2/tooling/README.md @@ -1,10 +1,7 @@ --- -title: Tooling +title: Process Plugin Dev Tools icon: operate --- -## Process plugin tutorials -::: warning Work in progress - -This site is work in progress, please come back later. -::: +## Process Plugin Dev Tools +- [ DSF Process Plugin Validator](validator.md) \ No newline at end of file diff --git a/docs/src/process-development/api-v2/tooling/validator.md b/docs/src/process-development/api-v2/tooling/validator.md index 95c400cf4..8605181b4 100644 --- a/docs/src/process-development/api-v2/tooling/validator.md +++ b/docs/src/process-development/api-v2/tooling/validator.md @@ -1,13 +1,234 @@ --- -title: DSF Validator -icon: share +title: Process Plugin Validator +icon: operate --- +# DSF Process Plugin Validator v 1.3.0 -## DSF Validator +## 1  Introduction -::: warning Work in progress +The **DSF Validator** is a quality‑assurance tool for Digital Sample Framework (DSF) process plugins. Version **1.3.0** extends the 1.2.0 release by adding  -This site is work in progress, please come back later. -::: +* a dedicated **FHIR *Task* validator** for the base profile `dsf-task-base`, +* a **StructureDefinition validator** with slice‑aware cardinality checks,  +* enhanced terminology look‑ups via **FhirAuthorizationCache**, and +* a streamlined **CLI & Maven plugin** that share the same validation core. + +The validator now supports end‑to‑end consistency checks across BPMN models and all core FHIR artefacts used in the DSF platform. It targets **Java 21** and can be embedded in CI/CD pipelines, local project builds, or executed as a standalone JAR. + + +## 2  Project Overview + +| Component | Purpose | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **BPMN analysis** | Verifies Camunda‑compatible workflows (tasks, events, gateways, multi‑instance sub‑processes, field injections). | +| **FHIR analysis** | Validates XML/JSON resources against DSF profiles (ActivityDefinition, CodeSystem, Questionnaire, Task, ValueSet, *Task (base)*, StructureDefinition). | +| **Aggregator** | `FhirInstanceValidatorAggregator` discovers concrete validators and produces a single `ValidationOutput`. | +| **Authorization cache** | `FhirAuthorizationCache` holds all known DSF `CodeSystem` codes in a thread‑safe map for high‑performance terminology look‑ups. | +| **Report generator** | Writes structured JSON reports under `report/` (CLI) or `target/dsf-validation-reports/` (Maven plugin). | + +Camunda models are parsed with the **Camunda BPMN Model API** ([github.com](https://github.com/camunda/camunda-bpm-platform/blob/master/model-api/bpmn-model/README.asciidoc?utm_source=chatgpt.com)), while FHIR resources are processed via standard DOM/XPath and validated by custom DSF-specific validators augmented by DSF‑specific rule sets. + + + +## 3  Validation Scope + +### 3.1 BPMN Model Validation (module `validator‑core`) + +| Validator | BPMN elements inspected | Key DSF rules enforced | +| ----------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `BpmnTaskValidator` | `ServiceTask`, `UserTask`, `SendTask`, `ReceiveTask` | \* camunda\:class/expression must reference a Java class implementing `JavaDelegate`.
\* Field injections validated against DSF profiles (`profile`, `message-name`, `instantiatesCanonical`).
\* `UserTask → camunda:formKey` must resolve to an existing `Questionnaire` file. | +| `BpmnEventValidator` | `StartEvent`, `EndEvent`, `IntermediateCatch`, `ThrowEvent`, `BoundaryEvent` | \* Message events require a non‑blank `` and `` pointing to an `ActivityDefinition.url`.
\* Timer/signal events: ISO‑8601 expressions and registered signal definitions. | +| `BpmnGatewayAndFlowValidator` | `ExclusiveGateway`, `EventBasedGateway`, `SequenceFlow` | \* Exclusive gateways: every outgoing `SequenceFlow` needs `name + conditionExpression`.
\* Event‑based gateways: exactly one incoming flow; only allowed outgoing event types. | +| `BpmnFieldInjectionValidator` | Camunda `` | \* `profile` must reference a `StructureDefinition` in `src/main/resources/fhir/StructureDefinition`.
\* `message-name` must exist as an `input` slice in a `Task`.
\* `instantiatesCanonical` must match an existing `ActivityDefinition`. | | -------------------------------------------------------------------------------------------------------------------------- | +| `BpmnSubProcessValidator` | `SubProcess` (+ `MultiInstanceLoopCharacteristics`) | • Requires `camunda:asyncBefore="true"` for multi-instance subprocesses. • Checks loop cardinality and clean termination. | + +### 3.2 FHIR Resource Validation (module `validator‑core`) + +| DSF Profile & Class | Mandatory elements | DSF‑specific checks | Shared checks | +| ----------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- | +| **ActivityDefinition 1.0.0**  `FhirActivityDefinitionValidator` | `url`, `status="unknown"`, `kind="Task"` | \* First `meta.tag` = system `…/read-access-tag`, code `ALL`.
\* `extension-process-authorization`: every requester/recipient coding must be known to the authorization cache. | Placeholder enforcement (`#{version}`, `#{date}`) | +| **CodeSystem 1.0.0**  `FhirCodeSystemValidator` | `url`, `name`, `title`, `publisher`, `content`, `caseSensitive` | \* `status="unknown"`.
\* `url` must start with `http://dsf.dev/fhir/CodeSystem/`.
\* All `concept.code` values unique; each concept needs `code + display`. | Placeholder enforcement; read‑access tag | +| **Questionnaire 1.5.0**  `FhirQuestionnaireValidator` | `meta.profile`, `url`, `version`, `date`, `status` | \* Mandatory items `business-key` & `user-task-id` (type string, `required=true`).
\* Ensures unique `linkId`; warns on non‑conformant patterns. | Placeholder enforcement; read‑access tag | +| **Task 1.0.0**  `FhirTaskValidator` | `id`, `instantiatesCanonical`, `intent`, `status` | \* Required `input` slices `message-name`, `business-key`; optional `correlation-key`.
\* Duplicate `input` slices detected via `Map` counter.
\* Output slice rules: if `status=failed` → must contain `error` slice. | Placeholder enforcement (`#{date}`, `#{organization}`); terminology look‑ups via the authorization cache | +| **ValueSet 1.0.0**  `FhirValueSetValidator` | `url`, `name`, `title`, `publisher`, `description` | \* Enforces read‑access tag.
\* `compose.include`: each `system` present; `concept.code` non‑blank and known.
\* Flags duplicate concepts within the same `include` block. | Placeholder enforcement (`#{version}`, `#{date}`) | +| **StructureDefinition 1.0.0**  `FhirStructureDefinitionValidator`
(**NEW in v1.3.0**) | `meta.profile`, `differential`, `url` | \* Must contain `meta.tag` & `meta.profile`.
\* `version` and `date` fields require `#{version}` / `#{date}` placeholders.
\* No `snapshot` allowed; all element `@id`s unique.
\* **Slice cardinality**: min/max constraints are verified for each slice using rules from FHIR §5.1.0.14 ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)). | Placeholder enforcement; read‑access tag | + +### 3.3 Cross‑resource Consistency + +*The validator resolves every `` to its canonical URL and verifies that a corresponding `ActivityDefinition.url` exists. Field injections (`profile`, `message-name`, `instantiatesCanonical`) are likewise cross-checked against the available FHIR artefacts to ensure that referenced canonicals exist. **Slice-level conformity to the referenced `StructureDefinition` is not evaluated.*** + + +## 4  Validation Approach + +1. **File discovery** – Recursively searches for either full Maven-style paths (e.g., `src/main/resources/bpe`) or flat folder names (e.g., `bpe`). Supports both Maven projects and unpacked JARs in CI. +2. **BPMN pass** – Camunda Model API parses the model; validators run sequentially. +3. **FHIR pass** – XML/JSON files stream through `FhirInstanceValidatorAggregator`, which delegates to each concrete validator. +4. **Slice cardinality checks** – For every `StructureDefinition`, the validator loads min/max values of the base and sliced elements and enforces them according to FHIR profiling rules §5.1.0.14 ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)). +5. **Terminology** – `FhirAuthorizationCache` accelerates terminology look-ups (read-access tags, concept codes). Authorization checks for requester/recipient organisations rely on these look-ups at run time but are not cached.* +6. **Output generation** – All validation items are collected, sorted, and written to JSON reports. + + + +## 5  Implementation & Components + +``` +validator-core + ├─ BpmnModelValidator + │ ├─ BpmnEventValidator + │ ├─ BpmnGatewayAndFlowValidator + │ ├─ BpmnTaskValidator + │ ├─ BpmnFieldInjectionValidator + │ └─ BpmnSubProcessValidator + ├─ AbstractFhirInstanceValidator (base class) + │ ├─ FhirActivityDefinitionValidator + │ ├─ FhirCodeSystemValidator + │ ├─ FhirQuestionnaireValidator + │ ├─ FhirTaskValidator + │ ├─ FhirValueSetValidator + │ ├─ FhirStructureDefinitionValidator ← NEW + ├─ FhirResourceValidator + ├─ FhirInstanceValidatorAggregator + ├─ FhirAuthorizationCache + ├─ ValidationOutput (print + JSON export) + ├─ ReportCleaner + ├─ ApiVersionDetector / ApiVersionHolder + ├─ MavenBuilder + └─ DsfValidatorImpl +validator-cli + └─ Main (Picocli CLI entry point) +validator-maven-plugin + └─ ValidateMojo (goal bound to *verify* phase) +``` + + + +## 6  Build System & Dependencies + +* **Apache Maven** – multi‑module build (`dsf-validator`, `validator-core`, `validator-api`, `validator-cli`). +* **Java 21** target, **Byte Buddy** for test instrumentation. +* External libraries: Camunda BPMN Model API ([github.com](https://github.com/camunda/camunda-bpm-platform/blob/master/model-api/bpmn-model/README.asciidoc?utm_source=chatgpt.com)), **Picocli**, **JGit**, **Jackson**, **JUnit 5**, **Mockito**. + + + + +## 7 Running the Validator + +The DSF Validator supports multiple execution environments: + +| **Scenario** | **Command / Configuration** | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **CLI – local folder** | `java -jar dsf-validator-1.3.0.jar --localPath /path/to/project` | +| **CLI – remote Git repo** | `java -jar dsf-validator-1.3.0.jar --remoteRepo https://gitlab.com/org/repo.git` | +| **Maven (one-shot)** | `mvn dev.dsf.utils.validator:validator-maven-plugin:verify` | +| **Maven (POM snippet)** | `xml

dev.dsf.utils.validator
validator-maven-plugin
1.2


verify
verify


` | +| **CI Pipeline (GitLab)** | See below – fully automated GitLab CI validation pipeline using containerized validator image | + +--- + +### Maven Plugin Features + +* Runs during `verify`, `compile`, or `install` phase. +* Validates BPMN models (`src/main/resources/bpe`) and FHIR resources (`src/main/resources/fhir`). +* Reports are written to: + `target/dsf-validation-reports/` + +**Example Output Structure:** + +``` +target/dsf-validation-reports/ +├── bpmnReports/ +│ ├── success/ +│ ├── other/ +│ └── bpmn_issues_aggregated.json +├── fhirReports/ +│ ├── success/ +│ ├── other/ +│ └── fhir_issues_aggregated.json +└── aggregated.json +``` +The validator automatically runs +`mvn clean package dependency:copy-dependencies` before analysis. + +--- + +### GitLab CI Pipeline Features + +The DSF validation pipeline enables automated quality checks of submitted plugins using Dockerized jobs. + +#### **Pipeline Overview** + +```yaml +# Example job in .gitlab-ci.yml +analyze-dsf-validator: + stage: analyze + image: + name: registry.it.hs-heilbronn.de/dsf/qs/hub-qa-pipeline/dsf-validator:1.2-3 + entrypoint: [""] + dependencies: [build1] + script: + - java -jar /opt/validator/validator.jar --localPath output + - mkdir -p "$CI_PROJECT_DIR/reports/dsf-validator" + - cp -r report/* "$CI_PROJECT_DIR/reports/dsf-validator/" || true +``` + +#### **Features** + +* **Input:** Validated plugin is extracted from the submitted JAR. +* **Execution flow:** + + * `build1` stage prepares the plugin. + * `analyze-dsf-validator` performs static validation of BPMN and FHIR resources. + * `collect-reports` aggregates results from all analyzers into `final-reports/`. + +#### **Outputs** + +All JSON-formatted validation results are stored as GitLab artifacts under: + +``` +final-reports/ +└── dsf-validator/ + ├── bpmnReports/ + ├── fhirReports/ + └── aggregated.json +``` + +#### **Requirements** + +* Internet access (for downloading dependencies and validator image) +* Maven-compatible environment +* Container image: + `registry.it.hs-heilbronn.de/dsf/qs/hub-qa-pipeline/dsf-validator:1.2-3` + + +--- + +## 8  Data Processing & Storage + +Validation items are materialised as `BpmnElementValidationItem` or `FhirElementValidationItem` and serialised to JSON. The **top‑level `aggregated.json`** summarises overall status (`ERROR` / `WARN` / `INFO` / `SUCCESS`). + + +## 9  Execution Workflow + +1. **RepositoryManager** clones remote sources if requested. +2. **MavenBuilder** compiles the project. +3. **BpmnModelValidator** & **FhirInstanceValidatorAggregator** perform analysis. +4. **ReportCleaner** purges previous results; writers store fresh reports. +5. **ApiVersionDetector** prints the detected DSF BPE API version (v1 or v2). + + +## 10  Expected Output + +* **Errors** – fatal; block deployment. +* **Warnings** – non‑fatal but may break runtime paths. +* **Info** – best‑practice hints (e.g. missing `display` in `CodeSystem.concept`). + +Developers review `report/aggregated.json` or per‑file reports under `success/` and `other/`. + +## 11  Conclusion + +Version **1.3.0** turns the DSF Validator into a *profile‑aware* verification tool: + +* It validates every BPMN construct and all core FHIR artefacts *plus* the DSF‑specific `dsf-task-base` profile and StructureDefinitions. +* It caches authorised `CodeSystem` codes, enforces slice cardinalities ([build.fhir.org](https://build.fhir.org/profiling.html?utm_source=chatgpt.com)), and guards core metadata placeholders. +* It can be launched via an intuitive CLI or a zero‑configuration Maven plugin, making it an early quality gate that helps DSF process authors catch structural, semantic, and interoperability issues long before deployment. -## CLI and Maven Plugin \ No newline at end of file diff --git a/docs/src/process-development/api-v2/tutorials/README.md b/docs/src/process-development/api-v2/tutorials/README.md index 5def06066..6b9a15044 100644 --- a/docs/src/process-development/api-v2/tutorials/README.md +++ b/docs/src/process-development/api-v2/tutorials/README.md @@ -5,14 +5,10 @@ icon: slides ## Process plugin tutorial -Click [here](https://github.com/datasharingframework/dsf-process-tutorial) to open the current tutorial on GitHub. +- Visit the [how the DSF can help you](../../../explore/concepts/README.md) page to get started. +- Begin with the [DSF Process Plugin Tutorial](https://github.com/datasharingframework/dsf-process-tutorial) to access the most recent tutorial on GitHub. -## Other Resources - -Visit the [how the DSF can help you](../../../explore/concepts/README.md) page to get started. - - -::: tip Work in progress +::: tip Tutorials We are currently in the process of updating the written documentation on how to create a DSF process plugin. In the meantime, we recommend exploring these example DSF processes: diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 000000000..1a743e2db --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "datasharingframework.github.io", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..1a743e2db --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "datasharingframework.github.io", + "lockfileVersion": 3, + "requires": true, + "packages": {} +}