diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 00000000..987fa188
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,59 @@
+FROM mcr.microsoft.com/devcontainers/base:alpine-3.18
+
+# Setzen der Umgebungsvariablen
+ENV FIRELY_TERMINAL_VERSION=3.1.0
+ENV JAVA_VALIDATOR_VERSION=6.0.11
+ENV SUSHI_VERSION=3.5.0
+
+# Installieren der notwendige Tools
+# Add Microsoft's .NET SDK repository and install .NET SDK
+RUN wget https://dot.net/v1/dotnet-install.sh \
+ && chmod +x dotnet-install.sh \
+ && ./dotnet-install.sh --channel 6.0 --install-dir /usr/share/dotnet \
+ && ln -s /usr/share/dotnet/dotnet /usr/local/bin \
+ && rm dotnet-install.sh
+
+# Install ICU libraries
+RUN apk add --no-cache icu-libs
+
+# Install Node.js and npm
+RUN apk add --no-cache nodejs npm
+
+# Install Java (OpenJDK)
+RUN apk add --no-cache openjdk11
+
+# Install Firely Terminal as vscode user
+# Switch to the vscode user
+USER vscode
+
+# Install Firely Terminal
+RUN dotnet tool install --global Firely.Terminal --version $FIRELY_TERMINAL_VERSION
+
+# Add .NET tools to PATH for vscode user
+ENV PATH="/home/vscode/.dotnet/tools:${PATH}"
+
+# Switch back to root user to perform remaining installations
+USER root
+
+RUN npm install -g fsh-sushi@$SUSHI_VERSION
+
+# Installieren der zusätzliche Abhängigkeiten
+RUN apk update && apk add --no-cache jq findutils curl ca-certificates
+
+# Setup for FHIR Validator
+RUN mkdir -p /home/vscode/.fhir/validators/
+RUN wget -q https://github.com/hapifhir/org.hl7.fhir.core/releases/download/$JAVA_VALIDATOR_VERSION/validator_cli.jar -O /home/vscode/.fhir/validators/validator_cli.jar
+
+# Set ownership
+RUN mkdir -p /home/vscode/.fhir/packages && \
+ chown -R vscode:vscode /home/vscode/.fhir/packages
+
+RUN mkdir -p /home/vscode/.fhir/settings/
+COPY codfsh-config.yaml /home/vscode/.fhir/settings/codfsh-config.yaml
+
+# Setzen des Arbeitsverzeichnis
+WORKDIR /workspace
+
+COPY . /workspace
+
+CMD [ "/bin/bash" ]
diff --git a/.devcontainer/codfsh-config.yaml b/.devcontainer/codfsh-config.yaml
new file mode 100644
index 00000000..7b151129
--- /dev/null
+++ b/.devcontainer/codfsh-config.yaml
@@ -0,0 +1,9 @@
+sushi:
+ min_version: "3.5.0"
+hapi:
+ min_version: "3.0.0"
+ parameters:
+ jurisdiction: DE
+ locale: de-DE
+ tx: "n/a"
+ debug: true
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 00000000..8072f952
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,34 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/alpine
+{
+ "name": "FHIR Development Container",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "build": {
+ "dockerfile": "Dockerfile"
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "gematikde.codfsh",
+ "MITRE-Health.vscode-language-fsh",
+ "ms-azuretools.vscode-docker"
+ ],
+ "settings": {
+ "codfsh.HapiValidator.Executable": "/home/vscode/.fhir/validators/validator_cli.jar",
+ "codfsh.HapiValidator.Settings.SettingsFile": "/home/vscode/.fhir/settings/codfsh-config.yaml"
+ }
+ }
+ }
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ // "postCreateCommand": "uname -a",
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
diff --git a/.github/APACHE_LICENSE.md b/.github/APACHE_LICENSE.md
new file mode 100644
index 00000000..0984e3fd
--- /dev/null
+++ b/.github/APACHE_LICENSE.md
@@ -0,0 +1,194 @@
+Apache License
+==============
+
+_Version 2.0, January 2004_
+_<>_
+
+# TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+## 1. Definitions
+
+“License” shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+“Licensor” shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+“Legal Entity” shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, “control” means **(i)** the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
+outstanding shares, or **(iii)** beneficial ownership of such entity.
+
+“You” (or “Your”) shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+“Source” form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+“Object” form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+“Work” shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+“Derivative Works” shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+“Contribution” shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+“submitted” means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as “Not a Contribution.”
+
+“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+## 2. Grant of Copyright License
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+## 3. Grant of Patent License
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+## 4. Redistribution
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+* **(b)** You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+## 5. Submission of Contributions
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+## 6. Trademarks
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+## 7. Disclaimer of Warranty
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+## 8. Limitation of Liability
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+## 9. Accepting Warranty or Additional Liability
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+_END OF TERMS AND CONDITIONS_
+
+# APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets `[]` replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same “printed page” as the copyright notice for easier identification within
+third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..1835dbda
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,50 @@
+## Code of Conduct
+
+### Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+### Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Calls for violence, vilification and advertising
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+### Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+### Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+### Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at OSPO@gematik.de. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+### Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml b/.github/ISSUE_TEMPLATE/BUG-REPORT.yml
new file mode 100644
index 00000000..b06dde60
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/BUG-REPORT.yml
@@ -0,0 +1,76 @@
+name: "🐛 Bug Report"
+description: Create a new ticket for a bug.
+title: "🐛 [BUG] -
"
+labels: [
+ "bug",
+ "invalid"
+]
+body:
+ - type: textarea
+ id: description
+ attributes:
+ label: "Description"
+ description: Please enter an explicit description of the issue.
+ placeholder: |
+ Short and explicit description of the incident...
+ If you are able to specify, please also select the appropriate label:
+ - Bug, if something is technically not working, e.g. not compiling.
+ - Invalid, if something is technically working but does not seem to yield to correct outcome, e.g. 1+1 is 3.
+ validations:
+ required: true
+ - type: input
+ id: reprod-url
+ attributes:
+ label: "Reproduction URL"
+ description: Please enter the corresponding Simplifier URL (or other, e.g. GitHub) to provide a source for reproduction of the issue.
+ placeholder: ex. https://simplifier.net/REPO-NAME/RESOURCE-NAME
+ validations:
+ required: true
+ - type: input
+ id: version
+ attributes:
+ label: "Version or Branch"
+ description: If this bug occures only in a specific version or development branch, please tell us here.
+ placeholder: ex. Only occurs with ISiK 2.0.4.
+ validations:
+ required: false
+ - type: textarea
+ id: reprod
+ attributes:
+ label: "Reproduction Steps"
+ description: Please enter a step by step description of the issue.
+ value: |
+
+ 1. At the interface '....'
+ 2. With Data '....'
+ 3. Execute Operation '....'
+ 4. See error
+ render: bash
+ validations:
+ required: true
+ - type: textarea
+ id: logs
+ attributes:
+ label: "Stack Trace and Logs"
+ description: Please copy and paste any relevant stack trace or log output. This will be automatically formatted into code.
+ render: bash
+ validations:
+ required: false
+ - type: textarea
+ id: screenshot
+ attributes:
+ label: "Screenshots"
+ description: If applicable, add screenshots to help explain your problem.
+ value: |
+ ![DESCRIPTION](LINK.png)
+ render: bash
+ validations:
+ required: false
+ - type: textarea
+ id: environment
+ attributes:
+ label: "Software and Environment"
+ description: Please describe the used software and your environment further.
+ placeholder: ex. I Use dotnet sdk 4.x and Firely Terminal to manage fhir packages
+ validations:
+ required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml b/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml
new file mode 100644
index 00000000..77974bbb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml
@@ -0,0 +1,72 @@
+name: "💡 Feature Request"
+description: Create a new ticket for a new feature request
+title: "💡 [REQUEST] - "
+labels: [
+ "question",
+ "enhancement"
+]
+body:
+ - type: input
+ id: target_date
+ attributes:
+ label: "Target Date"
+ description: When would you need this feature to be available?
+ placeholder: "MM YYYY"
+ validations:
+ required: false
+ - type: input
+ id: implementation_pr
+ attributes:
+ label: "Implementation PR"
+ description: In case you already developed the feature yourself, please tell us the corresponding PR. Also, maybe you have seen this feature somewhere else?
+ placeholder: "Your Pull Request ID or link to a similar PR."
+ validations:
+ required: false
+ - type: textarea
+ id: reference_issues
+ attributes:
+ label: "Reference Issues"
+ description: Some common issues this feature would address.
+ placeholder: "Issues IDs and references"
+ validations:
+ required: false
+ - type: textarea
+ id: summary
+ attributes:
+ label: "Summary"
+ description: Please provide a brief explanation of the feature.
+ placeholder: |
+ Describe in a few lines your feature request ...
+ If you are able to specify, please also select the appropriate label:
+ - Question, if you would also be fine with more information, on how to address your request, e.g. with a workaround.
+ - Enhancement, if you are kinda sure your Request is an independent new addition, that could not be achieved otherwise.
+ validations:
+ required: true
+ - type: textarea
+ id: basic_example
+ attributes:
+ label: "Common Examples"
+ description: Indicate some basic examples of your feature or a common flow in which it would be used.
+ placeholder: |
+ In the use case of '...'
+ The necessary data will flow like '....'
+ Feature will be used '....'
+ With the result of '....'
+ validations:
+ required: true
+ - type: textarea
+ id: drawbacks
+ attributes:
+ label: "Drawbacks"
+ description: What are the drawbacks or mutual impacts of your feature request?
+ placeholder: Identify the drawbacks and mutual impacts with respect to other features.
+ validations:
+ required: true
+ - type: textarea
+ id: unadress_question
+ attributes:
+ label: "Unadressed questions"
+ description: What issues or questions still remain unadressed?
+ placeholder: Identify any unresolved issues or questions.
+ validations:
+ required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..ec4bb386
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 00000000..7753d413
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,11 @@
+Please go the the `Preview` tab and select the appropriate sub-template:
+
+[**Contributor PR**](?expand=1&template=PR_Template_Contributor.md)
+
+[Version Upgrade **(for Admins)**](?expand=1&template=PR_Template_VersionUpgrade.md)
+
+
+
+
+## Pull Request Short Cut
+
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE/PR_Template_Contributor.md b/.github/PULL_REQUEST_TEMPLATE/PR_Template_Contributor.md
new file mode 100644
index 00000000..4d417179
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/PR_Template_Contributor.md
@@ -0,0 +1,32 @@
+
+# Contributor Pull Request
+
+
+## Description
+
+
+## Motivation and Context
+
+
+
+
+## How has this been tested?
+
+
+
+
+
+## Snippets or Screenshots (if necessary):
+
+## Types of changes
+
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+
+## Checklist:
+
+
+- [ ] My code follows the code style of this IG / specification.
+- [ ] My change requires a change to the documentation or narrative (intend) of the IG.
+- [ ] I have already updated the documentation / narrative (intend) accordingly.
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE/PR_Template_VersionUpgrade.md b/.github/PULL_REQUEST_TEMPLATE/PR_Template_VersionUpgrade.md
new file mode 100644
index 00000000..d0e0d423
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/PR_Template_VersionUpgrade.md
@@ -0,0 +1,55 @@
+# Version Upgrade Template
+
+
+Version:
+
+Date:
+
+## Description
+
+This is a Pullreuqest that requires an increase in the Version number. Therefore, multiple outside-github, related Task have to be performed and checked.
+
+All jobs with an `x` in the boxes were performed to the best of knowledge.
+
+## Pre-Merge Activities
+
+- [ ] This PR refers to a versioned Branch with a name and a version number in the form of N.n.n, e.g. "TC_3.2.1".
+- [ ] This PR has a clean meaningful committ history. Minor committs or committs without descirption have been squashed, at the latest now.
+- [ ] The _./github/workflows/main.yml_ refers to the correct Firetly Terminal and SUSHI Version.
+ > **_Firely Terminal Pipeline_** 0.4.0.
+
+ > **_SUSHI Versions_** 3.5.0.
+- [ ] By running the _Release_Publish.py_ script, release version and date was updated accordingly. The script ran without errors.
+- [ ] Eventually, increase the dependency of to newer Basis Modul (package and sushi-config)
+- [ ] New Release Notes were created, aglined to the committ history and cleaned. In Github, go to
+ - [ ] _-> Releases_ then _-> Draft a new release_ with the _Modul Name and Version_, then
+ - [ ] _-> Target the main-Branch_ and _->enter a new Tag according to the Version_, then click.
+ - [ ] Click _-> Generate Release notes_ , _->Adjust them if necessary_ and _-> Copy/Paste the Details in the RealeaseNotes.md_ of the very Branch you want to merge.
+ - [ ] Finally _-> Save as Draft_
+
+## Merge and Publishing
+
+
+- [ ] With the updated Version, Dates, and Release Notes (as described above) with the last committ into the Branch you want to merge.
+- [ ] In GitHub _-> Actions_ the _->CI (FHIR Validation)_ workflow terminates successfully.
+- [ ] Add the Approve / the PR gets posivitly reviewed by a collegue.
+- [ ] Merge (without squash) the PR, delete the Branch.
+
+
+## Post-Merge Activities
+
+
+- [ ] Go to the corresponding SIMPLIFIER Project and _-> Github -> Reimport_ the project.
+- [ ] Go to the corresponding SIMPLIFIER Project and _-> Packages -> Expand the Dropdown for Create -> Create new package_ for the project.
+ - [ ] With the corresponding version number, and
+ - [ ] The Release notes (from above) and a compare-link to the previous Release.
+ - [ ] Unlist the old package by _-> clicking on the old package_, _-> go to Admininstration_ and _-> click on Unlist_
+- [ ] Publish the previosuly drafteted Release, including version number, on GitHub.
+- [ ] Provide / Archive the IG in the corresponding _gh-pages_ branch of the GitHub project.
+ - [ ] Checkout the Branch (no need to merge it later).
+ - [ ] Export from Simplifier via _-> Guides -> Expand the Modul ... -> Export_
+ - [ ] Unpack the zip, remove the packages folder (because its kinda big), and move everything else to a (version coressponding) new folder in the branch folder structure.
+ - [ ] committ the branch.
+
+
+## Finished
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 00000000..9e1731f4
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,6 @@
+# Security Policy
+
+Since this software is not a productive version, please submit an issue or pull request for any bugs or vulnerabilities you find.
+
+In case of a responsible disclosure, please follow instructions
+on https://www.gematik.de/datensicherheit#c1227.
diff --git a/.github/workflows/RenderAllDiagrams.yml b/.github/workflows/RenderAllDiagrams.yml
new file mode 100644
index 00000000..ee949a78
--- /dev/null
+++ b/.github/workflows/RenderAllDiagrams.yml
@@ -0,0 +1,102 @@
+name: Render All Diagrams
+
+on:
+ push:
+ paths:
+ - '**/Material/images/src/**/*.puml'
+ - '**/Material/images/src/**/*.drawio'
+ branches-ignore:
+ - 'main**'
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Installs Java distribution for running the plantUML jar
+ - name: Install Java
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+ check-latest: true
+
+ # Install graphviz for plantuml
+ - name: Setup Graphviz
+ uses: ts-graphviz/setup-graphviz@v1
+
+ # Download plantUML jar
+ - name: Download plantuml file
+ run: |
+ wget -O plantuml.jar "https://github.com/plantuml/plantuml/releases/latest/download/plantuml.jar"
+
+ # Clean Folder
+ - name: Ensure and clean folder
+ run: |
+ img_dir=Material/images/diagrams
+ mkdir -p $img_dir
+ rm -rf Material/images/diagrams/*.svg
+
+ # Generate the SVGs from PUML
+ - name: Render PUML to SVG and Move files
+ run: |
+ FileNamePaths=$(find . -path "*/images/src/*/*.puml" -exec dirname {} \; | sort -u)
+ for dir in $FileNamePaths
+ do
+ # Render SVGs from PUMLs
+ find $dir -name "*.puml" -exec java -jar plantuml.jar -tsvg {} \;
+ done
+
+ # Remove plantUML jar
+ - name: remove plantuml file
+ run: |
+ rm -f plantuml.jar
+
+ # Generate the SVGs from DrawIO
+ - name: Render DrawIO to SVG with predefined action
+ uses: rlespinasse/drawio-export-action@v2
+ with:
+ path: ./Material/images/src/drawio/
+ remove-page-suffix: true
+ output: .
+ format: svg
+ action-mode: all
+
+ # copies the created SVG files to the images/diagrams folder and deletes the drawio files
+ - name: Move SVGs to target image folder
+ run: |
+ img_dir=Material/images/diagrams
+ # Find all unique directories containing *.SVGs files under any /imgsrc/ folder
+ FileNamePaths=$(find . -path "*/images/src/*/*.svg" -exec dirname {} \; | sort -u)
+ for dir in $FileNamePaths
+ do
+ # Move SVGs to out directory
+ find $dir -name "*.svg" -exec mv {} $img_dir \;
+ done
+
+ ## add and commit the new generated files
+ #- name: Create Pull Request
+ # uses: peter-evans/create-pull-request@v5
+ # with:
+ # branch: auto/images-generation
+ # commit-message: Generated Images from source Code by GitHub Action
+ # title: Generated Images from GitHub Action
+ # assignees: ${{ github.actor }}
+ # reviewers: ${{ github.actor }}
+ # delete-branch: true
+ # labels: automated pr
+
+ - name: Commit rendered files
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_user_name: GitHub Actions Bot
+ commit_user_email: ActionBot@github.com
+ commit_message: auto-generated diagrams by GitHub Action after source code change
\ No newline at end of file
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 75784198..4bbdcef8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -6,9 +6,13 @@ name: CI (FHIR Validation)
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
- branches: [ master ]
+ paths:
+ - 'Resources/**'
+ branches-ignore:
+ - 'main**'
pull_request:
- branches: [ master ]
+ branches:
+ - 'main**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
@@ -29,7 +33,7 @@ jobs:
# Java and .NET are already installed on ubuntu-latest
- name: Firely.Terminal (GitHub Actions)
- uses: FirelyTeam/firely-terminal-pipeline@v0.3.5
+ uses: FirelyTeam/firely-terminal-pipeline@v0.4.0
with:
PATH_TO_CONFORMANCE_RESOURCES: Resources/fsh-generated/resources/
#PATH_TO_EXAMPLES: Examples
@@ -42,10 +46,13 @@ jobs:
SIMPLIFIER_PASSWORD: ${{ secrets.SIMPLIFIER_PASSWORD }}
SUSHI_ENABLED: true
SUSHI_OPTIONS: Resources/
- SUSHI_VERSION: 2.10.2
+ SUSHI_VERSION: 3.5.0
EXPECTED_FAILS: VALIDATION_CONFORMANCE_DOTNET VALIDATION_CONFORMANCE_JAVA VALIDATION_EXAMPLES_JAVA
- name: Add & Commit
uses: EndBug/add-and-commit@v7
with:
+ committer_name: GitHub Actions Bot
+ committer_email: ActionBot@github.com
add: 'Resources/fsh-generated/resources/'
+ message: auto-generated FHIR files by GitHub Actions (CI FSH to FHIR Validation)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..ba698c7d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.vscode/launch.json
diff --git a/ImplementationGuide/ImplementierungsleitfadenIsiK_Terminplanung.json b/ImplementationGuide/ImplementierungsleitfadenIsiK_Terminplanung.json
index 50363ce5..2d6c162d 100644
--- a/ImplementationGuide/ImplementierungsleitfadenIsiK_Terminplanung.json
+++ b/ImplementationGuide/ImplementierungsleitfadenIsiK_Terminplanung.json
@@ -2,13 +2,20 @@
"resourceType": "ImplementationGuide",
"url": "https://gematik.de/fhir/ISiK/v3/Terminplanung/ImplementationGuide/ISiK-Terminplanung",
"name": "Implementierungsleitfaden ISiK-Modul Terminplanung",
- "version": "3.0.1",
+ "version": "3.0.2",
"status": "active",
"fhirVersion": [
"4.0.1"
],
"packageId": "de.gematik.isik-terminplanung-stufe-3",
"definition": {
+ "resource": [
+ {
+ "reference": {
+ "reference": "Appointment/ISiKTerminExample"
+ }
+ }
+ ],
"page": {
"nameUrl": "ImplementationGuide/markdown/Einfuehrung.md",
"title": "Einführung",
diff --git "a/ImplementationGuide/images/\303\234bersicht Termin Akteure (1).drawio.png" "b/ImplementationGuide/images/\303\234bersicht Termin Akteure (1).drawio.png"
deleted file mode 100644
index 0ab0a2f9..00000000
Binary files "a/ImplementationGuide/images/\303\234bersicht Termin Akteure (1).drawio.png" and /dev/null differ
diff --git "a/ImplementationGuide/images/\303\234bersicht Termin Akteure (2).drawio.png" "b/ImplementationGuide/images/\303\234bersicht Termin Akteure (2).drawio.png"
deleted file mode 100644
index 6e16b987..00000000
Binary files "a/ImplementationGuide/images/\303\234bersicht Termin Akteure (2).drawio.png" and /dev/null differ
diff --git a/ImplementationGuide/markdown/Datenobjekte.md b/ImplementationGuide/markdown/Datenobjekte.md
index e766da8e..12c169a8 100644
--- a/ImplementationGuide/markdown/Datenobjekte.md
+++ b/ImplementationGuide/markdown/Datenobjekte.md
@@ -1,9 +1,13 @@
# Datenobjekte
-Folgende Datenobjekte und Interaktionen aus dem Modul [ISiK Basis Stufe 2](https://simplifier.net/guide/isik-basismodul-stufe2/Einfuehrung) sind in diesem Modul bestätigungsrelevant:
-* [Patient](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Patient?version=current)
-* [Practitioner](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-markdown-Datenobjekte-Datenobjekte-PersonImGesundheitsberuf?version=current)
-* [Binary](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current)
+Folgende Datenobjekte aus dem Modul [ISiK Basis Stufe 3](https://simplifier.net/guide/implementierungsleitfaden-isik-basismodul-stufe-3?version=current) werden in diesem Modul verwendet:
+* [Patient](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Patient?version=current)
+* [Practitioner](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-Datenobjekte-Datenobjekte-PersonImGesundheitsberuf?version=current)
+* [Binary](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current)
+
+Die Verwendung in diesem Modul bedeutet:
+Wenn dieses Modul auf Datenobjekte aus dem Basismodul referenziert, dann MÜSSEN die referenzierten FHIR-Ressourcen konform zu den Vorgaben aus dem Basismodul sein.
+Die Referenzierung von im Basismodul spezifizierten Datenobjekten, bedeutet nicht, dass die Interaktionen für die entsprechenden Datenobjekte aus dem Basismodul auch im Modul Terminplanung bestätigungsrelevant sind.
Darüber hinaus gelten in diesem Modul folgende Datenobjekt-spezifische Festlegungen:
diff --git a/ImplementationGuide/markdown/Datenobjekte/CapabilityStatement.md b/ImplementationGuide/markdown/Datenobjekte/CapabilityStatement.md
index cbbd2eb9..e783bf25 100644
--- a/ImplementationGuide/markdown/Datenobjekte/CapabilityStatement.md
+++ b/ImplementationGuide/markdown/Datenobjekte/CapabilityStatement.md
@@ -1,26 +1,20 @@
-# Konformitätserklärung [(CapabilityStatement)](http://hl7.org/fhir/capabilitystatement.html)
+# Konformitätserklärung [(CapabilityStatement)](https://hl7.org/fhir/R4/capabilitystatement.html)
-Jede Instanz eines bestätigungsrelevanten Systems MUSS an ihrem Endpunkt eine [CapabilityStatement](http://hl7.org/fhir/capabilitystatement.html)-Ressource bereitstellen.
+Jede Instanz eines bestätigungsrelevanten Systems MUSS an ihrem Endpunkt eine [CapabilityStatement](https://hl7.org/fhir/R4/capabilitystatement.html)-Ressource bereitstellen.
-Hierzu MUSS die [capabilities-Interaktion gemäß FHIR-Spezifikation](http://hl7.org/fhir/http.html#capabilities) unterstützt werden.
+Hierzu MUSS die [capabilities-Interaktion gemäß FHIR-Spezifikation](https://hl7.org/fhir/R4/http.html#capabilities) unterstützt werden.
Der "MODE"-Parameter kann ignoriert werden.
-Das CapabilityStatement in dieser Spezifikation stellt die Anforderungen seitens der gematik dar (`kind` = "requirements"). Zur Unterscheidung von Anforderungen, die erfüllt werden MÜSSEN, gegenüber jenen, die erfüllt werden KÖNNEN, wird die [CapabilityStatement-Expectation](http://hl7.org/fhir/extension-capabilitystatement-expectation.html)-Extension mit den möglichen Werten "SHALL" (=MUSS) und "MAY" (=KANN) verwendet.
+Das CapabilityStatement in dieser Spezifikation stellt die Anforderungen seitens der gematik dar (`kind` = "requirements"). Zur Unterscheidung von Anforderungen, die erfüllt werden MÜSSEN, gegenüber jenen, die erfüllt werden KÖNNEN, wird die [CapabilityStatement-Expectation](https://hl7.org/fhir/R4/extension-capabilitystatement-expectation.html)-Extension mit den möglichen Werten "SHALL" (=MUSS) und "MAY" (=KANN) verwendet.
Eine Server-Instanz MUSS ihrerseits ein CapabilityStatement vom `kind`= "instance" liefern und im Element `software` den Namen und die Versionsnummer angeben.
Das CapabilityStatement der Instanz MUSS alle Funktionalitäten auflisten, die im folgenden CapabilityStatement mit "SHALL" gekennzeichnet sind. Das CapabilityStatement KANN darüber hinaus die mit "MAY" gekennzeichneten Funktionalitäten, sowie weitere Funktionalitäten auflisten, sofern diese in der Instanz implementiert wurden.
-Die Verwendung der [CapabilityStatement-Expectation](http://hl7.org/fhir/extension-capabilitystatement-expectation.html)-Extension ist im CapabilityStatement der Server-Instanz nicht erforderlich.
+Die Verwendung der [CapabilityStatement-Expectation](https://hl7.org/fhir/R4/extension-capabilitystatement-expectation.html)-Extension ist im CapabilityStatement der Server-Instanz nicht erforderlich.
## CapabilityStatement (Requirement) ISiK-Terminplanung
-Die Bereitstellung des CapabilityStatements für das Modul "Terminplanung" erfolgt zusammen mit der Festlegung der bestätigungsrelevanten Systeme in Stufe 2
-
-Für Systeme, die das Modul "Terminplanung" implementieren, ist außerdem die Erfüllung der Mindestanforderungen des [Moduls "Basis"](https://simplifier.net/guide/ImplementierungsleitfadenISiK-Basismodul/Einfuehrung) erfoderlich:
-
-Canonical: https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/core-server
-
[Link Simplifier Profil Übersicht](https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/terminplanung-server)
-{{render:https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/terminplanung-server}}
\ No newline at end of file
+{{render:https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/terminplanung-server}}
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKBinary.md b/ImplementationGuide/markdown/Datenobjekte/ISiKBinary.md
index 76e6295c..db4b9222 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKBinary.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKBinary.md
@@ -1,9 +1,12 @@
-## ISiKBinary [(Binary)](http://hl7.org/fhir/binary.html)
+## ISiKBinary [(Binary)](https://hl7.org/fhir/R4/binary.html)
+
+ISiKBinary dient im Kontext der Terminplanung dazu Zusatzinformationen an das Termin-Repository bzw. den Termin-Requestor zu übermitteln (vgl. {{pagelink:ImplementationGuide/markdown/Datenobjekte/ISiKNachrichtCommunication.md, text:'ISiKCommunication.payload.contentAttachment'}}).
---
### FHIR-Profil
-Es gelten bis auf weiteres die Vorgaben des ISiK Basismoduls für das Profi ['ISiKBinary'](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current).
-Ein Termin Repository MUSS die Anlage (Create-Interaktion) einer Binary-Ressource entsprechend der Vorgaben des [ISiK-Basismoduls](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest) unterstützen.
-Die Binary-Ressource MUSS in ihrem originalen Repräsentationsformat, sowie als FHIR-Ressource abgerufen werden können (vgl. [Serving Binary Resources using the RESTful API](https://www.hl7.org/fhir/binary.html#rest)).
\ No newline at end of file
+Es gelten bis auf weiteres die Vorgaben des ISiK Basismoduls für das Profil ['ISiKBinary'](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current).
+Ein Termin Repository MUSS die Anlage (Create-Interaktion) einer Binary-Ressource entsprechend der Vorgaben des [ISiK-Basismoduls](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current) unterstützen.
+Die Binary-Ressource MUSS in ihrem originalen Repräsentationsformat, sowie als FHIR-Ressource abgerufen werden können (vgl. [Serving Binary Resources using the RESTful API](https://www.hl7.org/fhir/R4/binary.html#rest)).
+
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKKalenderSchedule.md b/ImplementationGuide/markdown/Datenobjekte/ISiKKalenderSchedule.md
index 56b0d997..67a83f2d 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKKalenderSchedule.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKKalenderSchedule.md
@@ -1,16 +1,16 @@
-## ISiKKalender [(Schedule)](http://hl7.org/fhir/schedule.html)
+## ISiKKalender [(Schedule)](https://hl7.org/fhir/R4/schedule.html)
---
### Motivation
-Das Datenobjekt ISiKKalender bietet die Möglichkeit Kalender für verschiedene Akteure (Practitoner, Device, HealthcareService) zu exponieren, sodass für die Ressourcen Termine gebucht werden können.
+Das Datenobjekt ISiKKalender bietet die Möglichkeit Kalender für verschiedene Akteure (Practitioner, Device, HealthcareService) zu exponieren, sodass für die Ressourcen Termine gebucht werden können.
---
-### Kompabilität
+### Kompatibilität
-Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompabilität}}.
+Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompatibilität}}.
---
@@ -64,19 +64,19 @@ join binding.where(valueSet.exists())
**Bedeutung:** Welche Besuchsgründe / Behandlungsleistungen werden durch diesen Kalender erfasst?
-**Hinweis:** Die Besuchsgründe / Behandlungsleistungen sollten im Schedule angegeben werden, falls unter Schedule.actor nur Referenzen mit Referenz.display angegeben werden oder direkt auf einen Practitioner referenziert wird. Im Falle, dass ein HealthcareService referenziert wird, SOLLTEN die gleichen Informationen wie in HealthcareService.type angegeben werden. Seitens der aktuellen Spezifikation werden keine Vorgaben bezüglich der zu verwendenden Terminologie gemacht. Entsprechend verwendete Kataloge müssen als CodeSystem-Ressource exponiert werden.
+**Hinweis:** Die Besuchsgründe / Behandlungsleistungen SOLLEN im Schedule angegeben werden, falls unter Schedule.actor nur Referenzen mit Referenz.display angegeben werden oder direkt auf einen Practitioner referenziert wird. Im Falle, dass ein HealthcareService referenziert wird, SOLLEN die gleichen Informationen wie in HealthcareService.type angegeben werden. Seitens der aktuellen Spezifikation werden keine Vorgaben bezüglich der zu verwendenden Terminologie gemacht. Entsprechend verwendete Kataloge müssen als CodeSystem-Ressource exponiert werden.
### `Schedule.specialty`
**Bedeutung:** Welche Fachrichtung(en) führen die Behandlungsleistungen, die durch diesen Kalender erfasst werden, aus?
-**Hinweis:** Die Fachrichtung(en) sollte(n) im Schedule angegeben werden, falls unter Schedule.actor nur Referenzen mit Referenz.display angegeben werden oder direkt auf einen Practitioner referenziert wird. Im Falle, dass ein HealthcareService referenziert wird, SOLLTEN die gleichen Informationen wie in HealthcareService.specialty angegeben werden.
+**Hinweis:** Die Fachrichtung(en) SOLL(EN) im Schedule angegeben werden, falls unter Schedule.actor nur Referenzen mit Referenz.display angegeben werden oder direkt auf einen Practitioner referenziert wird. Im Falle, dass ein HealthcareService referenziert wird, SOLLEN die gleichen Informationen wie in HealthcareService.specialty angegeben werden.
### `Schedule.actor`
**Bedeutung:** Für welche Akteure wird der Kalender geführt?
-**Hinweis:** Nicht alle Target-Ressourcen dieser Referenz existieren als Profil innerhalb des ISiK-Basismoduls oder ISiK-Terminplanung. Für alle Target-Ressourcen sollte ein Displaywert für die Referenz angegeben werden. Nur für HealthcareService und Practitioner MUSS Reference.reference angegeben werden.
+**Hinweis:** Nicht alle Target-Ressourcen dieser Referenz existieren als Profil innerhalb des ISiK-Basismoduls oder ISiK-Terminplanung. Für alle Target-Ressourcen SOLL ein Displaywert für die Referenz angegeben werden. Nur für HealthcareService und Practitioner MUSS Reference.reference angegeben werden.
---
@@ -90,7 +90,7 @@ Für die Ressource Schedule MUSS die REST-Interaktion "READ" implementiert werde
```GET [base]/Schedule?_id=103270```
- Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](http://hl7.org/fhir/R4/search.html#all).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](https://hl7.org/fhir/R4/search.html#all).
1. Der Suchparameter "active" MUSS unterstützt werden:
@@ -98,7 +98,7 @@ Für die Ressource Schedule MUSS die REST-Interaktion "READ" implementiert werde
```GET [base]/Schedule?active=true```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.active" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.active" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "service-type" MUSS unterstützt werden:
@@ -106,7 +106,7 @@ Für die Ressource Schedule MUSS die REST-Interaktion "READ" implementiert werde
```GET [base]/Schedule?service-type=http://example.org/fhir/CodeSystem/ScheduleServiceType|CT```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.serviceType" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.serviceType" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "specialty" MUSS unterstützt werden:
@@ -114,7 +114,7 @@ Für die Ressource Schedule MUSS die REST-Interaktion "READ" implementiert werde
```GET [base]/Schedule?specialty=urn:oid:1.2.276.0.76.5.114|535```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "actor" MUSS unterstützt werden:
@@ -123,7 +123,7 @@ Für die Ressource Schedule MUSS die REST-Interaktion "READ" implementiert werde
```GET [base]/Schedule?actor=Practitioner/ISiKPractitionerExample```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.actor" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Schedule.actor" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference).
---
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKMedizinischeBehandlungseinheitHealthcareService.md b/ImplementationGuide/markdown/Datenobjekte/ISiKMedizinischeBehandlungseinheitHealthcareService.md
index a5fff4e6..b191e7da 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKMedizinischeBehandlungseinheitHealthcareService.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKMedizinischeBehandlungseinheitHealthcareService.md
@@ -1,4 +1,4 @@
-## ISiKMedizinischeBehandlungseinheit [(HealthcareService)](http://hl7.org/fhir/communication.html)
+## ISiKMedizinischeBehandlungseinheit [(HealthcareService)](https://hl7.org/fhir/R4/healthcareservice.html)
---
@@ -8,9 +8,9 @@ Unter einer medizinischen Behandlungseinheit wird innerhalb dieser Spezifikation
---
-### Kompabilität
+### Kompatibilität
-Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompabilität}}.
+Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompatibilität}}.
---
@@ -58,13 +58,13 @@ join binding.where(valueSet.exists())
**Bedeutung:** Klassifikation der Behandlungsleistung welche durch den HealthcareService erbracht wird
-**Hinweis:** Diese Klassifikation sollte stets auch in Appointment.serviceType und Schedule.serviceType angegeben werden. Seitens der aktuellen Spezifikation werden keine Vorgaben bezüglich der zu verwendenden Terminologie gemacht. Entsprechend verwendete Kataloge müssen als CodeSystem- und ValueSet-Ressourcen exponiert werden. Siehe [Suchparameter "content-mode" in ISiK Basis - Datenobjekt ValueSet](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-ValueSet?version=current).
+**Hinweis:** Diese Klassifikation SOLL stets auch in Appointment.serviceType und Schedule.serviceType angegeben werden. Seitens der aktuellen Spezifikation werden keine Vorgaben bezüglich der zu verwendenden Terminologie gemacht. Entsprechend verwendete Kataloge müssen als CodeSystem- und ValueSet-Ressourcen exponiert werden. Siehe [Suchparameter "context-type-value" in ISiK Basis - Datenobjekt ValueSet](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-ValueSet?version=current).
### `HealthcareService.specialty`
**Bedeutung:** Fachrichtung der Behandlungsleistung welche durch den HealthcareService erbracht wird
-**Hinweis:** Diese Fachrichtung sollte stets auch in Appointment.specialty und Schedule.specialty angegeben werden.
+**Hinweis:** Diese Fachrichtung SOLL stets auch in Appointment.specialty und Schedule.specialty angegeben werden.
### `HealthcareService.name`
@@ -84,7 +84,7 @@ Für die Ressource HealthcareService MUSS die REST-Interaktion "READ" implementi
```GET [base]/HealthcareService?_id=103270```
- Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](http://hl7.org/fhir/R4/search.html#all).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](https://hl7.org/fhir/R4/search.html#all).
1. Der Suchparameter "active" MUSS unterstützt werden:
@@ -92,7 +92,7 @@ Für die Ressource HealthcareService MUSS die REST-Interaktion "READ" implementi
```GET [base]/HealthcareService?active=true```
- Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.active" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.active" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "service-type" MUSS unterstützt werden:
@@ -100,7 +100,7 @@ Für die Ressource HealthcareService MUSS die REST-Interaktion "READ" implementi
```GET [base]/HealthcareService?service-type=http://example.org/fhir/CodeSystem/ScheduleServiceType|CT```
- Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.type" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.type" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "specialty" MUSS unterstützt werden:
@@ -108,7 +108,7 @@ Für die Ressource HealthcareService MUSS die REST-Interaktion "READ" implementi
```GET [base]/HealthcareService?specialty=urn:oid:1.2.276.0.76.5.114|535```
- Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
1. Der Suchparameter "name" MUSS unterstützt werden:
@@ -116,7 +116,7 @@ Für die Ressource HealthcareService MUSS die REST-Interaktion "READ" implementi
```GET [base]/HealthcareService?name=Medizinische Behandlungseinheit Des Fachbereichs 0100```
- Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.name" finden sich in der [FHIR-Basisspezifikation - Abschnitt "string"](https://www.hl7.org/fhir/search.html#string).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "HealthcareService.name" finden sich in der [FHIR-Basisspezifikation - Abschnitt "string"](https://www.hl7.org/fhir/R4/search.html#string).
---
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKNachrichtCommunication.md b/ImplementationGuide/markdown/Datenobjekte/ISiKNachrichtCommunication.md
index 9d703bd6..c2b89c58 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKNachrichtCommunication.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKNachrichtCommunication.md
@@ -1,10 +1,10 @@
-## ISiKNachricht [(Communication)](http://hl7.org/fhir/communication.html)
+## ISiKNachricht [(Communication)](https://hl7.org/fhir/R4/communication.html)
---
### Motivation
-Die Communication-Ressource dient als Datenobjekt für den Austausch von Nachrichten zwischen einem Leistungserbringer und einem Patienten. Es können sowohl Textnachrichten als auch Binärdateien ausgetauscht werden.
+Die Communication-Ressource dient als Datenobjekt für den bidirektionalen Austausch von Nachrichten zwischen einem Leistungserbringer und einem Patienten. Es können sowohl Textnachrichten als auch Binärdateien ausgetauscht werden.
Es liegt in der Verantwortung des bestätigungsrelevanten Systems, eine dem Schutzbedarf der ausgetauschten Nachrichten angemessene Sicherheit in Bezug auf Vertraulichkeit, Integrität und Verfügbarkeit herzustellen. Die Vorgaben des BSI, z. B. aus der TR-03161, sind zu beachten. Grundsätzlich liegen der vorliegenden Definition von ISiKNachricht die folgenden Annahmen zugrunde, die auch eine Nutzung einfach umsetzbarer Sicherheitsmaßnahmen ermöglichen:
* ISiKNachricht SOLL ausschließlich für den Austausch administrativer, nicht personenbezogener Informationen im Kontext der Terminbuchung verwendet werden, z. B. zur Übermittlung von Coronahinweisen oder Lageplänen.
@@ -36,7 +36,7 @@ Folgende FHIRPath-Constraints sind im Profil zu beachten:
### `Communication.inResponseTo`
-**Bedeutung:** Falls die Communication-Ressource in einen zeitlichen Zusammenhang mit weiteren Nachrichten gebracht werden muss, KÖNNEN die Nachrichten miteinander verknüpft werden. Neue Nachrichten MÜSSEN auf die bereits zurvor existierenden Nachrichten zeigen.
+**Bedeutung:** Falls die Communication-Ressource in einen zeitlichen Zusammenhang mit weiteren Nachrichten gebracht werden muss, KÖNNEN die Nachrichten miteinander verknüpft werden. Neue Nachrichten MÜSSEN auf die bereits zuvor existierenden Nachrichten zeigen.
### `Communication.subject`
@@ -48,17 +48,17 @@ Folgende FHIRPath-Constraints sind im Profil zu beachten:
**Bedeutung:** Empfänger der Communication
-**Hinweis:** Für Practitioner und HealthcareService muss Reference.reference angegeben werden. Für weitere Ressourcen MUSS ein Referenze.display angegeben werden.
+**Hinweis:** Für Practitioner und HealthcareService muss Reference.reference angegeben werden. Für weitere Ressourcen MUSS ein Reference.display angegeben werden.
### `Communication.sender`
-**Hinweis:** Für Patient, Practitioner und HealthcareService muss Reference.reference angegeben werden. Für weitere Ressourcen MUSS ein Referenze.display angegeben werden.
+**Hinweis:** Für Patient, Practitioner und HealthcareService muss Reference.reference angegeben werden. Für weitere Ressourcen MUSS ein Reference.display angegeben werden.
### `Communication.payload`
**Bedeutung:** Inhalt der Communication
-**Hinweis:** Es MÜSSEN sowohl Freitext, als auch base64-kodierte Inhalte unterstützt werden. Falls strukturierte Metadaten über das zu übermittelnde Dokument verfügbar sind, KANN es als DocumentReference-Ressource abgelegt werden. Für die Anlage einer solchen Ressource wird auf das [ISiK Dokumentenaustausch](https://simplifier.net/guide/isik-dokumentenaustausch) verwiesen. Die erzeugte Ressource ist anschließend unter dem contentReference-Element als Referenz anzugeben. Jegliche Funktionalität bezogen auf das Modul Dokumentenaustausch ist nicht bestätigungsrelevant. Dokumente welche als Attachment angegeben werden, MÜSSEN in ihrer URL auf eine Binary Ressource verweisen. Diese Binary-Ressource sollte per CREATE-Interaktion angelegt werden im empfangenden System.
+**Hinweis:** Es MÜSSEN sowohl Freitext, als auch base64-kodierte Inhalte unterstützt werden. Falls strukturierte Metadaten über das zu übermittelnde Dokument verfügbar sind, KANN es als DocumentReference-Ressource abgelegt werden. Für die Anlage einer solchen Ressource wird auf das [ISiK Dokumentenaustausch](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Modul-Dokumentenaustausch-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) verwiesen. Die erzeugte Ressource ist anschließend unter dem contentReference-Element als Referenz anzugeben. Jegliche Funktionalität bezogen auf das Modul Dokumentenaustausch ist nicht bestätigungsrelevant. Dokumente welche als Attachment angegeben werden, MÜSSEN in ihrer URL auf eine [ISiKBinary](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current) Ressource verweisen. Diese Binary-Ressource sollte per CREATE-Interaktion angelegt werden im empfangenden System.
---
@@ -72,7 +72,7 @@ Für die Ressource Communication MÜSSEN die REST-Interaktionen "READ", "CREATE"
```GET [base]/Communication?_id=103270```
- Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](http://hl7.org/fhir/R4/search.html#all).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](https://hl7.org/fhir/R4/search.html#all).
1. Der Suchparameter "subject" MUSS unterstützt werden:
@@ -80,7 +80,7 @@ Für die Ressource Communication MÜSSEN die REST-Interaktionen "READ", "CREATE"
```GET [base]/Communication?subject=Patient/ISiKPatientExample```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Communication.subject" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference)
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Communication.subject" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference)
1. Der Suchparameter "recipient" MUSS unterstützt werden:
@@ -88,7 +88,7 @@ Für die Ressource Communication MÜSSEN die REST-Interaktionen "READ", "CREATE"
```GET [base]/Communication?recipient=Practitioner/ISiKPractitionerExample```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Communication.subject" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference)
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Communication.subject" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference)
1. Der Suchparameter "sender" MUSS unterstützt werden:
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminAppointment.md b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminAppointment.md
index fd515147..d75a52d3 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminAppointment.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminAppointment.md
@@ -1,201 +1,203 @@
-## ISiKTermin [(Appointment)](http://hl7.org/fhir/appointment.html)
-
----
-
-### Motivation
-
-Das Datenobjekte ISiKTermin repräsentiert einen gebuchten Termin, sowie einen Terminvorschlag.
-
----
-
-### Kompabilität
-
-Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompabilität}}.
-
----
-
-### FHIR-Profil
-
-@```
-from StructureDefinition where url = 'https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' select Name: name, Canonical: url
-```
-
-{{tree:https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin, hybrid}}
-
-Folgende FHIRPath-Constraints sind im Profil zu beachten:
-
-@``` from StructureDefinition where url = 'https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' for differential.element.constraint select key, severity, human, expression```
-
----
-
-**Terminology Bindings**
-
-@```
-from StructureDefinition
-where url in ('https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' )
-for differential.element
-select
-Path: path,
-join binding.where(valueSet.exists())
-{
- Name: valueSet.substring((9 + valueSet.indexOf('ValueSet/'))),
- Strength: strength,
- URL: valueSet
-}
-```
-
----
-
-### Anmerkungen zu Must-Support-Feldern
-
-### `Appointment.meta.tag`
-
-**Bedeutung:** Herkunft der Termnins
-
-**Hinweis:** Angabe, ob der Termin durch einen externen Termin Requestor eingestellt wurde. Falls das Datenobjekt dauerhaft in das Termin Repository gespeichert wird, KANN der Tag entfernt werden. Für die weitere Prozesssteuerung kann eine Unterscheidung, ob es sich um einen intern oder extern erstellten Termin handelt, notwendig sein, sodass aus Gründen der Nachvollziehbarkeit der Tag bestehen bleiben sollte. Des Weiteren gelten die Vorgaben des ISiK Basismoduls zur [CREATE-Interaktion](https://simplifier.net/guide/isik-basismodul-stufe2/UebergreifendeFestlegungenRest).
-
-### `Appointment.extension:Nachricht`
-
-**Bedeutung:** Kommunikation mit dem Patienten
-
-**Hinweis:** Für die Kommunikation mit dem Patienten sind Communication-Ressourcen zu verwenden. Für den Termin relevante Kommentare oder Anhänge MÜSSEN angegeben werden. Zudem kann die Communication-Ressource auch für die Kommunikation zwischen Leistungserbringer verwendet werden. Es ist zu beachten, dass in diesem Fall Kommentare vor der Herausgabe an die Patien:in gefiltert werden sollten.
-
-### `Appointment.extension:replaces`
-
-**Bedeutung:** Angabe eines abgesagten / verschobenen Termins
-
-**Hinweis:** Im Falle, dass per $book-Operation ein verschobener / abgesagter Termin angegeben wird, MUSS dieser für die Rückverfolgbarkeit referenziert werden.
-
-### `Appointment.status`
-
-**Bedeutung:** Differenzierung zwischen Terminwunsch und gebuchten Termin
-
-**Hinweis:** Ein Termin Requestor kann im Status entsprechend wählen, sodass der Termin als Terminwunsch zu interpretieren ist. Nachdem der Termin bestätigt wurde, ist der Terminstatus durch das Terminrepository anzupassen.
-
-Alle Statuswerte MÜSSEN durch ein bestätigungsrelevantes System unterstüzt werden, insbesondere der Status "proposed" und "booked".
-
-### `Appointment.cancelationReason`
-
-**Bedeutung:** Grund für die Absage eines Termins
-
-**Hinweis:** Eine minimale Kodierung MUSS mittels des vorgeschlagenen Bindings vorliegen. Granularere Differenzierungen können durch weitere Codings erfolgen.
-
-### `Appointment.serviceType`
-
-**Bedeutung:** Kodierung der Behandlungsleistung des Termins
-
-**Hinweis:** Dies SOLL der Kodierung des serviceType eines Schedules entsprechen, der innerhalb des Termins gebucht wird.
-
-### `Appointment.specialty`
-
-**Bedeutung:** Kodierung der Fachrichtung des Termins
-
-**Hinweis:** Sofern aus den auf der Appointment-Ressource aufsetzenden Anwendungsfällen eine weitere Verarbeitung der Ressource durch einen menschlichen Nutzer nicht ausgeschlossen werden kann, MUSS das bestätigungsrelevante System mit dem Termin verbundenen Ressourcen (insb. `Appointment.slot`, `Appointment.slot.schedule`, `Appointment.participant:AkteurMedizinischeBehandlungseinheit.actor`) oder aus dem spezifischen Kontext verfügbare Informationen auswerten und das Element `Appointment.specialty` mit einem sinnvollen Wert kodieren (eine Ausnahme bildet hier zum Beispiel die fachrichtungs-unabhängige Terminplanung durch krankenhausinterne, zentrale Organisationseinheiten).
-Insbesondere ist die Kodierung der Fachrichtung des Termins notwendig im Kontext der Bereitstellung einer graphischen Oberfläche, wie sie Endnutzenden in einem Zuweiserportal/Patientenportal zur Ansicht gebracht wird.
-
-
-### `Appointment.priority.extension:Priority`
-
-**Bedeutung:** Kodierte Angabe der Priorität des Termins
-
-**Hinweis:** Anstelle der numerischen Priorität MUSS in ISiK eine kodierte Priorität angegeben werden.
-
-### `Appointment.start`
-
-**Bedeutung:** Startzeitpunkt des Termins
-
-**Hinweis:** Sofern der Termin an einen Slot gebunden ist, SOLL der Startzeitpunkt des Termins dem Startzeitpunkt des ersten Slots des Termins entsprechen.
-
-### `Appointment.end`
-
-**Bedeutung:** Endzeitpunkt des Termins
-
-**Hinweis:** Sofern der Termin an einen Slot gebunden ist, SOLL der Endzeitpunkt des Termins dem Endzeitpunkt des letzten Slots des Termins entsprechen.
-
-
-### `Appointment.slot`
-
-**Bedeutung:** Referenzierung der Slots für die Verknüpfung des Termins mit einem Schedule
-
-**Hinweis:** Die Referenzierung des Schedules kann durch einen oder mehrere Slots erfolgen. Es kann keine Reihenfolge durch die Angabe der Slots abgeleitet werden.
-
-**Hinweis:** In der Vergangenheit liegende Slots, welche nicht verknüpft wurden, dürfen nicht mehr abrufbar sein. Jegliche andere Slots müssen auch per id, herausgegeben werden. Sobald die id einmalig per Search herausgeben wurde, müssen diese gleichbleibend abrufbar sein.
-
-### `Appointment.patientInstruction`
-
-**Bedeutung:** Handlungsanweisungen für die Patienten in Vorbereitung auf den Termin
-
-### `Appointment.participant`
-
-**Bedeutung:** TeilnehmerInnen des Termins
-
-**Hinweis:** Mindestens eine Patient-Referenz MUSS angegeben werden. Dies MUSS durch das Termin-Repository während der Buchung des Termins geprüft werden. Weitere Leistungserbringer KÖNNEN angegeben werden.
-
----
-
-### Interaktionen
-
-Für die Ressource Appointment MÜSSEN die REST-Interaktionen "READ" und "PATCH" implementiert werden.
-
-1. Der Suchparameter "_id" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?_id=103270```
-
- Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](http://hl7.org/fhir/R4/search.html#all).
-
-1. Der Suchparameter "status" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?status=booked```
-
- Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.status" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
-
-1. Der Suchparameter "service-type" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?service-type=http://example.org/fhir/CodeSystem/ScheduleServiceType|CT```
-
- Anwendungshinweise: Bei einer Suche mit dem ":not"-Modifier MÜSSEN Ressourcen, die keinen Wert für "Appointment.serviceType" enthalten, im Suchergebnis enthalten sein. Bei einer Suche ohne den ":not"-Modifier DÜRFEN Ressourcen, die keinen Wert für "Appointment.serviceType" enthalten, NICHT im Suchergebnis enthalten sein. Weitere Informationen zur Suche nach "Appointment.serviceType" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
-
-1. Der Suchparameter "specialty" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?specialty=urn:oid:1.2.276.0.76.5.114|535```
-
- Anwendungshinweise: Bei einer Suche mit dem ":not"-Modifier MÜSSEN Ressourcen, die keinen Wert für "Appointment.speciality" enthalten, im Suchergebnis enthalten sein. Bei einer Suche ohne den ":not"-Modifier DÜRFEN Ressourcen, die keinen Wert für "Appointment.speciality" enthalten, NICHT im Suchergebnis enthalten sein. Weitere Informationen zur Suche nach "Appointment.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
-
-
-1. Der Suchparameter "date" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?date=2022-12-10T09:00:00Z```
-
- Anwendungshinweise: Die Suche wird gegen das Element "Appointment.start" ausgewertet. Weitere Informationen zur Suche nach "Appointment.start" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Date Search"](http://hl7.org/fhir/R4/search.html#date).
-
-1. Der Suchparameter "slot" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?slot=Slot/ISiKSlotExample```
-
- Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.slot" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference).
-
-1. Der Suchparameter "actor" MUSS unterstützt werden:
-
- Beispiele:
-
- ```GET [base]/Appointment?actor=Patient/ISiKPatientExample```
-
- Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.participant.actor" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference).
-
----
-
-### Beispiele
-
-{{json:ISiKTerminExample}}
+## ISiKTermin [(Appointment)](https://hl7.org/fhir/R4/appointment.html)
+
+---
+
+### Motivation
+
+Das Datenobjekte ISiKTermin repräsentiert einen gebuchten Termin, sowie einen Terminvorschlag.
+
+---
+
+### Kompatibilität
+
+Siehe {{pagelink:ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md, text:Kompatibilität}}.
+
+---
+
+### FHIR-Profil
+
+@```
+from StructureDefinition where url = 'https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' select Name: name, Canonical: url
+```
+
+{{tree:https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin, hybrid}}
+
+**Hinweis:** Die Kardinalität von participant.actor.display und das MS-Flag von participant.status wird an die Slices vererbt und diese sind entsprechend zu implementieren.
+
+Folgende FHIRPath-Constraints sind im Profil zu beachten:
+
+@``` from StructureDefinition where url = 'https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' for differential.element.constraint select key, severity, human, expression```
+
+---
+
+**Terminology Bindings**
+
+@```
+from StructureDefinition
+where url in ('https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin' )
+for differential.element
+select
+Path: path,
+join binding.where(valueSet.exists())
+{
+ Name: valueSet.substring((9 + valueSet.indexOf('ValueSet/'))),
+ Strength: strength,
+ URL: valueSet
+}
+```
+
+---
+
+### Anmerkungen zu Must-Support-Feldern
+
+### `Appointment.meta.tag`
+
+**Bedeutung:** Herkunft der Termins
+
+**Hinweis:** Angabe, ob der Termin durch einen externen Termin Requestor eingestellt wurde. Falls das Datenobjekt dauerhaft in das Termin Repository gespeichert wird, KANN der Tag entfernt werden. Für die weitere Prozesssteuerung kann eine Unterscheidung, ob es sich um einen intern oder extern erstellten Termin handelt, notwendig sein, sodass aus Gründen der Nachvollziehbarkeit der Tag bestehen bleiben sollte. Des Weiteren gelten die Vorgaben des ISiK Basismoduls zur [CREATE-Interaktion](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current).
+
+### `Appointment.extension:Nachricht`
+
+**Bedeutung:** Kommunikation mit dem Patienten
+
+**Hinweis:** Für die Kommunikation mit dem Patienten sind Communication-Ressourcen zu verwenden. Für den Termin relevante Kommentare oder Anhänge MÜSSEN angegeben werden. Zudem kann die Communication-Ressource auch für die Kommunikation zwischen Leistungserbringer verwendet werden. Es ist zu beachten, dass in diesem Fall Kommentare vor der Herausgabe an die Patient:in gefiltert werden sollten.
+
+### `Appointment.extension:replaces`
+
+**Bedeutung:** Angabe eines abgesagten / verschobenen Termins
+
+**Hinweis:** Im Falle, dass per $book-Operation ein verschobener / abgesagter Termin angegeben wird, MUSS dieser für die Rückverfolgbarkeit referenziert werden.
+
+### `Appointment.status`
+
+**Bedeutung:** Differenzierung zwischen Terminwunsch und gebuchten Termin
+
+**Hinweis:** Ein Termin Requestor kann im Status entsprechend wählen, sodass der Termin als Terminwunsch zu interpretieren ist. Nachdem der Termin bestätigt wurde, ist der Terminstatus durch das Termin-Repository anzupassen.
+
+Alle Statuswerte MÜSSEN durch ein bestätigungsrelevantes System unterstützt werden, insbesondere der Status "proposed" und "booked".
+
+### `Appointment.cancelationReason`
+
+**Bedeutung:** Grund für die Absage eines Termins
+
+**Hinweis:** Eine minimale Kodierung MUSS mittels des vorgeschlagenen Bindings vorliegen. Differenzierungen mit feinerer Granularität können durch weitere Codings erfolgen.
+
+### `Appointment.serviceType`
+
+**Bedeutung:** Kodierung der Behandlungsleistung des Termins
+
+**Hinweis:** Dies SOLL der Kodierung des serviceType eines Schedules entsprechen, der innerhalb des Termins gebucht wird.
+
+### `Appointment.specialty`
+
+**Bedeutung:** Kodierung der Fachrichtung des Termins
+
+**Hinweis:** Sofern aus den auf der Appointment-Ressource aufsetzenden Anwendungsfällen eine weitere Verarbeitung der Ressource durch einen menschlichen Nutzer nicht ausgeschlossen werden kann, MUSS das bestätigungsrelevante System mit dem Termin verbundenen Ressourcen (insb. `Appointment.slot`, `Appointment.slot.schedule`, `Appointment.participant:AkteurMedizinischeBehandlungseinheit.actor`) oder aus dem spezifischen Kontext verfügbare Informationen auswerten und das Element `Appointment.specialty` mit einem sinnvollen Wert kodieren (eine Ausnahme bildet hier zum Beispiel die fachrichtungs-unabhängige Terminplanung durch krankenhausinterne, zentrale Organisationseinheiten).
+Insbesondere ist die Kodierung der Fachrichtung des Termins notwendig im Kontext der Bereitstellung einer graphischen Oberfläche, wie sie Endnutzenden in einem Zuweiserportal/Patientenportal zur Ansicht gebracht wird.
+
+
+### `Appointment.priority.extension:Priority`
+
+**Bedeutung:** Kodierte Angabe der Priorität des Termins
+
+**Hinweis:** Anstelle der numerischen Priorität MUSS in ISiK eine kodierte Priorität angegeben werden.
+
+### `Appointment.start`
+
+**Bedeutung:** Startzeitpunkt des Termins
+
+**Hinweis:** Sofern der Termin an einen Slot gebunden ist, SOLL der Startzeitpunkt des Termins dem Startzeitpunkt des ersten Slots des Termins entsprechen.
+
+### `Appointment.end`
+
+**Bedeutung:** Endzeitpunkt des Termins
+
+**Hinweis:** Sofern der Termin an einen Slot gebunden ist, SOLL der Endzeitpunkt des Termins dem Endzeitpunkt des letzten Slots des Termins entsprechen.
+
+
+### `Appointment.slot`
+
+**Bedeutung:** Referenzierung der Slots für die Verknüpfung des Termins mit einem Schedule
+
+**Hinweis:** Die Referenzierung des Schedules kann durch einen oder mehrere Slots erfolgen. Es kann keine Reihenfolge durch die Angabe der Slots abgeleitet werden.
+
+**Hinweis:** In der Vergangenheit liegende Slots, welche nicht verknüpft wurden, dürfen nicht mehr abrufbar sein. Jegliche andere Slots müssen auch per id, herausgegeben werden. Sobald die id einmalig per Search herausgeben wurde, müssen diese gleichbleibend abrufbar sein.
+
+### `Appointment.patientInstruction`
+
+**Bedeutung:** Handlungsanweisungen für die Patienten in Vorbereitung auf den Termin
+
+### `Appointment.participant`
+
+**Bedeutung:** TeilnehmerInnen des Termins
+
+**Hinweis:** Mindestens eine Patient-Referenz MUSS angegeben werden. Dies MUSS durch das Termin-Repository während der Buchung des Termins geprüft werden. Weitere Leistungserbringer KÖNNEN angegeben werden.
+
+---
+
+### Interaktionen
+
+Für die Ressource Appointment MÜSSEN die REST-Interaktionen "READ" und "PATCH" implementiert werden.
+
+1. Der Suchparameter "_id" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?_id=103270```
+
+ Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](https://hl7.org/fhir/R4/search.html#all).
+
+1. Der Suchparameter "status" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?status=booked```
+
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.status" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
+
+1. Der Suchparameter "service-type" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?service-type=http://example.org/fhir/CodeSystem/ScheduleServiceType|CT```
+
+ Anwendungshinweise: Bei einer Suche mit dem ":not"-Modifier MÜSSEN Ressourcen, die keinen Wert für "Appointment.serviceType" enthalten, im Suchergebnis enthalten sein. Bei einer Suche ohne den ":not"-Modifier DÜRFEN Ressourcen, die keinen Wert für "Appointment.serviceType" enthalten, NICHT im Suchergebnis enthalten sein. Weitere Informationen zur Suche nach "Appointment.serviceType" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
+
+1. Der Suchparameter "specialty" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?specialty=urn:oid:1.2.276.0.76.5.114|535```
+
+ Anwendungshinweise: Bei einer Suche mit dem ":not"-Modifier MÜSSEN Ressourcen, die keinen Wert für "Appointment.specialty" enthalten, im Suchergebnis enthalten sein. Bei einer Suche ohne den ":not"-Modifier DÜRFEN Ressourcen, die keinen Wert für "Appointment.specialty" enthalten, NICHT im Suchergebnis enthalten sein. Weitere Informationen zur Suche nach "Appointment.specialty" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
+
+
+1. Der Suchparameter "date" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?date=2022-12-10T09:00:00Z```
+
+ Anwendungshinweise: Die Suche wird gegen das Element "Appointment.start" ausgewertet. Weitere Informationen zur Suche nach "Appointment.start" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Date Search"](https://hl7.org/fhir/R4/search.html#date).
+
+1. Der Suchparameter "slot" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?slot=Slot/ISiKSlotExample```
+
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.slot" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference).
+
+1. Der Suchparameter "actor" MUSS unterstützt werden:
+
+ Beispiele:
+
+ ```GET [base]/Appointment?actor=Patient/ISiKPatientExample```
+
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Appointment.participant.actor" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference).
+
+---
+
+### Beispiele
+
+{{json:ISiKTerminExample}}
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminKontaktMitGesundheitseinrichtung.md b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminKontaktMitGesundheitseinrichtung.md
index e2f72919..7aaeb33f 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminKontaktMitGesundheitseinrichtung.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminKontaktMitGesundheitseinrichtung.md
@@ -1,4 +1,4 @@
-## ISiKTerminKontaktMitGesundheitseinrichtung [(Encounter)](http://hl7.org/fhir/encounter.html)
+## ISiKTerminKontaktMitGesundheitseinrichtung [(Encounter)](https://hl7.org/fhir/R4/encounter.html)
---
@@ -32,7 +32,7 @@ from StructureDefinition where url = 'https://gematik.de/fhir/isik/v3/Terminplan
**Hinweise:** Die Referenz auf Appointment ermöglicht Portalen den Fallbezug aus dem Termin zu ermitteln und Dokumente an ein KIS zu senden.
-Zur Umsetzung der Funktionalität zum Dokumentenaustausch gemäß ISiK ist der entsprechende [Implementation Guide zum Modul Dokumentenaustausch](https://simplifier.net/guide/Implementierungsleitfaden%20ISiK-Modul%20Dokumentenaustausch/ImplementationGuide-markdown-Einfuehrung?version=current) zu beachten.
+Zur Umsetzung der Funktionalität zum Dokumentenaustausch gemäß ISiK ist der entsprechende [Implementation Guide zum Modul Dokumentenaustausch](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Modul-Dokumentenaustausch-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) zu beachten.
---
@@ -46,7 +46,7 @@ Der Suchparameter "appointment" MUSS unterstützt werden:
```GET [base]/Encounter?appointment=Appointment/123```
- Anwendungshinweise: Weitere Informationen zur Suche nach "appointment" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Reference Search"](https://www.hl7.org/fhir/search.html#reference).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "appointment" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Reference Search"](https://www.hl7.org/fhir/R4/search.html#reference).
### Weitere
diff --git a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminblockSlot.md b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminblockSlot.md
index f5649d9e..fc348024 100644
--- a/ImplementationGuide/markdown/Datenobjekte/ISiKTerminblockSlot.md
+++ b/ImplementationGuide/markdown/Datenobjekte/ISiKTerminblockSlot.md
@@ -1,4 +1,4 @@
-## ISiKTerminblock [(Slot)](http://hl7.org/fhir/slot.html)
+## ISiKTerminblock [(Slot)](https://hl7.org/fhir/R4/slot.html)
---
@@ -66,7 +66,7 @@ Für die Ressource Slot MUSS die REST-Interaktion "READ" implementiert werden.
```GET [base]/Slot?_id=103270```
- Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](http://hl7.org/fhir/R4/search.html#all).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "_id" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Parameters for all resources"](https://hl7.org/fhir/R4/search.html#all).
2. Der Suchparameter "schedule" MUSS unterstützt werden:
@@ -74,7 +74,7 @@ Für die Ressource Slot MUSS die REST-Interaktion "READ" implementiert werden.
```GET [base]/Slot?schedule=Schedule/ISiKKalenderExample```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.schedule" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](http://hl7.org/fhir/R4/search.html#reference).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.schedule" finden sich in der [FHIR-Basisspezifikation - Abschnitt "reference"](https://hl7.org/fhir/R4/search.html#reference).
3. Der Suchparameter "status" MUSS unterstützt werden:
@@ -82,7 +82,7 @@ Für die Ressource Slot MUSS die REST-Interaktion "READ" implementiert werden.
```GET [base]/Slot?status=busy```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.status" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](http://hl7.org/fhir/R4/search.html#token).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.status" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Token Search"](https://hl7.org/fhir/R4/search.html#token).
4. Der Suchparameter "start" MUSS unterstützt werden:
@@ -90,7 +90,7 @@ Für die Ressource Slot MUSS die REST-Interaktion "READ" implementiert werden.
```GET [base]/Slot?start=2022-12-10T09:00:00Z```
- Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.start" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Date Search"](http://hl7.org/fhir/R4/search.html#date).
+ Anwendungshinweise: Weitere Informationen zur Suche nach "Slot.start" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Date Search"](https://hl7.org/fhir/R4/search.html#date).
5. Abfrage aller verfügbaren Slots für einen Kalender:
diff --git a/ImplementationGuide/markdown/Datenobjekte/Operations.md b/ImplementationGuide/markdown/Datenobjekte/Operations.md
index 16d61b4a..0fef9dd6 100644
--- a/ImplementationGuide/markdown/Datenobjekte/Operations.md
+++ b/ImplementationGuide/markdown/Datenobjekte/Operations.md
@@ -1,6 +1,6 @@
### {{page-title}}
-Es gelten die allgemeinen Vorgaben der FHIR-Kernspezifikation für die Ausführung von [Custom Operations](https://www.hl7.org/fhir/operations.html).
+Es gelten die allgemeinen Vorgaben der FHIR-Kernspezifikation für die Ausführung von [Custom Operations](https://www.hl7.org/fhir/R4/operations.html).
---
@@ -12,7 +12,7 @@ Es gelten die allgemeinen Vorgaben der FHIR-Kernspezifikation für die Ausführu
Folgende Schritte KÖNNEN notwendig sein, sodass ein Termin durch einen Termin-Requestor innerhalb eines Termin-Repository eingestellt wird. Es ist zu beachten, dass für spezielle Implementierungen nicht alle Schritte hiervon relevant sind und übersprungen werden können.
-Generell wird darauf hingewiesen, dass abhängig davon, welcher Client oder Benutzer eine Interaktion ausführt, unterschiedliche Ergebnisse zurückgeliefert werden können. Die vorliegende Spezifikation macht keine Vorgaben, wie eine Authentifizierung und Autorisierung zu implementieren ist. Es wird hierzu auf das [ISiK-Modul 'Sicherheit'](https://simplifier.net/guide/implementierungsleitfaden-isik-sicherheit---rechtedelegation-und?version=current) verwiesen.
+Generell wird darauf hingewiesen, dass abhängig davon, welcher Client oder Benutzer eine Interaktion ausführt, unterschiedliche Ergebnisse zurückgeliefert werden können. Die vorliegende Spezifikation macht keine Vorgaben, wie eine Authentifizierung und Autorisierung zu implementieren ist. Es wird hierzu auf das [ISiK-Modul 'Sicherheit'](https://simplifier.net/guide/implementierungsleitfaden-isik-sicherheit-stufe-3?version=current) verwiesen.
User Story für die folgenden Beispiele: Ein Patient bucht über ein externes Patientenportal einen Termin in der allgemeinmedizinischen Ambulanz eines Krankenhauses. Da der Patient seit Tagen Bauchschmerzen hat, die in den letzten Stunden stärker werden, wählt er die Priorität "Notfall".
@@ -207,16 +207,16 @@ Antwort des Termin-Repository:
}
```
-Für den Fall, dass ein Terminrepository zum aktuellen Zeitpunkt keine Terminbestätigung geben kann, wird in der Antwortnachricht zurückgegebenen Appointment-Ressource der Wert von "Appointment.status" auf "pending" gesetzt. Als HTTP-Status-Code MUSS das Terminrepository "202 - Accepted" zurückgeben.
-Beispielsweise kann dies der Fall sein, falls ein Termin zunächst manuell im Terminrepository bestätigt werden muss. Sobald ein Termin im Status "pending" seitens des Terminrepository bestätigt oder abgesagt wurde, MUSS das Terminrepository den Status des Termins auf "booked" bzw. "canceled" stellen. Sofern dieses unterstützt wird, SOLL eine Benachrichtigung des Termin-Consumers per Push-Mechanismus erfolgen (siehe auch nächster Abschnitt). In jedem Fall MUSS der Termin-Consumer über eine Lese- oder Such-Anfrage jederzeit den aktuellen Status der Terminbuchung ermitteln können.
+Für den Fall, dass ein Termin-Repository zum aktuellen Zeitpunkt keine Terminbestätigung geben kann, wird in der Antwortnachricht zurückgegebenen Appointment-Ressource der Wert von "Appointment.status" auf "pending" gesetzt. Als HTTP-Status-Code MUSS das Termin-Repository "202 - Accepted" zurückgeben.
+Beispielsweise kann dies der Fall sein, falls ein Termin zunächst manuell im Termin-Repository bestätigt werden muss. Sobald ein Termin im Status "pending" seitens des Termin-Repository bestätigt oder abgesagt wurde, MUSS das Termin-Repository den Status des Termins auf "booked" bzw. "canceled" stellen. Sofern dieses unterstützt wird, SOLL eine Benachrichtigung des Termin-Consumers per Push-Mechanismus erfolgen (siehe auch nächster Abschnitt). In jedem Fall MUSS der Termin-Consumer über eine Lese- oder Such-Anfrage jederzeit den aktuellen Status der Terminbuchung ermitteln können.
---
### Aktualisierung / Absage eines Termins
-Es ist zu beachten, dass es aus Effizienzgründen für bestimmte Implementierungen sinnvoll sein kann, dass Updates einer Appointment-Ressource ausgelöst durch das Termin-Repository mittels eines Push-Mechanismus an Termin-Consumer / Termin-Requestor übermittelt werden. Im Standard-Fall müssen diese Akteure die Ressourcen mittels des entsprechenden Endpunktes eigenständig abfragen und auf Updates überprüfen. Für einen Push-Mechanismus wird auf [FHIR Subscriptions](https://www.hl7.org/fhir/subscription.html) verwiesen. Die vorliegende Spezifikation macht jedoch KEINE Vorgaben für die Verwendung einer solchen Methodik.
+Es ist zu beachten, dass es aus Effizienzgründen für bestimmte Implementierungen sinnvoll sein kann, dass Updates einer Appointment-Ressource ausgelöst durch das Termin-Repository mittels eines Push-Mechanismus an Termin-Consumer / Termin-Requestor übermittelt werden. Im Standard-Fall müssen diese Akteure die Ressourcen mittels des entsprechenden Endpunktes eigenständig abfragen und auf Updates überprüfen. Für einen Push-Mechanismus wird auf [FHIR Subscriptions](https://www.hl7.org/fhir/R4/subscription.html) verwiesen. Die vorliegende Spezifikation macht jedoch KEINE Vorgaben für die Verwendung einer solchen Methodik.
-Eine Aktualisierung der Ressource erfolgt mittels einer [HTTP PATCH-Interaktion](https://www.hl7.org/fhir/http.html#patch). Updates einer Appointment-Ressource MUSS das Termin Repository untersützen. Es MUSS mindestens die PATCH-Interaktion auf Basis einer FHIRPath-Patch-Parameter Ressource unterstüzt werden.
+Eine Aktualisierung der Ressource erfolgt mittels einer [HTTP PATCH-Interaktion](https://www.hl7.org/fhir/R4/http.html#patch). Updates einer Appointment-Ressource MUSS das Termin Repository unterstützen. Es MUSS mindestens die PATCH-Interaktion auf Basis einer FHIRPath-Patch-Parameter Ressource unterstützt werden.
Folgende Elemente DÜRFEN NICHT durch ein Update der Ressourcen verändert werden:
@@ -258,18 +258,18 @@ Beispiel: Absage eines Termins
### Anlage einer Patient-Ressource
-Ein Termin Repository MUSS die Anlage (Create-Interaktion) einer Patient-Ressource entsprechend der Vorgaben des [ISiK-Basismoduls](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current) unterstützen.
+Ein Termin Repository MUSS die Anlage (Create-Interaktion) einer Patient-Ressource entsprechend der Vorgaben des [ISiK-Basismoduls](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current) unterstützen.
---
### Asynchrone Ausführung $book
-Die Operation zur Buchung eines Termin MUSS ebenfalls asychron ausgeführt werden können, für den Fall, dass ein Terminrepository keine Zusagen zu Antwortzeiten machen kann und so dass Problem besteht, dass der Client in einen Timeout läuft. Beispielsweise kann dies der Fall sein, wenn die Buchungsanfrage im Terminrepository asynchrone Anfragen an andere Systeme auslöst und der Termin erst bestätigt werden kann, wenn diese durchgelaufen sind. Es gelten die Regeln der [FHIR Kernspezifikation - Abschnitt 3.2.0.7 Executing an Operation Asynchronously](https://www.hl7.org/fhir/r4/operations.html):
+Die Operation zur Buchung eines Termin MUSS ebenfalls asynchron ausgeführt werden können, für den Fall, dass ein Termin-Repository keine Zusagen zu Antwortzeiten machen kann und so dass Problem besteht, dass der Client in einen Timeout läuft. Beispielsweise kann dies der Fall sein, wenn die Buchungsanfrage im Termin-Repository asynchrone Anfragen an andere Systeme auslöst und der Termin erst bestätigt werden kann, wenn diese durchgelaufen sind. Es gelten die Regeln der [FHIR Kernspezifikation - Abschnitt 3.2.0.7 Executing an Operation Asynchronously](https://www.hl7.org/fhir/r4/operations.html):
- Der Aufruf der $book-Operation erfolgte auch im asynchronen Fall durch einen POST-Request
- Ein HTTP-Header mit dem Namen "Prefer" und dem Inhalt "respond-async" MUSS im Aufruf der Operation enthalten sein
-- Als HTTP-Status-Code MUSS das Terminrepository 202 - Accepted zurückgeben
+- Als HTTP-Status-Code MUSS das Termin-Repository 202 - Accepted zurückgeben
- Im Fehlerfall MUSS ein 4XX- oder 5XX-HTTP-Status-Code zurückgeben werden
-- Zudem MUSS das Terminrepository einen "Content-Location"-Header zurückliefern indem eine valide absolute URL enthalten ist unter welcher die oben beschriebene Appointment- bzw OperationOutcome-Ressource als Antwort auf die Buchung des Termins abgerufen werden kann
+- Zudem MUSS das Termin-Repository einen "Content-Location"-Header zurückliefern indem eine valide absolute URL enthalten ist unter welcher die oben beschriebene Appointment- bzw OperationOutcome-Ressource als Antwort auf die Buchung des Termins abgerufen werden kann
diff --git a/ImplementationGuide/markdown/Einfuehrung.md b/ImplementationGuide/markdown/Einfuehrung.md
index 94616275..8cdf9189 100644
--- a/ImplementationGuide/markdown/Einfuehrung.md
+++ b/ImplementationGuide/markdown/Einfuehrung.md
@@ -1,9 +1,9 @@
-
+
----
-Version: 3.0.1
+Version: 3.0.2
-Datum: 1.07.2023
+Datum: 03.01.2024
Status: Aktiv
@@ -13,7 +13,7 @@ Realm: Deutschland
# Interoperabler Datenaustausch durch Informationssysteme im Krankenhaus (ISiK)
-Die gematik wurde vom Gesetzgeber beauftragt, im Benehmen mit der Deutschen Krankenhausgesellschaft (DKG) und den maßgeblichen Bundesverbänden der Industrie im Gesundheitswesen, verbindliche Standards für den Austausch von Gesundheitsdaten mit Informationssystemen im Krankenhaus zu erarbeiten. Dieser FHIR ImplementationGuide (IG) beschreibt die für diesen Zweck entwickelten FHIR Profile und das [REST](https://de.wikipedia.org/wiki/Representational_State_Transfer)-basierte Application Programming Interface (API). Die REST-API wird im Wesentlichen [vom FHIR Standard vorgegeben](https://www.hl7.org/fhir/http.html). Dieser Leitfaden konkretisiert die ISiK-relevanten Funktionen der Standard-REST-API und trifft inhaltliche Festlegungen zu den ISiK-relevanten Ressourcen in Form von Ressourcen-Profilen.
+Die gematik wurde vom Gesetzgeber beauftragt, im Benehmen mit der Deutschen Krankenhausgesellschaft (DKG) und den maßgeblichen Bundesverbänden der Industrie im Gesundheitswesen, verbindliche Standards für den Austausch von Gesundheitsdaten mit Informationssystemen im Krankenhaus zu erarbeiten. Dieser FHIR ImplementationGuide (IG) beschreibt die für diesen Zweck entwickelten FHIR Profile und das [REST](https://de.wikipedia.org/wiki/Representational_State_Transfer)-basierte Application Programming Interface (API). Die REST-API wird im Wesentlichen [vom FHIR Standard vorgegeben](https://www.hl7.org/fhir/R4/http.html). Dieser Leitfaden konkretisiert die ISiK-relevanten Funktionen der Standard-REST-API und trifft inhaltliche Festlegungen zu den ISiK-relevanten Ressourcen in Form von Ressourcen-Profilen.
Hersteller bestätigungsrelevanter Systeme sollen durch diesen IG in die Lage versetzt werden, eine konforme Implementierung zu erstellen und das Bestätigungsverfahren der gematik erfolgreich zu absolvieren.
diff --git a/ImplementationGuide/markdown/ReleaseNotes.md b/ImplementationGuide/markdown/ReleaseNotes.md
index 4732729b..b56e7681 100644
--- a/ImplementationGuide/markdown/ReleaseNotes.md
+++ b/ImplementationGuide/markdown/ReleaseNotes.md
@@ -5,7 +5,6 @@ Im Rahmen der ISiK-Veröffentlichungen wird das [Semantic Versioning](https://se
Die erste Ziffer X bezeichnet ein Major-Release und regelt die Gültigkeit von Releases. Die dritte Ziffer Y (Release x.0.y) bezeichnet eine technische Korrektur und versioniert kleinere Änderungen (Packages) während eines Jahres, z. B. 1.0.1.
----
-Version: 4.0.0
Datum: xx.xx.2024
@@ -14,6 +13,43 @@ Datum: xx.xx.2024
----
+Version: 3.0.2
+
+Datum: 03.01.2024
+
+* Update ISiK Basismodul Dependency -> 3.0.1
+* Klärung zur Verwendung der Binary: add link for clarification by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/156
+* CapabilityStatement Anforderungen entsprechend angepasst: fix CpS Encounter Read and Search interaction by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/154
+* Klärung zur Verwendung der Ressourcen aus dem Basismodul: Feature/ptdata 723 update interactions by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/158
+* Klärung zur Nutzung der ISiKNachricht; Feature/clarify bidirectional anfisk 178 by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/160
+
+**Full Changelog**: https://github.com/gematik/spec-ISiK-Terminplanung/compare/v3.0.1...v3.0.2
+
+----
+Version: 3.0.1
+
+Datum: 30.10.2023
+
+Mit dem Release der Stufe 3.0.1 werden die unten gelisteten Änderungen normativ festgesetzt.
+
+* Fixing KalenderName extension name ISiKKalenderSchedule.md by @alexey-tschudnowsky in https://github.com/gematik/spec-ISiK-Terminplanung/pull/110
+* Fix Suchparameter "content-mode" zu "context-type-value" by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/120
+* Anpassung CapabilityStatement an die textuelle Beschreibung der verpflichtenden Interaktionen by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/125
+* Informative Anmerkung für den Fall, dass .extenstion:name nicht verfügbar ist by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/129
+* Anpassung Sequenzdiagramme by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/127
+* Example Canonical für Behandlungsleistung angepasst by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/134
+* Abfrage aller verfügbaren Slots für Kalender durch Termin-Requestor by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/135
+* Verwendung realistische Dauer für einen Slot in den Beispielen by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/137
+* Angleichung der Regeln zu meta.tag in Appointments by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/136
+* Fix HTTP return code by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/131
+* Hinweis zur Abfrage von Behandlungsleistungen hinzugefügt by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/139
+* BookOperation Anforderung von KANN zu SOLLTE by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/143
+* Austausch der Communication/Binary-Ressourcen genauer beschrieben by @alexzautke in https://github.com/gematik/spec-ISiK-Terminplanung/pull/140
+* Enhancement: Appointment and Slot reference MS by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/133
+
+
+**Full Changelog**: https://github.com/gematik/spec-ISiK-Terminplanung/compare/v.2.0.3...v3.0.1
+
----
Version: 3.0.0
@@ -43,7 +79,7 @@ Version: 3.0.0-rc1
Datum: 04.04.2023
-* ISiKTerminKontaktMitGesundheitseinrichtung - by @f-peverali in : Entfernen des Profils da kein integraler Use Case für Terminvereinbarung und Inkompatiblität zum ISiK Basisprofil
+* ISiKTerminKontaktMitGesundheitseinrichtung - by @f-peverali in : Entfernen des Profils da kein integraler Use Case für Terminvereinbarung und Inkompatibilität zum ISiK Basisprofil
* ISiKNachricht: Hinweis zum Thema Sicherheit eingefügt. Ohne weitere Maßnahmen können über ISiKNachricht keine medizinischen Daten ausgetauscht werden. Hierfür sollte daher bevorzugt die ePA verwendet werden.
* ISiKTermin - Enhancement/appointment by @jcaumann in :
* Kardinalität der Elemente Appointment.specialty und Appointment.serviceType von 1..* auf 0..* geändert. MustSupport dieser Elemente von "true" auf "false" geändert.
diff --git a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Akteure.md b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Akteure.md
index 02c5bc0a..5b325bf5 100644
--- a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Akteure.md
+++ b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Akteure.md
@@ -46,8 +46,8 @@ Es sei zu beachten, dass in vielen Fällen ein Terminmangementsystem aus untersc
2. Ein Termin Requestor, um intern im System einen Termin zu vereinbaren
3. Ein Termin Consumer um eine Übersicht der vereinbarten Termine anzuzeigen
-{{render:ImplementationGuide/images/Übersicht Termin Akteure (1).drawio.png}}
+
Darüber hinaus kann auch der Fall eintreten, dass ein Termin Repository als Termin Requestor interagiert. In diesem Fall ist das Termin Repository (z.B. ein Patientenportal) das terminführende System und übermittelt die vereinbarten Termine einem weiteren (internen) Termin Repository zur Synchronisation.
-{{render:ImplementationGuide/images/Übersicht Termin Akteure (2).drawio.png}}
\ No newline at end of file
+
\ No newline at end of file
diff --git a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Interaktionen.md b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Interaktionen.md
index 90ea86d9..f7e64977 100644
--- a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Interaktionen.md
+++ b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Interaktionen.md
@@ -4,7 +4,7 @@ Für folgende Interaktionen werden im vorliegenden Implementierungsleitfaden Vor
---
-{{render:ImplementationGuide/images/Interaktionen/1. Übermittelung Patienteninformationen - zum Termin zugehörige Vorabinformationen.png}}
+{{render:Material/images/Interaktionen/1. Übermittelung Patienteninformationen - zum Termin zugehörige Vorabinformationen.png}}
Für die Auswahl eines verfügbaren Terminblocks kann es notwendig sein, dass das Termin Repository vorab durch den Termin Requestor Vorabinformationen (z.B. für die Krankenversicherung) erhält. Diese können über eine schreibende Schnittstelle an das Terminrepository übermittelt werden. Es ist zu beachten, dass das Termin Repository gegebenenfalls diese Informationen separat von eigens erstellten Datenobjekten vorhält und/oder die Information dauerhaft erst nach einer manuellen Überprüfung durch eine BenutzerIn freigibt.
@@ -14,7 +14,7 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/Operations.md, text:A
---
-{{render:ImplementationGuide/images/Interaktionen/2. Verfügbare Behandlungsleistungen abrufen.png}}
+{{render:Material/images/Interaktionen/2. Verfügbare Behandlungsleistungen abrufen.png}}
Als Einstiegspunkt in die Terminvereinbarung können durch den Termin Requester alle verfügbaren Behandlungsleistungen (HealthcareServices) abgerufen werden, für die das Termin Repository Informationen zu notwendigen Ressourcen (Räume, Personen, Geräte, etc.) bereitstellt.
@@ -22,7 +22,7 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/ISiKMedizinischeBehan
---
-{{render:ImplementationGuide/images/Interaktionen/3. Verfügbare Terminlisten abrufen.png}}
+{{render:Material/images/Interaktionen/3. Verfügbare Terminlisten abrufen.png}}
Der Termin Requestor kann nach der Auswahl einer Behandlungsleistung verfügbare Terminlisten (Schedules) für diese im Termin Repository abrufen. Die Terminlisten repräsentieren somit den "Kalender" in dem Termine gebucht werden können.
@@ -30,7 +30,7 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/ISiKKalenderSchedule.
---
-{{render:ImplementationGuide/images/Interaktionen/4. Abfrage von (verfübaren) Terminblöcken.png}}
+{{render:Material/images/Interaktionen/4. Abfrage von (verfübaren) Terminblöcken.png}}
Für einen jeweiligen Kalender kann der Termin Requestor die darin definierten Terminblöcke abfragen. Diese können entsprechend eines Zeitraums und/oder Status (verfügbar, belegt) gefiltert werden.
@@ -38,20 +38,22 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/ISiKTerminblockSlot.m
---
-{{render:ImplementationGuide/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verfügbaren Terminen.png}}
+{{render:Material/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verfügbaren Terminen.png}}
Für einen durch die BenutzerIn ausgewählten Terminblock bzw. mehreren aufeinander folgenden Terminblöcken kann durch den Termin Requestor ein Termin angefragt werden. Dieser kann direkt oder erst nach manueller Bestätigung durch das Termin Repository freigegeben werden.
Es ist zu beachten, dass innerhalb dieser Aktion ein terminführendes Termin Repository die Rolle des Termin Requestors übernehmen kann und den neu-angelegten Termin in ein weiteres Terminrepository spiegelt.
+In diesem Kontext kann das Termin-Repsoitory zudem Zusatzinformationen (z.B. Lagepläne) an den Termin-Requestor übermitteln.
+
Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/Operations.md, text:Buchung eines Termins}} für die technische Umsetzung.
---
-{{render:ImplementationGuide/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png}}
+{{render:Material/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png}}
-{{render:ImplementationGuide/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminführenden System).png}}
+{{render:Material/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminführenden System).png}}
Termine können sowohl durch den Termin Requestor als Client oder durch das Termin Repository als terminführendes System abgesagt werden.
@@ -59,9 +61,9 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/Operations.md, text:A
---
-{{render:ImplementationGuide/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png}}
+{{render:Material/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png}}
-{{render:ImplementationGuide/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png}}
+{{render:Material/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png}}
Termine können sowohl durch den Termin Requestor als Client oder durch das Termin Repository als terminführendes System verschoben werden. Im Falle, dass das Termin Repository den Termin verschiebt ist der Termin Consumer darüber zu benachrichtigen.
@@ -69,17 +71,19 @@ Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/Operations.md, text:B
---
-{{render:ImplementationGuide/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png}}
+{{render:Material/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png}}
-{{render:ImplementationGuide/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png}}
+{{render:Material/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png}}
Termine können sowohl durch den Termin Requestor als Client oder durch das Termin Repository als terminführendes System durch Zusatzinformationen (z.B. welche Teilnehmer oder Ressourcen sind Teil des Termins) erweitert werden.
+In diesem Kontext kann der Termin-Requestor zudem Zusatzinformationen (z.B. Einwilligungen) an das Termin-Repository übermitteln.
+
Siehe {{pagelink:ImplementationGuide/markdown/Datenobjekte/Operations.md, text:Aktualisierung / Absage eines Termins}} für die technische Umsetzung.
---
-{{render:ImplementationGuide/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png}}
+{{render:Material/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png}}
Der Termin Requestor oder Termin Consumer kann einen, mehrere oder alle Termine eines Termin Repositories abfragen.
diff --git a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md
index 197e5ba2..c1548a7d 100644
--- a/ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md
+++ b/ImplementationGuide/markdown/UebergreifendeFestlegungen/Kompatibilitaet.md
@@ -1,6 +1,6 @@
## Kompatibilität zu anderen nationalen FHIR-basierten Spezifikationen
-Die vorliegende Spezifikation orientiert sich teilweise an bereits vorhandenen (internationalen) FHIR-Projekten zum Thema Terminvergabe. Hier sei vorallem das [Argonaut Scheduling Project](http://fhir.org/guides/argonaut/scheduling/) hervorgehoben.
+Die vorliegende Spezifikation orientiert sich teilweise an bereits vorhandenen (internationalen) FHIR-Projekten zum Thema Terminvergabe. Hier sei vorallem das [Argonaut Scheduling Project](https://fhir.org/guides/argonaut/scheduling/) hervorgehoben.
## Kompatibilität zum KBV eTerminService
diff --git a/ImplementationGuide/markdown/UebergreifendeFestlegungen/UebergreifendeFestlegungen.md b/ImplementationGuide/markdown/UebergreifendeFestlegungen/UebergreifendeFestlegungen.md
index 0492a9ba..363881fc 100644
--- a/ImplementationGuide/markdown/UebergreifendeFestlegungen/UebergreifendeFestlegungen.md
+++ b/ImplementationGuide/markdown/UebergreifendeFestlegungen/UebergreifendeFestlegungen.md
@@ -1,11 +1,11 @@
# Übergreifende Festlegungen
-Folgende Festlegungen aus dem Modul [ISiK Basis Stufe 2](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/ImplementationGuide-markdown-Einfuehrung?version=current) haben in diesem Modul Gültigkeit:
-* [Methodik der Schlüsselworte MUSS, SOLL, KANN](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Methodik?version=current)
-* [Bedeutung der Must-Support-Flags](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-m-U-UebergreifendeFestlegungen-Must-Support-Flags?version=current)
-* [Zu implementierende Repräsentationsformate](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-m-U-UebergreifendeFestlegungen-Repraesentationsformate?version=current)
-* [Allgemeine Hinweise zu Suchparametern](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-m-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Suchparameter?version=current)
-* [Allgemeine Hinweise zur REST API](https://simplifier.net/guide/implementierungsleitfadenisik-basismodul/I-markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current)
+Folgende Festlegungen aus dem Modul [ISiK Basis Stufe 3](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) haben in diesem Modul Gültigkeit:
+* [Methodik der Schlüsselworte MUSS, SOLL, KANN](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Methodik?version=current)
+* [Bedeutung der Must-Support-Flags](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/UebergreifendeFestlegungen-UebergreifendeFestlegungen-Must-Support-Flags?version=current)
+* [Zu implementierende Repräsentationsformate](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/UebergreifendeFestlegungen-Repraesentationsformate?version=current)
+* [Allgemeine Hinweise zu Suchparametern](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/UebergreifendeFestlegungen-UebergreifendeFestlegungen-Suchparameter?version=current)
+* [Allgemeine Hinweise zur REST API](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-UebergreifendeFestlegungen-UebergreifendeFestlegungen-Rest?version=current)
Darüber hinaus gelten in diesem Modul folgende Datenobjekt-übergreifende Festlegungen:
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 00000000..bbe15e0f
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,13 @@
+## License
+
+Copyright 2024 gematik GmbH
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
+
+See the [APACHE_LICENSE.md](.github/APACHE_LICENSE.md) for the specific language governing permissions and limitations under the License.
+
+Unless required by applicable law the software is provided "as is" without warranty of any kind, either express or implied, including, but not limited to, the warranties of fitness for a particular purpose, merchantability, and/or non-infringement. The authors or copyright holders shall not be liable in any manner whatsoever for any damages or other claims arising from, out of or in connection with the software or the use or other dealings with the software, whether in an action of contract, tort, or otherwise.
+
+The software is the result of research and development activities, therefore not necessarily quality assured and without the character of a liable product. For this reason, gematik does not provide any support or other user assistance (unless otherwise stated in individual cases and without justification of a legal obligation). Furthermore, there is no claim to further development and adaptation of the results to a more current state of the art.
+
+Gematik may remove published results temporarily or permanently from the place of publication at any time without prior notice or justification.
\ No newline at end of file
diff --git "a/Material/Interaktionen/1. \303\234bermittelung Patienteninformationen _ zum Termin zugeh\303\266rige Vorabinformationen.png" "b/Material/Interaktionen/1. \303\234bermittelung Patienteninformationen _ zum Termin zugeh\303\266rige Vorabinformationen.png"
deleted file mode 100644
index 4b56079e..00000000
Binary files "a/Material/Interaktionen/1. \303\234bermittelung Patienteninformationen _ zum Termin zugeh\303\266rige Vorabinformationen.png" and /dev/null differ
diff --git "a/Material/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png" "b/Material/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png"
deleted file mode 100644
index 9fff9d22..00000000
Binary files "a/Material/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png" and /dev/null differ
diff --git "a/Material/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png" "b/Material/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png"
deleted file mode 100644
index 86838239..00000000
Binary files "a/Material/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png" and /dev/null differ
diff --git "a/Material/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png" "b/Material/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png"
deleted file mode 100644
index e4b8c53d..00000000
Binary files "a/Material/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png" and /dev/null differ
diff --git "a/Material/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png" "b/Material/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png"
deleted file mode 100644
index 02a3fa68..00000000
Binary files "a/Material/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png" and /dev/null differ
diff --git a/Material/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png b/Material/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png
deleted file mode 100644
index c80d9a86..00000000
Binary files a/Material/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png and /dev/null differ
diff --git "a/Material/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png" "b/Material/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png"
deleted file mode 100644
index 20d1b9b2..00000000
Binary files "a/Material/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png" and /dev/null differ
diff --git a/Material/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png b/Material/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png
deleted file mode 100644
index 515ce891..00000000
Binary files a/Material/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png and /dev/null differ
diff --git a/Material/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png b/Material/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png
deleted file mode 100644
index db752517..00000000
Binary files a/Material/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png and /dev/null differ
diff --git a/Material/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png b/Material/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png
deleted file mode 100644
index 9414c527..00000000
Binary files a/Material/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png and /dev/null differ
diff --git a/Material/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png b/Material/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png
deleted file mode 100644
index e0f38ee4..00000000
Binary files a/Material/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png and /dev/null differ
diff --git a/Material/Interaktionen/9. Abfrage von (verinbarten) Terminen.png b/Material/Interaktionen/9. Abfrage von (verinbarten) Terminen.png
deleted file mode 100644
index 940d110c..00000000
Binary files a/Material/Interaktionen/9. Abfrage von (verinbarten) Terminen.png and /dev/null differ
diff --git a/Material/images/Gematik_Logo_Flag.svg b/Material/images/Gematik_Logo_Flag.svg
new file mode 100644
index 00000000..20976701
--- /dev/null
+++ b/Material/images/Gematik_Logo_Flag.svg
@@ -0,0 +1,40 @@
+
+
+
diff --git "a/ImplementationGuide/images/Interaktionen/1. \303\234bermittelung Patienteninformationen - zum Termin zugeh\303\266rige Vorabinformationen.png" "b/Material/images/Interaktionen/1. \303\234bermittelung Patienteninformationen - zum Termin zugeh\303\266rige Vorabinformationen.png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/1. \303\234bermittelung Patienteninformationen - zum Termin zugeh\303\266rige Vorabinformationen.png"
rename to "Material/images/Interaktionen/1. \303\234bermittelung Patienteninformationen - zum Termin zugeh\303\266rige Vorabinformationen.png"
diff --git "a/ImplementationGuide/images/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png" "b/Material/images/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png"
rename to "Material/images/Interaktionen/2. Verf\303\274gbare Behandlungsleistungen abrufen.png"
diff --git "a/ImplementationGuide/images/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png" "b/Material/images/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png"
rename to "Material/images/Interaktionen/3. Verf\303\274gbare Terminlisten abrufen.png"
diff --git "a/ImplementationGuide/images/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png" "b/Material/images/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png"
rename to "Material/images/Interaktionen/4. Abfrage von (verf\303\274baren) Terminbl\303\266cken.png"
diff --git "a/ImplementationGuide/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png" "b/Material/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png"
rename to "Material/images/Interaktionen/5. Termin neu buchen - Buchungsmanagemnent von verf\303\274gbaren Terminen.png"
diff --git a/ImplementationGuide/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png b/Material/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png
rename to Material/images/Interaktionen/6.1 Termin absagen (ausgehend vom Client).png
diff --git "a/ImplementationGuide/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png" "b/Material/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png"
similarity index 100%
rename from "ImplementationGuide/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png"
rename to "Material/images/Interaktionen/6.2 Termin absagen (ausgehend vom terminf\303\274hrenden System).png"
diff --git a/ImplementationGuide/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png b/Material/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png
rename to Material/images/Interaktionen/7.1 Termin verschieben (ausgehend vom Client).png
diff --git a/ImplementationGuide/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png b/Material/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png
rename to Material/images/Interaktionen/7.2 Termin verschieben (ausgehend vom Termin Repository).png
diff --git a/ImplementationGuide/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png b/Material/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png
rename to Material/images/Interaktionen/8.1 Terminzusatzinformationen aktualisieren (ausgehend vom Client).png
diff --git a/ImplementationGuide/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png b/Material/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png
rename to Material/images/Interaktionen/8.2 Terminzusatzinformationen aktualisieren (ausgehend vom Termin Repository).png
diff --git a/ImplementationGuide/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png b/Material/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png
similarity index 100%
rename from ImplementationGuide/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png
rename to Material/images/Interaktionen/9. Abfrage von (verinbarten) Terminen.png
diff --git a/Material/images/diagrams/akteure_1.svg b/Material/images/diagrams/akteure_1.svg
new file mode 100644
index 00000000..373606fe
--- /dev/null
+++ b/Material/images/diagrams/akteure_1.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Material/images/diagrams/akteure_2.svg b/Material/images/diagrams/akteure_2.svg
new file mode 100644
index 00000000..bf4fec0b
--- /dev/null
+++ b/Material/images/diagrams/akteure_2.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Material/images/diagrams/workflows.svg b/Material/images/diagrams/workflows.svg
new file mode 100644
index 00000000..dbd1fc04
--- /dev/null
+++ b/Material/images/diagrams/workflows.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git "a/Material/\303\234bersicht Termin Akteure (1).drawio" b/Material/images/src/drawio/akteure_1.drawio
similarity index 100%
rename from "Material/\303\234bersicht Termin Akteure (1).drawio"
rename to Material/images/src/drawio/akteure_1.drawio
diff --git "a/Material/\303\234bersicht Termin Akteure (2).drawio" b/Material/images/src/drawio/akteure_2.drawio
similarity index 100%
rename from "Material/\303\234bersicht Termin Akteure (2).drawio"
rename to Material/images/src/drawio/akteure_2.drawio
diff --git a/Material/Terminplannungsmodul Workflows.drawio b/Material/images/src/drawio/workflows.drawio
similarity index 100%
rename from Material/Terminplannungsmodul Workflows.drawio
rename to Material/images/src/drawio/workflows.drawio
diff --git a/README.md b/README.md
index 6e52fb71..6d4c6e05 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,45 @@
+
+
# ISiK-Terminplanung
-Für eine nutzerfreundliche Sicht siehe das [Simplifier Projekt ISiK Terminplanung Stufe 3](https://simplifier.net/isik-terminplanung-v3)
+
+ Table of Contents
+
+
+
+
+
+## About The Project
+
+For full information and details, see [Simplifier Project Page for ISiK Terminplanung Stufe 4](https://simplifier.net/isik-terminplanung-v4)
+
+### Release Notes
+See [ReleaseNotes.md](/ImplementationGuide/markdown/ReleaseNotes.md) for all information regarding the (newest) releases.
+
+## License
+
+Copyright 2024 gematik GmbH
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
+
+See the [APACHE_LICENSE.md](.github/APACHE_LICENSE.md) for the specific language governing permissions and limitations under the License.
+
+Unless required by applicable law the software is provided "as is" without warranty of any kind, either express or implied, including, but not limited to, the warranties of fitness for a particular purpose, merchantability, and/or non-infringement. The authors or copyright holders shall not be liable in any manner whatsoever for any damages or other claims arising from, out of or in connection with the software or the use or other dealings with the software, whether in an action of contract, tort, or otherwise.
+
+The software is the result of research and development activities, therefore not necessarily quality assured and without the character of a liable product. For this reason, gematik does not provide any support or other user assistance (unless otherwise stated in individual cases and without justification of a legal obligation). Furthermore, there is no claim to further development and adaptation of the results to a more current state of the art.
+
+Gematik may remove published results temporarily or permanently from the place of publication at any time without prior notice or justification.
+
+## Contact
+
+**Team Data – ISiK and ISiP**
+
+For issues and requests please refer to:
+https://service.gematik.de/servicedesk/customer/portal/16
\ No newline at end of file
diff --git a/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementTerminplanungServer.json b/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementTerminplanungServer.json
index 261650b4..74b8a0cf 100644
--- a/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementTerminplanungServer.json
+++ b/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementTerminplanungServer.json
@@ -4,11 +4,11 @@
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/terminplanung-server",
"status": "active",
"experimental": false,
- "version": "3.0.0",
"publisher": "gematik GmbH",
- "date": "2023-07-01",
+ "version": "3.0.2",
+ "date": "2024-01-03",
"implementationGuide": [
- "https://gematik.de/fhir/isik/v3/Terminplanung/ImplementationGuide|3.0.0"
+ "https://gematik.de/fhir/isik/v3/Terminplanung/ImplementationGuide|3.0.2"
],
"name": "ISiKCapabilityStatementTerminplanungServer",
"title": "ISiK CapabilityStatement Terminplanung Server",
@@ -68,15 +68,6 @@
],
"code": "read"
},
- {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation",
- "valueCode": "SHALL"
- }
- ],
- "code": "search-type"
- },
{
"extension": [
{
@@ -142,17 +133,6 @@
"name": "actor",
"definition": "http://hl7.org/fhir/SearchParameter/Schedule-actor",
"type": "reference"
- },
- {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation",
- "valueCode": "SHALL"
- }
- ],
- "name": "gender",
- "definition": "http://hl7.org/fhir/SearchParameter/individual-gender",
- "type": "token"
}
],
"searchRevInclude": [
diff --git a/Resources/fsh-generated/resources/OperationDefinition-ISiKAppointmentBookOperation.json b/Resources/fsh-generated/resources/OperationDefinition-ISiKAppointmentBookOperation.json
index 2b137ff9..1d3a6229 100644
--- a/Resources/fsh-generated/resources/OperationDefinition-ISiKAppointmentBookOperation.json
+++ b/Resources/fsh-generated/resources/OperationDefinition-ISiKAppointmentBookOperation.json
@@ -3,9 +3,9 @@
"id": "ISiKAppointmentBookOperation",
"status": "active",
"experimental": false,
- "version": "3.0.0",
"publisher": "gematik GmbH",
- "date": "2023-07-01",
+ "version": "3.0.2",
+ "date": "2024-01-03",
"name": "book",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/OperationDefinition/AppointmentBook",
"kind": "operation",
@@ -24,7 +24,7 @@
"use": "in",
"min": 1,
"max": "1",
- "documentation": "Eine Appointment-Ressource entsprechend dem dazugehörigen ISiK-Profil. Das Appointment MUSS den Status 'proposed' enthalten. Invalide Appointment-Ressourcen MÜSSEN mit einer OperationOutcome und dem Status Code HTTP 400 - Bad Request abgewiesen werden. Falls der Parameter als einzige Parameter verwendet wird KANN die Appointment-Ressource direkt im HTTP Body anstelle einer Parameter-Ressource übergeben werden. Die referenzierte Ressource MUSS dem ISiKTermin-Profil entsprechen. Invalide Ressource MÜSSEN abgelehnt werden durch das Termin Repository.",
+ "documentation": "Eine Appointment-Ressource entsprechend dem dazugehörigen ISiK-Profil MUSS übergeben werden. Falls das Parameter-Element 'Appointment' als einziges Parameter-Element verwendet wird, SOLL die Appointment-Ressource direkt im HTTP Body übergeben werden, alternativ zu einer Parameter-Ressource inklusive dem eingebetteten Appointment-Element. Invalide Ressourcen MÜSSEN abgelehnt werden durch das Termin Repository (zur Form der Ablehnung s.u.). Das Appointment MUSS den Status 'proposed' enthalten.",
"type": "Appointment"
},
{
@@ -32,7 +32,7 @@
"use": "in",
"min": 0,
"max": "1",
- "documentation": "Für die vorliegende Spezifikation ist die Verschiebung eines Termin eins zwei-stufiger Prozess, bei dem ein Termin storniert und ein neuer Termin neu gebucht wird. Dieser Parameter repräsentiert die Ressourcen-Id des stornierten Appointments. Der uri-Parameter kann eine absoulte URL enthalten, Server SOLLTEN jedoch nur Termine für ihre eigene Domäne verwalten. Im neu-angelegten Appointment MUSS eine Reference auf den abgesagten Termin hinterlegt werden (vgl. Appointment.extension:replaces). Der Status der abgesagten Ressource MUSS durch den Server angepasst werden.",
+ "documentation": "Für die vorliegende Spezifikation ist die Verschiebung eines Termin eins zwei-stufiger Prozess, bei dem ein Termin storniert und ein neuer Termin neu gebucht wird. Dieser Parameter repräsentiert die Ressourcen-Id des stornierten Appointments. Der uri-Parameter kann eine absoulte URL enthalten, Server SOLLEN jedoch nur Termine für ihre eigene Domäne verwalten. Im neu-angelegten Appointment MUSS eine Reference auf den abgesagten Termin hinterlegt werden (vgl. Appointment.extension:replaces). Der Status der abgesagten Ressource MUSS durch den Server angepasst werden.",
"type": "uri"
},
{
@@ -51,7 +51,7 @@
"use": "out",
"min": 0,
"max": "1",
- "documentation": "Als Return-Parameter MUSS ein Appointment oder ein OperationOutcome zurückgegeben werden. Das id-Element der Ressource MUSS korrekt gefüllt werden. Der Status der Appointment-Ressource muss auf 'booked' oder 'pending' geändert werden. Der Server MUSS die verwendeten Slot-Ressourcen als Referenz im Appointment angeben. Im Falle dass die Terminbuchung grundsätzlich akzeptiert wird, d. h. der neue Status 'booked' oder 'pending' ist, MUSS das Appointment persistiert werden.",
+ "documentation": "Falls die Interaktion erfolgreich ist, ist der Status Code HTTP 201 - Created zurückzugeben. Im Erfolgsfall MUSS als Return-Parameter eine Appointment-Ressource (entsprechend dem dazugehörigen ISiK-Profil) zurückgegeben werden. Das id-Element der Appointment-Ressource MUSS korrekt gefüllt werden. Der Server MUSS den Status der Appointment-Ressource auf 'booked' oder 'pending' ändern. Der Server MUSS die verwendeten Slot-Ressourcen als Referenz im Appointment angeben. Die Appointment-Ressource SOLL direkt im HTTP Body zurückgegeben werden, falls es sich um den einzigen Rückgabewert handelt. Alternativ kann die Appointment-Ressource innerhalb einer Parameter-Ressource zurückgegeben werden. Als Teil der Parameter-Ressource können zusätzlich Hinweise zum Termin als OperationOutcome zurückgegeben werden.",
"type": "Appointment"
},
{
@@ -59,7 +59,7 @@
"use": "out",
"min": 0,
"max": "1",
- "documentation": "Als Return-Parameter MUSS ein OperationOutcome zurückgegeben werden, falls die Interaktion fehlschlägt. Das id-Element der Ressource MUSS korrekt gefüllt werden. Ein OperationOutcome KANN zu informativen Zwecken in jedem Fall zurückgegeben werden.",
+ "documentation": "Falls die Interaktion fehlschlägt, MUSS als Return-Parameter eine OperationOutcome-Ressource zurückgegeben werden. Syntaktische Fehler in der Appointment-Ressource MUSS mit einem HTTP Status-Code 400 - Bad Request zurückgewiesen werden. Anderweitig invalide Appointment-Ressourcen MÜSSEN mit einer OperationOutcome-Ressource abgewiesen werden. In diesem Fall SOLL der HTTP Status-Code HTTP 422 - Unprocessable Entity verwendet werden. Eine OperationOutcome-Ressource KANN zu informativen Zwecken in jedem Fall zurückgegeben werden (s.o.).",
"type": "OperationOutcome"
}
]
diff --git a/Resources/fsh-generated/resources/StructureDefinition-AppointmentReplaces.json b/Resources/fsh-generated/resources/StructureDefinition-AppointmentReplaces.json
index 276f167c..ea9b2f14 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-AppointmentReplaces.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-AppointmentReplaces.json
@@ -2,9 +2,12 @@
"resourceType": "StructureDefinition",
"id": "AppointmentReplaces",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-Appointment.replaces",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "AppointmentReplaces",
"status": "active",
+ "experimental": false,
+ "date": "2024-01-03",
+ "publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
{
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKKalender.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKKalender.json
index 4deea4a2..64fcff57 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKKalender.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKKalender.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKKalender",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKKalender",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKKalender",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
@@ -59,8 +59,9 @@
"min": 1
},
{
- "id": "Schedule.extension.valueString",
- "path": "Schedule.extension.valueString",
+ "id": "Schedule.extension.value[x]:valueString",
+ "path": "Schedule.extension.value[x]",
+ "sliceName": "valueString",
"min": 1,
"max": "1",
"type": [
@@ -153,6 +154,7 @@
"id": "Schedule.actor:Akteur",
"path": "Schedule.actor",
"sliceName": "Akteur",
+ "comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 0,
"max": "1",
"type": [
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKMedizinischeBehandlungseinheit.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKMedizinischeBehandlungseinheit.json
index 6daa29bb..f501cf2b 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKMedizinischeBehandlungseinheit.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKMedizinischeBehandlungseinheit.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKMedizinischeBehandlungseinheit",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKMedizinischeBehandlungseinheit",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKMedizinischeBehandlungseinheit",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKNachricht.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKNachricht.json
index 16f9330b..fcb56e9a 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKNachricht.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKNachricht.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKNachricht",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKNachricht",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKNachricht",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
@@ -46,6 +46,7 @@
{
"id": "Communication.subject",
"path": "Communication.subject",
+ "comment": "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein.",
"min": 1,
"type": [
{
@@ -74,6 +75,7 @@
],
"rules": "open"
},
+ "comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 1,
"mustSupport": true
},
@@ -145,8 +147,9 @@
"mustSupport": true
},
{
- "id": "Communication.payload.contentString",
- "path": "Communication.payload.contentString",
+ "id": "Communication.payload.content[x]:contentString",
+ "path": "Communication.payload.content[x]",
+ "sliceName": "contentString",
"min": 0,
"max": "1",
"type": [
@@ -157,8 +160,9 @@
"mustSupport": true
},
{
- "id": "Communication.payload.contentAttachment",
- "path": "Communication.payload.contentAttachment",
+ "id": "Communication.payload.content[x]:contentAttachment",
+ "path": "Communication.payload.content[x]",
+ "sliceName": "contentAttachment",
"min": 0,
"max": "1",
"type": [
@@ -169,25 +173,25 @@
"mustSupport": true
},
{
- "id": "Communication.payload.contentAttachment.contentType",
- "path": "Communication.payload.contentAttachment.contentType",
+ "id": "Communication.payload.content[x]:contentAttachment.contentType",
+ "path": "Communication.payload.content[x].contentType",
"min": 1,
"mustSupport": true
},
{
- "id": "Communication.payload.contentAttachment.data",
- "path": "Communication.payload.contentAttachment.data",
+ "id": "Communication.payload.content[x]:contentAttachment.data",
+ "path": "Communication.payload.content[x].data",
"max": "0"
},
{
- "id": "Communication.payload.contentAttachment.url",
- "path": "Communication.payload.contentAttachment.url",
+ "id": "Communication.payload.content[x]:contentAttachment.url",
+ "path": "Communication.payload.content[x].url",
"min": 1,
"mustSupport": true
},
{
- "id": "Communication.payload.contentAttachment.creation",
- "path": "Communication.payload.contentAttachment.creation",
+ "id": "Communication.payload.content[x]:contentAttachment.creation",
+ "path": "Communication.payload.content[x].creation",
"min": 1,
"mustSupport": true
}
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKNachrichtExtension.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKNachrichtExtension.json
index f811331a..a4d8a611 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKNachrichtExtension.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKNachrichtExtension.json
@@ -2,9 +2,12 @@
"resourceType": "StructureDefinition",
"id": "ISiKNachrichtExtension",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKNachrichtExtension",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKNachrichtExtension",
"status": "active",
+ "experimental": false,
+ "date": "2024-01-03",
+ "publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
{
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKTermin.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKTermin.json
index f50212d5..f2a7824e 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKTermin.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKTermin.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKTermin",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKTermin",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
@@ -50,7 +50,7 @@
{
"key": "ISiK-app-1",
"severity": "error",
- "human": "Der Endzeitpunkt eines Termins sollte nach dem Startzeitpunkt liegen",
+ "human": "Der Endzeitpunkt eines Termins MUSS nach dem Startzeitpunkt liegen",
"expression": "start <= end",
"source": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin"
}
@@ -211,6 +211,13 @@
{
"id": "Appointment.slot",
"path": "Appointment.slot",
+ "comment": "Zur Referenzierung auf eine Slot-Ressource MUSS eine Reference.reference mit einer URL verwendet werden. Das Termin-Repository muss so gestaltet sein, dass es aus Perspektive des Clients nur eine Service-BaseUrl gibt.",
+ "mustSupport": true
+ },
+ {
+ "id": "Appointment.slot.reference",
+ "path": "Appointment.slot.reference",
+ "min": 1,
"mustSupport": true
},
{
@@ -230,6 +237,7 @@
],
"rules": "open"
},
+ "comment": "Die Kardinalität von actor.display und das MS-Flag von .status wird an die Slices vererbt und diese sind entsprechend zu implementieren.",
"mustSupport": true
},
{
@@ -253,6 +261,7 @@
"id": "Appointment.participant:AkteurPatient",
"path": "Appointment.participant",
"sliceName": "AkteurPatient",
+ "comment": "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein.",
"min": 1,
"max": "*",
"mustSupport": true
@@ -279,6 +288,7 @@
"id": "Appointment.participant:AkteurPersonImGesundheitsberuf",
"path": "Appointment.participant",
"sliceName": "AkteurPersonImGesundheitsberuf",
+ "comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 0,
"max": "*",
"mustSupport": true
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminKontaktMitGesundheitseinrichtung.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminKontaktMitGesundheitseinrichtung.json
index db18441e..4154c87b 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminKontaktMitGesundheitseinrichtung.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminKontaktMitGesundheitseinrichtung.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKTerminKontaktMitGesundheitseinrichtung",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTerminKontaktMitGesundheitseinrichtung",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKTerminKontaktMitGesundheitseinrichtung",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminPriorityExtension.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminPriorityExtension.json
index 51fe455d..85cd1fc1 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminPriorityExtension.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminPriorityExtension.json
@@ -2,9 +2,12 @@
"resourceType": "StructureDefinition",
"id": "ISiKTerminPriorityExtension",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTerminPriorityExtension",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKTerminPriorityExtension",
"status": "active",
+ "experimental": false,
+ "date": "2024-01-03",
+ "publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
{
@@ -39,28 +42,12 @@
{
"id": "Extension.value[x]",
"path": "Extension.value[x]",
- "slicing": {
- "discriminator": [
- {
- "type": "type",
- "path": "$this"
- }
- ],
- "ordered": false,
- "rules": "open"
- },
"min": 1,
"type": [
{
"code": "CodeableConcept"
}
- ]
- },
- {
- "id": "Extension.valueCodeableConcept",
- "path": "Extension.valueCodeableConcept",
- "min": 1,
- "max": "1",
+ ],
"mustSupport": true,
"binding": {
"strength": "required",
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminblock.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminblock.json
index 2b41a94c..8c6fc4c1 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminblock.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKTerminblock.json
@@ -2,11 +2,11 @@
"resourceType": "StructureDefinition",
"id": "ISiKTerminblock",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTerminblock",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ISiKTerminblock",
"status": "active",
"experimental": false,
- "date": "2023-07-01",
+ "date": "2024-01-03",
"publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
@@ -40,7 +40,7 @@
{
"key": "ISiK-slot-1",
"severity": "error",
- "human": "Der Endzeitpunkt eines Terminsblocks sollte nach dem Startzeitpunkt liegen",
+ "human": "Der Endzeitpunkt eines Terminsblocks MUSS nach dem Startzeitpunkt liegen",
"expression": "start <= end",
"source": "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTerminblock"
}
@@ -49,6 +49,13 @@
{
"id": "Slot.schedule",
"path": "Slot.schedule",
+ "comment": "Zur Referenzierung auf eine Schedule-Ressource MUSS eine Reference.reference mit einer URL verwendet werden. Das Termin-Repository muss so gestaltet sein, dass es aus Perspektive des Clients nur eine Service-BaseUrl gibt.",
+ "mustSupport": true
+ },
+ {
+ "id": "Slot.schedule.reference",
+ "path": "Slot.schedule.reference",
+ "min": 1,
"mustSupport": true
},
{
diff --git a/Resources/fsh-generated/resources/StructureDefinition-ScheduleName.json b/Resources/fsh-generated/resources/StructureDefinition-ScheduleName.json
index f3d384b5..0fee49a1 100644
--- a/Resources/fsh-generated/resources/StructureDefinition-ScheduleName.json
+++ b/Resources/fsh-generated/resources/StructureDefinition-ScheduleName.json
@@ -2,9 +2,12 @@
"resourceType": "StructureDefinition",
"id": "ScheduleName",
"url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-Schedule.name",
- "version": "3.0.0",
+ "version": "3.0.2",
"name": "ScheduleName",
"status": "active",
+ "experimental": false,
+ "date": "2024-01-03",
+ "publisher": "gematik GmbH",
"fhirVersion": "4.0.1",
"mapping": [
{
@@ -39,27 +42,11 @@
{
"id": "Extension.value[x]",
"path": "Extension.value[x]",
- "slicing": {
- "discriminator": [
- {
- "type": "type",
- "path": "$this"
- }
- ],
- "ordered": false,
- "rules": "open"
- },
"type": [
{
"code": "string"
}
]
- },
- {
- "id": "Extension.valueString",
- "path": "Extension.valueString",
- "min": 0,
- "max": "1"
}
]
}
diff --git a/Resources/fsh-generated/resources/ValueSet-ISiKTerminCancelationReason.json b/Resources/fsh-generated/resources/ValueSet-ISiKTerminCancelationReason.json
index fea2f965..b2defffb 100644
--- a/Resources/fsh-generated/resources/ValueSet-ISiKTerminCancelationReason.json
+++ b/Resources/fsh-generated/resources/ValueSet-ISiKTerminCancelationReason.json
@@ -4,11 +4,11 @@
"name": "ISiKTerminCancelationReason",
"id": "ISiKTerminCancelationReason",
"description": "Enthaelt alle erlaubten Gruende fuer eine Stornierung eines ISiKTermins",
- "version": "3.0.0",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/ValueSet/ISiKTerminCancelationReason",
"experimental": false,
"publisher": "gematik GmbH",
- "date": "2023-07-01",
+ "version": "3.0.2",
+ "date": "2024-01-03",
"compose": {
"include": [
{
diff --git a/Resources/fsh-generated/resources/ValueSet-ISiKTerminPriority.json b/Resources/fsh-generated/resources/ValueSet-ISiKTerminPriority.json
index b20501a7..1cc4545c 100644
--- a/Resources/fsh-generated/resources/ValueSet-ISiKTerminPriority.json
+++ b/Resources/fsh-generated/resources/ValueSet-ISiKTerminPriority.json
@@ -4,11 +4,11 @@
"name": "ISiKTerminPriority",
"id": "ISiKTerminPriority",
"description": "Enthaelt alle SNOMED Codes, die eine valide Priorität für den ISiKTermin sind",
- "version": "3.0.0",
"url": "https://gematik.de/fhir/isik/v3/Terminplanung/ValueSet/ISiKTerminPriority",
"experimental": false,
"publisher": "gematik GmbH",
- "date": "2023-07-01",
+ "version": "3.0.2",
+ "date": "2024-01-03",
"compose": {
"include": [
{
diff --git a/Resources/input/fsh/ISiKBookOperation.fsh b/Resources/input/fsh/ISiKBookOperation.fsh
index bff6887f..bff1ca72 100644
--- a/Resources/input/fsh/ISiKBookOperation.fsh
+++ b/Resources/input/fsh/ISiKBookOperation.fsh
@@ -19,14 +19,14 @@ Usage: #example
* use = #in
* min = 1
* max = "1"
- * documentation = "Eine Appointment-Ressource entsprechend dem dazugehörigen ISiK-Profil MUSS übergeben werden. Falls das Parameter-Element 'Appointment' als einziges Parameter-Element verwendet wird, SOLLTE die Appointment-Ressource direkt im HTTP Body übergeben werden, alternativ zu einer Parameter-Ressource inklusive dem eingebetteten Appointment-Element. Invalide Ressourcen MÜSSEN abgelehnt werden durch das Termin Repository (zur Form der Ablehnung s.u.). Das Appointment MUSS den Status 'proposed' enthalten."
+ * documentation = "Eine Appointment-Ressource entsprechend dem dazugehörigen ISiK-Profil MUSS übergeben werden. Falls das Parameter-Element 'Appointment' als einziges Parameter-Element verwendet wird, SOLL die Appointment-Ressource direkt im HTTP Body übergeben werden, alternativ zu einer Parameter-Ressource inklusive dem eingebetteten Appointment-Element. Invalide Ressourcen MÜSSEN abgelehnt werden durch das Termin Repository (zur Form der Ablehnung s.u.). Das Appointment MUSS den Status 'proposed' enthalten."
* type = #Appointment
* parameter[+]
* name = #cancelled-appt-id
* use = #in
* min = 0
* max = "1"
- * documentation = "Für die vorliegende Spezifikation ist die Verschiebung eines Termin eins zwei-stufiger Prozess, bei dem ein Termin storniert und ein neuer Termin neu gebucht wird. Dieser Parameter repräsentiert die Ressourcen-Id des stornierten Appointments. Der uri-Parameter kann eine absoulte URL enthalten, Server SOLLTEN jedoch nur Termine für ihre eigene Domäne verwalten. Im neu-angelegten Appointment MUSS eine Reference auf den abgesagten Termin hinterlegt werden (vgl. Appointment.extension:replaces). Der Status der abgesagten Ressource MUSS durch den Server angepasst werden."
+ * documentation = "Für die vorliegende Spezifikation ist die Verschiebung eines Termin eins zwei-stufiger Prozess, bei dem ein Termin storniert und ein neuer Termin neu gebucht wird. Dieser Parameter repräsentiert die Ressourcen-Id des stornierten Appointments. Der uri-Parameter kann eine absoulte URL enthalten, Server SOLLEN jedoch nur Termine für ihre eigene Domäne verwalten. Im neu-angelegten Appointment MUSS eine Reference auf den abgesagten Termin hinterlegt werden (vgl. Appointment.extension:replaces). Der Status der abgesagten Ressource MUSS durch den Server angepasst werden."
* type = #uri
* parameter[+]
* name = #schedule
@@ -41,12 +41,12 @@ Usage: #example
* use = #out
* min = 0
* max = "1"
- * documentation = "Falls die Interaktion erfolgreich ist, ist der Status Code HTTP 201 - Created zurückzugeben. Im Erfolgsfall MUSS als Return-Parameter eine Appointment-Ressource (entsprechend dem dazugehörigen ISiK-Profil) zurückgegeben werden. Das id-Element der Appointment-Ressource MUSS korrekt gefüllt werden. Der Status der Appointment-Ressource MUSS auf 'booked' oder 'pending' geändert wurden sein durch den Server. Der Server MUSS die verwendeten Slot-Ressourcen als Referenz im Appointment angeben. Die Appointment-Ressource SOLLTE direkt im HTTP Body zurückgegeben werden, falls es sich um den einzigen Rückgabewert handelt. Alternativ kann die Appointment-Ressource innerhalb einer Parameter-Ressource zurückgegeben werden. Als Teil der Parameter-Ressource können zusätzlich Hinweise zum Termin als OperationOutcome zurückgegeben werden."
+ * documentation = "Falls die Interaktion erfolgreich ist, ist der Status Code HTTP 201 - Created zurückzugeben. Im Erfolgsfall MUSS als Return-Parameter eine Appointment-Ressource (entsprechend dem dazugehörigen ISiK-Profil) zurückgegeben werden. Das id-Element der Appointment-Ressource MUSS korrekt gefüllt werden. Der Server MUSS den Status der Appointment-Ressource auf 'booked' oder 'pending' ändern. Der Server MUSS die verwendeten Slot-Ressourcen als Referenz im Appointment angeben. Die Appointment-Ressource SOLL direkt im HTTP Body zurückgegeben werden, falls es sich um den einzigen Rückgabewert handelt. Alternativ kann die Appointment-Ressource innerhalb einer Parameter-Ressource zurückgegeben werden. Als Teil der Parameter-Ressource können zusätzlich Hinweise zum Termin als OperationOutcome zurückgegeben werden."
* type = #Appointment
* parameter[+]
* name = #return
* use = #out
* min = 0
* max = "1"
- * documentation = "Falls die Interaktion fehlschlägt, MUSS als Return-Parameter eine OperationOutcome-Ressource zurückgegeben werden. Syntaktische Fehler in der Appointment-Ressource MUSS mit einem HTTP Status-Code 400 - Bad Request zurückgewiesen werden. Anderweitig invalide Appointment-Ressourcen MÜSSEN mit einer OperationOutcome-Ressource abgewiesen werden. In diesem Fall SOLLTE der HTTP Status-Code HTTP 422 - Unprocessable Entity verwendet werden. Eine OperationOutcome-Ressource KANN zu informativen Zwecken in jedem Fall zurückgegeben werden (s.o.)."
+ * documentation = "Falls die Interaktion fehlschlägt, MUSS als Return-Parameter eine OperationOutcome-Ressource zurückgegeben werden. Syntaktische Fehler in der Appointment-Ressource MUSS mit einem HTTP Status-Code 400 - Bad Request zurückgewiesen werden. Anderweitig invalide Appointment-Ressourcen MÜSSEN mit einer OperationOutcome-Ressource abgewiesen werden. In diesem Fall SOLL der HTTP Status-Code HTTP 422 - Unprocessable Entity verwendet werden. Eine OperationOutcome-Ressource KANN zu informativen Zwecken in jedem Fall zurückgegeben werden (s.o.)."
* type = #OperationOutcome
diff --git a/Resources/input/fsh/ISiKKalender.fsh b/Resources/input/fsh/ISiKKalender.fsh
index f79063ec..317083ce 100644
--- a/Resources/input/fsh/ISiKKalender.fsh
+++ b/Resources/input/fsh/ISiKKalender.fsh
@@ -18,6 +18,7 @@ Id: ISiKKalender
* ^slicing.rules = #open
* actor contains Akteur 0..1 MS
* actor[Akteur] only Reference(Practitioner or HealthcareService)
+* actor[Akteur] ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* actor[Akteur].reference 1..1 MS
* extension MS
* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-Schedule.name named KalenderName 0..1 MS
@@ -27,6 +28,7 @@ Id: ISiKKalender
//WIP
Extension: ScheduleName
Id: ScheduleName
+* insert Meta
* ^url = "http://hl7.org/fhir/5.0/StructureDefinition/extension-Schedule.name"
* value[x] only string
* valueString 0..1
diff --git a/Resources/input/fsh/ISiKNachricht.fsh b/Resources/input/fsh/ISiKNachricht.fsh
index 3e9ba241..585b78ea 100644
--- a/Resources/input/fsh/ISiKNachricht.fsh
+++ b/Resources/input/fsh/ISiKNachricht.fsh
@@ -6,6 +6,7 @@ Id: ISiKNachricht
* status MS
* subject 1..1 MS
* subject only Reference(Patient)
+* subject ^comment = "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein."
* sent MS
* recipient 1..* MS
* identifier 0..1 MS
@@ -16,6 +17,7 @@ Id: ISiKNachricht
* recipient contains ISiKRecipient 1.. MS
* recipient[ISiKRecipient] only Reference(Practitioner or HealthcareService)
* recipient[ISiKRecipient].reference 1..1 MS
+* recipient ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* payload 1..* MS
* content[x] MS
* contentString MS
diff --git a/Resources/input/fsh/ISiKTermin.fsh b/Resources/input/fsh/ISiKTermin.fsh
index 3cce9c64..93229c48 100644
--- a/Resources/input/fsh/ISiKTermin.fsh
+++ b/Resources/input/fsh/ISiKTermin.fsh
@@ -19,6 +19,8 @@ Id: ISiKTermin
* start 1..1 MS
* end 1..1 MS
* slot 0..* MS
+ * reference 1.. MS
+* slot ^comment = "Zur Referenzierung auf eine Slot-Ressource MUSS eine Reference.reference mit einer URL verwendet werden. Das Termin-Repository muss so gestaltet sein, dass es aus Perspektive des Clients nur eine Service-BaseUrl gibt." //Zur Begründung: verschiedene Referenzierungs-Arten (z.B. mit Business-Identifiern) sind ggf. nicht interoperabel
* patientInstruction 0..1 MS
* participant 1..* MS
* actor 1..1 MS
@@ -27,14 +29,17 @@ Id: ISiKTermin
* ^slicing.discriminator.type = #type
* ^slicing.discriminator.path = "actor.resolve()"
* ^slicing.rules = #open
+* participant ^comment = "Die Kardinalität von actor.display und das MS-Flag von .status wird an die Slices vererbt und diese sind entsprechend zu implementieren."
* participant contains AkteurPatient 1.. MS
* participant[AkteurPatient].actor only Reference(Patient)
* participant[AkteurPatient].actor MS
* participant[AkteurPatient].actor.reference 1..1 MS
+* participant[AkteurPatient] ^comment = "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein."
* participant contains AkteurPersonImGesundheitsberuf 0.. MS
* participant[AkteurPersonImGesundheitsberuf].actor only Reference(Practitioner)
* participant[AkteurPersonImGesundheitsberuf].actor MS
* participant[AkteurPersonImGesundheitsberuf].actor.reference 1..1 MS
+* participant[AkteurPersonImGesundheitsberuf] ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* participant contains AkteurMedizinischeBehandlungseinheit 0.. MS
* participant[AkteurMedizinischeBehandlungseinheit].actor only Reference(HealthcareService)
* participant[AkteurMedizinischeBehandlungseinheit].actor MS
@@ -52,16 +57,18 @@ Id: ISiKTermin
Extension: ISiKNachrichtExtension
Id: ISiKNachrichtExtension
+* insert Meta
* value[x] only Reference(ISiKNachricht)
Extension: ISiKTerminPriorityExtension
Id: ISiKTerminPriorityExtension
+* insert Meta
* value[x] only CodeableConcept
* valueCodeableConcept 1..1 MS
* valueCodeableConcept from ISiKTerminPriority (required)
Invariant: ISiK-app-1
-Description: "Der Endzeitpunkt eines Termins sollte nach dem Startzeitpunkt liegen"
+Description: "Der Endzeitpunkt eines Termins MUSS nach dem Startzeitpunkt liegen"
Severity: #error
Expression: "start <= end"
@@ -88,5 +95,6 @@ Usage: #example
// This extension can be safely removed as soon as a package for R5 backport extensions is published and referenced by this project
Extension: AppointmentReplaces
Id: AppointmentReplaces
+* insert Meta
* ^url = "http://hl7.org/fhir/5.0/StructureDefinition/extension-Appointment.replaces"
-* value[x] only Reference(Appointment)
\ No newline at end of file
+* value[x] only Reference(Appointment)
diff --git a/Resources/input/fsh/ISiKTerminblock.fsh b/Resources/input/fsh/ISiKTerminblock.fsh
index 31e8ce9a..4c079b3e 100644
--- a/Resources/input/fsh/ISiKTerminblock.fsh
+++ b/Resources/input/fsh/ISiKTerminblock.fsh
@@ -5,12 +5,14 @@ Id: ISiKTerminblock
* obeys ISiK-slot-1
* schedule 1..1 MS
* schedule only Reference(Schedule)
+ * reference 1.. MS
+* schedule ^comment = "Zur Referenzierung auf eine Schedule-Ressource MUSS eine Reference.reference mit einer URL verwendet werden. Das Termin-Repository muss so gestaltet sein, dass es aus Perspektive des Clients nur eine Service-BaseUrl gibt." //Zur Begründung: verschiedene Referenzierungs-Arten (z.B. mit Business-Identifiern) sind ggf. nicht interoperabel.
* status 1..1 MS
* start 1..1 MS
* end 1..1 MS
Invariant: ISiK-slot-1
-Description: "Der Endzeitpunkt eines Terminsblocks sollte nach dem Startzeitpunkt liegen"
+Description: "Der Endzeitpunkt eines Terminsblocks MUSS nach dem Startzeitpunkt liegen"
Severity: #error
Expression: "start <= end"
diff --git a/Resources/input/fsh/ISiKTerminplanungCapabilityStatement.fsh b/Resources/input/fsh/ISiKTerminplanungCapabilityStatement.fsh
index 3548a45f..b038700c 100644
--- a/Resources/input/fsh/ISiKTerminplanungCapabilityStatement.fsh
+++ b/Resources/input/fsh/ISiKTerminplanungCapabilityStatement.fsh
@@ -1,6 +1,7 @@
Instance: ISiKCapabilityStatementTerminplanungServer
InstanceOf: CapabilityStatement
Usage: #definition
+* insert Meta-Inst
* insert Meta-CapabilityStatement
* name = "ISiKCapabilityStatementTerminplanungServer"
* title = "ISiK CapabilityStatement Terminplanung Server"
@@ -14,86 +15,9 @@ Usage: #definition
* format[+] = #application/fhir+json
* instantiates = Canonical(ISiKCapabilityStatementTerminplanungServer)
* rest.mode = #server
+
* rest.resource[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
-* rest.resource[=].type = #Patient
-* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient"
-* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
-* rest.resource[=].interaction[=].extension.valueCode = #SHALL
-* rest.resource[=].interaction[=].code = #read
-* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].interaction[=].extension.valueCode = #SHALL
-* rest.resource[=].interaction[=].code = #create
-* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].interaction[=].extension.valueCode = #SHALL
-* rest.resource[=].interaction[=].code = #search-type
-* rest.resource[=].searchParam[0].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "_id"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
-* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "identifier"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Patient-identifier"
-* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "family"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-family"
-* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "given"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-given"
-* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "birthdate"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-birthdate"
-* rest.resource[=].searchParam[=].type = #date
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "gender"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-gender"
-* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchRevInclude = "Communication:subject"
-* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL
-* rest.resource[=].searchRevInclude = "Appointment:actor"
-* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL
-* rest.resource[0].extension.url = $capabilitystatement-expectation
-* rest.resource[=].extension.valueCode = #SHALL
-* rest.resource[=].type = #Practitioner
-* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf"
-* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
-* rest.resource[=].interaction[=].extension.valueCode = #SHALL
-* rest.resource[=].interaction[=].code = #read
-* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].interaction[=].extension.valueCode = #SHALL
-* rest.resource[=].interaction[=].code = #search-type
-* rest.resource[=].searchParam[0].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "_id"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
-* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "identifier"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Practitioner-identifier"
-* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "family"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-family"
-* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
-* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
-* rest.resource[=].searchParam[=].name = "given"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-given"
-* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Schedule
* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKKalender"
* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
@@ -133,6 +57,7 @@ Usage: #definition
* rest.resource[=].searchInclude = "Schedule:actor"
* rest.resource[=].searchInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchInclude[=].extension.valueCode = #SHALL
+
* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Slot
@@ -169,6 +94,7 @@ Usage: #definition
* rest.resource[=].searchRevInclude = "Appointment:slot"
* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL
+
* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Appointment
@@ -272,6 +198,7 @@ Usage: #definition
* rest.resource[=].searchInclude[+] = "Communication:subject"
* rest.resource[=].searchInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchInclude[=].extension.valueCode = #SHALL
+
* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #HealthcareService
@@ -328,4 +255,4 @@ Usage: #definition
* interaction[+]
* extension.url = $capabilitystatement-expectation
* extension.valueCode = #SHALL
- * code = #create
\ No newline at end of file
+ * code = #create
diff --git a/Resources/input/fsh/ruleset.fsh b/Resources/input/fsh/ruleset.fsh
index 38d14b9f..4a71b9ed 100644
--- a/Resources/input/fsh/ruleset.fsh
+++ b/Resources/input/fsh/ruleset.fsh
@@ -1,23 +1,16 @@
RuleSet: Meta
-* ^status = #active
* ^experimental = false
* ^publisher = "gematik GmbH"
-* ^version = "3.0.1"
-* ^date = "2023-07-01"
-
+* ^version = "3.0.2"
+* ^date = "2024-01-03"
RuleSet: Meta-Inst
* status = #active
* experimental = false
-* version = "3.0.1"
* publisher = "gematik GmbH"
-* date = "2023-07-01"
+* version = "3.0.2"
+* date = "2024-01-03"
RuleSet: Meta-CapabilityStatement
-* status = #active
-* experimental = false
-* version = "3.0.1"
-* publisher = "gematik GmbH"
-* date = "2023-07-01"
-* implementationGuide = "https://gematik.de/fhir/isik/v3/Terminplanung/ImplementationGuide|3.0.0"
+* implementationGuide = "https://gematik.de/fhir/isik/v3/Terminplanung/ImplementationGuide|3.0.2"
* url = "https://gematik.de/fhir/isik/v3/Terminplanung/CapabilityStatement/terminplanung-server"
\ No newline at end of file
diff --git a/Resources/sushi-config.yaml b/Resources/sushi-config.yaml
index ea433592..f3a884c2 100644
--- a/Resources/sushi-config.yaml
+++ b/Resources/sushi-config.yaml
@@ -2,14 +2,8 @@ canonical: https://gematik.de/fhir/isik/v3/Terminplanung
fhirVersion: 4.0.1
FSHOnly: true
applyExtensionMetadataToRoot: false
-id: Implementierungsleitfaden ISiK-Modul Terminplanung
-name: Implementierungsleitfaden ISiK-Modul Terminplanung
status: active
-version: 3.0.1
-publisher:
- name: gematik GmbH
- url: https://www.gematik.de/
- email: ISiK@gematik.de
+version: 3.0.2
dependencies:
- de.gematik.isik-basismodul: 3.0.0
+ de.gematik.isik-basismodul: 3.0.3
hl7.fhir.extensions.r5: 4.0.1
diff --git a/package.json b/package.json
index 71ddcf17..3d8b8848 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,11 @@
{
"name": "de.gematik.isik-terminplanung",
- "version": "3.0.1",
+ "version": "3.0.2",
"description": "Package Release des ISiK Modul Terminplanung",
"fhirVersions": [
"4.0.1"
],
"dependencies": {
- "de.gematik.isik-basismodul": "3.0.0"
+ "de.gematik.isik-basismodul": "3.0.3"
}
}
diff --git a/scripts/config.yaml b/scripts/config.yaml
new file mode 100644
index 00000000..e5f05c51
--- /dev/null
+++ b/scripts/config.yaml
@@ -0,0 +1,26 @@
+package.json:
+ - type: version
+ regex: '("version":\s*")([\d\.]+.*)(")'
+sushi-config.yaml:
+ - type: version
+ regex: '(version:\s*)(\d+\.\d+\.\d+.*)()'
+ruleset.fsh:
+ - type: version
+ regex:
+ - '(\*\s*version\s*=\s*")([\d\.]+.*)(")'
+ - '(\*\s*\^version\s*=\s*")([\d\.]+.*)(")'
+ - '(\*\s*implementationGuide\s*=\s*".*\|)([\d\.]+.*)(")'
+ - type: date
+ regex:
+ - '(\*\s*date\s*=\s*")(\d+\-\d+\-\d+)(")'
+ - '(\*\s*\^date\s*=\s*")(\d+\-\d+\-\d+)(")'
+ format: '%Y-%m-%d'
+Einfuehrung.md:
+ - type: version
+ regex: '(Version: \s*)(\d+\.\d+\.\d+.*)()'
+ - type: date
+ regex: '(Datum:\s*)(\d+\.\d+\.\d+.*)()'
+ format: '%d.%m.%Y'
+ImplementierungsleitfadenIsiK_Terminplanung.json:
+ - type: version
+ regex: '("version":\s*")(\d+\.\d+\.\d+.*)(",)'
\ No newline at end of file
diff --git a/scripts/release_publish.py b/scripts/release_publish.py
index 0b2d84db..86adfa52 100644
--- a/scripts/release_publish.py
+++ b/scripts/release_publish.py
@@ -1,126 +1,104 @@
+import datetime
import re
import subprocess
import os
import argparse
from datetime import date
+import yaml
-class FileWithVersionToUpdate:
- def __init__(self, filename, version_regex) -> None:
- self.filename = filename
- self.version_regex = version_regex
- self.location = None
-
- def set_file_location(self, location):
- self.location = location
-class FileWithDateToUpdate:
- def __init__(self, filename, date_regex) -> None:
+class FileTypeCombinationToUpdate:
+ def __init__(self, filename, content_type, regex_list, format=None) -> None:
self.filename = filename
- self.date_regex = date_regex
+ self.content_type = content_type
+ self.regex_list = regex_list
+ self.format = format
self.location = None
def set_file_location(self, location):
self.location = location
-# class FileWithDateToUpdate:
-# def __init__(self, filename, date_regex, format) -> None:
-# self.filename = filename
-# self.date_regex = date_regex
-# self.location = None
-# self.format = format
-# def set_file_location(self, location):
-# self.location = location
-
-
+def load_config_file(config_file_path):
+ with open(config_file_path, 'r') as config_file:
+ return yaml.safe_load(config_file)
def get_new_release_version_from_branch_name() -> str:
git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip().decode()
return git_branch
-def replace_version_in_files(files : list, new_release_version: str):
- if files is None:
- print("Error: No Files found!")
- return
- for file in files:
- replace_version_in_file(file,new_release_version)
+def create_files_to_update_list(config):
+ files_to_update = []
+ for filename, replacements in config.items():
+ for replacement in replacements:
+ files_to_update.append(
+ FileTypeCombinationToUpdate(
+ filename,
+ replacement["type"],
+ replacement["regex"] if isinstance(replacement["regex"], list) else [replacement["regex"]],
+ replacement.get("format", None),
+ )
+ )
+ return files_to_update
-def replace_version_in_file(file: FileWithVersionToUpdate,new_release_version: str):
- with open(file.location, 'r') as input_file:
- input_text = input_file.read()
- output_text = re.sub(file.version_regex, rf'\g<1>{new_release_version}\g<3>', input_text)
- print(f"Info: Replaced version with '{new_release_version}' in file '{file.location}'.")
+def locate_files_in_current_project(files: list):
+ located_files = []
+ for current_file in files:
+ file_location = find_file(current_file.filename, ".")
+ if file_location is not None:
+ current_file.set_file_location(file_location)
+ located_files.append(current_file)
+ else:
+ print(f"Warning: File '{current_file.filename}' not found.")
+ return located_files
- with open(file.location, 'w') as output_file:
- output_file.write(output_text)
-def replace_date_in_files(files : list, new_release_date: str):
+def find_file(name, path="."):
+ for root, dirs, files in os.walk(path):
+ if name in files:
+ print(f"Info: Found '{name}' in {root}.")
+ return os.path.join(root, name)
+ return None
+
+
+def replace_content_in_files(files: list, new_release_version: str, new_date: datetime):
if files is None:
- print("Error: No Files found!")
+ print("Error: No files found!")
return
- for file in files:
- replace_date_in_file(file,new_release_date)
+ for FileTypeCombination in files:
+ if FileTypeCombination.content_type == "version":
+ replace_version_in_file(FileTypeCombination, new_release_version)
+ elif FileTypeCombination.content_type == "date":
+ replace_date_in_file(FileTypeCombination, new_date)
+
-def replace_date_in_file(file: FileWithVersionToUpdate, new_date: str):
+def replace_version_in_file(file: FileTypeCombinationToUpdate, new_release_version: str):
with open(file.location, 'r') as input_file:
input_text = input_file.read()
- #output_text = re.sub(file.date_regex, rf'\g<1>{new_date.strftime(file.format)}\g<3>', input_text) #see https://www.programiz.com/python-programming/datetime#:~:text=Python%20format%20datetime&text=It%27s%20more%20common%20to%20use,()%20methods%20to%20handle%20this.
- output_text = re.sub(file.date_regex, rf'\g<1>{new_date}\g<3>', input_text)
- print(f"Info: Replaced date with '{new_date}' in file '{file.location}'.")
+ for regex in file.regex_list:
+ input_text = re.sub(regex, rf'\g<1>{new_release_version}\g<3>', input_text)
+
+ print(f"Info: Replaced version with '{new_release_version}' in file '{file.location}'.")
with open(file.location, 'w') as output_file:
- output_file.write(output_text)
-
-def get_file_to_update_version_list():
- file_list = []
- file_list.append(FileWithVersionToUpdate('package.json', r'("version":\s*")([\d\.]+.*)(")'))
- file_list.append(FileWithVersionToUpdate('sushi-config.yaml', r'(version:\s*")(\d+\.\d+\.\d+.*)(")'))
- file_list.append(FileWithVersionToUpdate('ruleset.fsh', r'(\*\s*version\s*=\s*")([\d\.]+.*)(")'))
- file_list.append(FileWithVersionToUpdate('Einfuehrung.md', r'(Version: \s*)(\d+\.\d+\.\d+.*)()'))
- file_list.append(FileWithVersionToUpdate('ImplementierungsleitfadenIsiK_basismodul.json', r'("version":\s*")([\d\.]+.*)(")'))
- file_list.append(FileWithVersionToUpdate('ImplementierungsleitfadenIsiK_Terminplanung.json', r'("version":\s*")([\d\.]+.*)(")'))
- return file_list
-
-def get_file_to_update_date_list():
- file_list = []
- #file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(date\s*=\s*")(\d+\-\d+\-\d+)(")'), '%m/%d/%Y' )
- #file_list.append(FileWithDateToUpdate('Einfuehrung.md', r'(Datum: \s*)(\d+\.\d+\.\d+)()') , '%m/%d/%Y')
- file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(\*\s*date\s*=\s*")(\d+\-\d+\-\d+)(")'))
- file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(\*\s*\^date\s*=\s*")(\d+\-\d+\-\d+)(")'))
- file_list.append(FileWithDateToUpdate('Einfuehrung.md', r'(Datum:\s*)(\d+\.\d+\.\d+.*)()'))
- return file_list
+ output_file.write(input_text)
-def locate_files_in_current_project(files: list):
- return_list = []
- for current_file in files:
- file_location = find_file(current_file.filename, ".")
- if file_location is not None:
- current_file.set_file_location(file_location)
- return_list.append(current_file)
- else:
- print(f"Warning: File '{current_file.filename}' not found.")
- return return_list
+def replace_date_in_file(file: FileTypeCombinationToUpdate, new_date: datetime):
+ with open(file.location, 'r') as input_file:
+ input_text = input_file.read()
-def find_file(name, path="."):
- for root, dirs, files in os.walk(path):
+ for regex in file.regex_list:
+ input_text = re.sub(regex, rf'\g<1>{new_date.strftime(file.format)}\g<3>', input_text)
- if name in files:
- print(f"Info: Found '{name}' in {root}.")
- return os.path.join(root, name)
- return None
+ print(f"Info: Replaced date with '{new_date.strftime(file.format)}' in file '{file.location}'.")
-def get_latest_release_tag():
- cmd = 'git describe --abbrev=0 --tags --match "v*.*.*" HEAD'
- try:
- output = subprocess.check_output(cmd, shell=True)
- return output.decode().strip()
- except subprocess.CalledProcessError:
- return None
+ with open(file.location, 'w') as output_file:
+ output_file.write(input_text)
def output_commit_messages_since_last_release():
latest_release_tag = get_latest_release_tag()
@@ -135,15 +113,22 @@ def output_commit_messages_since_last_release():
except subprocess.CalledProcessError:
print("Warning: Failed to get commit messages.")
-def main():
- today = date.today()
+def get_latest_release_tag():
+ cmd = 'git describe --abbrev=0 --tags --match "v*.*.*" HEAD'
+ try:
+ output = subprocess.check_output(cmd, shell=True)
+ return output.decode().strip()
+ except subprocess.CalledProcessError:
+ return None
- parser = argparse.ArgumentParser(description='Update release version number')
+
+def main():
+ parser = argparse.ArgumentParser(description='Update release version number and date')
parser.add_argument('-b', '--branch', action='store_true', help='get new version from branch name')
parser.add_argument('-v', '--version', type=str, help='specify new version number')
+ parser.add_argument('-d', '--date', type=str, help='specify custom date for release')
+ parser.add_argument('-c', '--config', type=str, default='config.yaml', help='specify config file')
parser.add_argument('-o', '--output', action='store_true', help='output commit messages since last release')
- # TODO new argument -d if not date_time now
-
args = parser.parse_args()
if args.version:
@@ -153,16 +138,19 @@ def main():
else:
parser.error('No new release version specified. Please use either -v or -b to specify the new release version.')
- if args.output:
- output_commit_messages_since_last_release()
+ if args.date:
+ custom_date = datetime.datetime.strptime(args.date, '%d.%m.%Y').date()
+ else:
+ custom_date = date.today()
- file_to_update_version_list = get_file_to_update_version_list()
- file_version_list = locate_files_in_current_project(file_to_update_version_list)
- replace_version_in_files(file_version_list, new_release_version)
+ config_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), args.config)
+ config = load_config_file(config_file_path)
+ files_to_update = create_files_to_update_list(config)
+ located_files = locate_files_in_current_project(files_to_update)
+ replace_content_in_files(located_files, new_release_version, custom_date)
- file_to_update_date_list = get_file_to_update_date_list()
- file_date_list = locate_files_in_current_project(file_to_update_date_list)
- replace_date_in_files(file_date_list, today)
+ if args.output:
+ output_commit_messages_since_last_release()
if __name__ == "__main__":
main()
\ No newline at end of file
diff --git a/scripts/update_version.sh b/scripts/update_version.sh
deleted file mode 100644
index 2cbe628d..00000000
--- a/scripts/update_version.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-clear
-# This script will download the latest validation script from the template source save it
-# to the scripts_folder and execute it to validate your fhir ressources.
-script_name=release_publish.py
-script_path=.
-
-#parentdir="$(dirname "$script_path")"
-#mkdir -p "$parentdir"
-
-curl https://raw.githubusercontent.com/gematik/spec-TemplateForSimplifierProjects/feature/release_publish/scripts/$script_name -o $script_path
-chmod a+x $script_path
-python3 $script_name
\ No newline at end of file