diff --git a/.gitignore b/.gitignore
index abcdb312..f46c601f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,15 @@
-bulk-import.py
.DS_Store
Thumbs.db
-/assembler
-# /fsh-generated
-/input-cache
-/node_modules
-/output
-/temp
-/template
-/.vscode
-fhir.schema.json
\ No newline at end of file
+bulk-import.py
+assembler/
+fsh-generated/fsh-index.*
+fsh-generated/includes/
+fsh-generated/data/
+input-cache/
+node_modules/
+output/
+temp/
+template/
+.vscode/
+fhir.schema.json
+/input/images/*.bkp
diff --git a/LICENSE b/LICENSE
index 261eeb9e..855c81cc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,201 +1,371 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- 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.
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ b. ShareAlike.
+
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
+ including for purposes of Section 3(b); and
+
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/PrepopVariables.json b/PrepopVariables.json
deleted file mode 100644
index e49c6df0..00000000
--- a/PrepopVariables.json
+++ /dev/null
@@ -1,226 +0,0 @@
-{
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "FamilyMemberHistory",
- "language": "application/x-fhir-query",
- "expression": "FamilyMemberHistory?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsTobaccoSmoking",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=72166-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBodyHeight",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8302-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsWaistCircumference",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8280-0&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBodyWeight",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=29463-7&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsHeartRate",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8867-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBMI",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=39156-5&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBloodPressurePanel",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=85354-9&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsDateCeasedSmoking",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=160625004&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsDateStartedSmoking",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=smoking-date-started&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsTobaccoUseExposure",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=229819007&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsAlcoholIntake",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=897148007&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsDrinkingPattern",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=228308009&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsDateCeasedAlcohol",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=1373041000168105&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "Immunisation",
- "language": "application/x-fhir-query",
- "expression": "Immunization?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "MedicationStatement",
- "language": "application/x-fhir-query",
- "expression": "MedicationStatement?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "AllergyIntolerance",
- "language": "application/x-fhir-query",
- "expression": "AllergyIntolerance?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "Condition",
- "language": "application/x-fhir-query",
- "expression": "Condition?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "DiagnosticReport",
- "language": "application/x-fhir-query",
- "expression": "DiagnosticReport?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "TotalCholesterol",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=14647-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "HDLCholesterol",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=14646-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "HeadCircumference",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=9843-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- }
-
- ]
-}
-
diff --git a/PrepopVariablesMinimal.json b/PrepopVariablesMinimal.json
deleted file mode 100644
index 9c12e1fe..00000000
--- a/PrepopVariablesMinimal.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "Condition",
- "language": "application/x-fhir-query",
- "expression": "Condition?patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsTobaccoSmokingStatus",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=72166-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBodyHeight",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8302-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBodyWeight",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=29463-7&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBMI",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=39156-5&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsHeadCircumference",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=9843-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsWaistCircumference",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8280-0&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsBloodPressure",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=85354-9&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsHeartRate",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=8867-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsTotalCholesterol",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=14647-2&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- },
- {
- "url": "http://hl7.org/fhir/StructureDefinition/variable",
- "valueExpression": [
- {
- "name": "ObsHDLCholesterol",
- "language": "application/x-fhir-query",
- "expression": "Observation?code=14646-4&_count=1&_sort=-date&patient={{%patient.id}}"
- }
- ]
- }
-
- ]
-}
-
diff --git a/_build.bat b/_build.bat
new file mode 100644
index 00000000..2bf0d793
--- /dev/null
+++ b/_build.bat
@@ -0,0 +1,386 @@
+@ECHO OFF
+setlocal enabledelayedexpansion
+
+SET "dlurl=https://github.com/HL7/fhir-ig-publisher/releases/latest/download/publisher.jar"
+SET "publisher_jar=publisher.jar"
+SET "input_cache_path=%CD%\input-cache\"
+SET "skipPrompts=false"
+SET "upper_path=..\"
+SET "scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main"
+SET "build_bat_url=%scriptdlroot%/_build.bat"
+SET "build_sh_url=%scriptdlroot%/_build.sh"
+
+
+
+:: Debugging statements to check jar file location
+ECHO Checking for publisher.jar in %input_cache_path%
+IF EXIST "%input_cache_path%%publisher_jar%" (
+ SET "jar_location=%input_cache_path%%publisher_jar%"
+ ECHO Found publisher.jar in input-cache
+) ELSE (
+ ECHO Checking for publisher.jar in %upper_path%
+ IF EXIST "%upper_path%%publisher_jar%" (
+ SET "jar_location=%upper_path%%publisher_jar%"
+ ECHO Found publisher.jar in parent folder
+ ) ELSE (
+ SET "jar_location=not_found"
+ SET "default_choice=1"
+ ECHO publisher.jar not found in input-cache or parent folder
+ )
+)
+
+
+:: Handle command-line argument to bypass the menu
+IF NOT "%~1"=="" (
+ IF /I "%~1"=="update" SET "userChoice=1"
+ IF /I "%~1"=="build" SET "userChoice=2"
+ IF /I "%~1"=="nosushi" SET "userChoice=3"
+ IF /I "%~1"=="notx" SET "userChoice=4"
+ IF /I "%~1"=="jekyll" SET "userChoice=5"
+ IF /I "%~1"=="clean" SET "userChoice=6"
+ IF /I "%~1"=="exit" SET "userChoice=0"
+ GOTO executeChoice
+)
+
+echo ---------------------------------------------------------------
+ECHO Checking internet connection...
+PING tx.fhir.org -4 -n 1 -w 4000 >nul 2>&1 && SET "online_status=true" || SET "online_status=false"
+
+IF "%online_status%"=="true" (
+ ECHO We're online and tx.fhir.org is available.
+ FOR /F "tokens=2 delims=:" %%a IN ('curl -s https://api.github.com/repos/HL7/fhir-ig-publisher/releases/latest ^| findstr "tag_name"') DO SET "latest_version=%%a"
+ SET "latest_version=!latest_version:"=!"
+ SET "latest_version=!latest_version: =!"
+ SET "latest_version=!latest_version:~0,-1!"
+) ELSE (
+ ECHO We're offline or tx.fhir.org is not available, can only run the publisher without TX...
+ SET "txoption=-tx n/a"
+ SET "latest_version=unknown"
+ SET "default_choice=4"
+)
+
+echo ---------------------------------------------------------------
+
+
+IF NOT "%jar_location%"=="not_found" (
+ FOR /F "tokens=*" %%i IN ('java "-Dfile.encoding=UTF-8" -jar "%jar_location%" -v 2^>^&1') DO SET "publisher_version=%%i"
+ SET "publisher_version=!publisher_version:"=!"
+ ECHO Detected publisher version: !publisher_version!
+) ELSE (
+ SET "publisher_version=unknown"
+ ECHO publisher.jar location is not found
+)
+
+ECHO Publisher version: !publisher_version!; Latest is !latest_version!
+
+IF NOT "%online_status%"=="true" (
+ ECHO We're offline.
+) ELSE (
+ IF NOT "!publisher_version!"=="!latest_version!" (
+ ECHO An update is recommended.
+ SET "default_choice=1"
+ ) ELSE (
+ ECHO Publisher is up to date.
+ SET "default_choice=2"
+ )
+)
+
+echo ---------------------------------------------------------------
+echo.
+
+echo Please select an option:
+echo 1. Download or upload publisher
+echo 2. Build IG
+echo 3. Build IG - no sushi
+echo 4. Build IG - force no TX server
+echo 5. Jekyll build
+echo 6. Clean up temp directories
+echo 0. Exit
+:: echo [Press Enter for default (%default_choice%) or type an option number:]
+echo.
+
+:: Using CHOICE to handle input with timeout
+:: ECHO [Enter=Continue, 1-7=Option, 0=Exit]
+choice /C 12345670 /N /CS /D %default_choice% /T 5 /M "Choose an option number or wait 5 seconds for default (%default_choice%):"
+SET "userChoice=%ERRORLEVEL%"
+
+
+:executeChoice
+echo You selected: %userChoice%
+
+IF "%userChoice%"=="1" GOTO downloadpublisher
+IF "%userChoice%"=="2" GOTO publish_once
+IF "%userChoice%"=="3" GOTO publish_nosushi
+IF "%userChoice%"=="4" GOTO publish_notx
+IF "%userChoice%"=="5" GOTO debugjekyll
+IF "%userChoice%"=="6" GOTO clean
+IF "%userChoice%"=="0" EXIT /B
+
+:end
+
+
+
+:debugjekyll
+ echo Running Jekyll build...
+ jekyll build -s temp/pages -d output
+GOTO end
+
+
+:clean
+ echo Cleaning up directories...
+ if exist ".\input-cache\publisher.jar" (
+ echo Preserving publisher.jar and removing other files in .\input-cache...
+ move ".\input-cache\publisher.jar" ".\"
+ rmdir /s /q ".\input-cache"
+ mkdir ".\input-cache"
+ move ".\publisher.jar" ".\input-cache"
+ ) else (
+ if exist ".\input-cache\" (
+ rmdir /s /q ".\input-cache"
+ )
+ )
+ if exist ".\temp\" (
+ rmdir /s /q ".\temp"
+ echo Removed: .\temp
+ )
+ if exist ".\output\" (
+ rmdir /s /q ".\output"
+ echo Removed: .\output
+ )
+ if exist ".\template\" (
+ rmdir /s /q ".\template"
+ echo Removed: .\template
+ )
+
+GOTO end
+
+
+
+
+
+:downloadpublisher
+ECHO Downloading Publisher...
+:processflags
+SET ARG=%1
+IF DEFINED ARG (
+ IF "%ARG%"=="-f" SET FORCE=true
+ IF "%ARG%"=="--force" SET FORCE=true
+ SHIFT
+ GOTO processflags
+)
+
+FOR %%x IN ("%CD%") DO SET upper_path=%%~dpx
+
+ECHO.
+IF NOT EXIST "%input_cache_path%%publisher_jar%" (
+ IF NOT EXIST "%upper_path%%publisher_jar%" (
+ SET jarlocation="%input_cache_path%%publisher_jar%"
+ SET jarlocationname=Input Cache
+ ECHO IG Publisher is not yet in input-cache or parent folder.
+ REM we don't use jarlocation below because it will be empty because we're in a bracketed if statement
+ GOTO create
+ ) ELSE (
+ ECHO IG Publisher FOUND in parent folder
+ SET jarlocation="%upper_path%%publisher_jar%"
+ SET jarlocationname=Parent folder
+ GOTO upgrade
+ )
+) ELSE (
+ ECHO IG Publisher FOUND in input-cache
+ SET jarlocation="%input_cache_path%%publisher_jar%"
+ SET jarlocationname=Input Cache
+ GOTO upgrade
+)
+
+:create
+IF DEFINED FORCE (
+ MKDIR "%input_cache_path%" 2> NUL
+ GOTO download
+)
+
+IF "%skipPrompts%"=="y" (
+ SET create=Y
+) ELSE (
+ SET /p create="Download? (Y/N) "
+)
+IF /I "%create%"=="Y" (
+ ECHO Will place publisher jar here: %input_cache_path%%publisher_jar%
+ MKDIR "%input_cache_path%" 2> NUL
+ GOTO download
+)
+GOTO done
+
+:upgrade
+IF "%skipPrompts%"=="y" (
+ SET overwrite=Y
+) ELSE (
+ SET /p overwrite="Overwrite %jarlocation%? (Y/N) "
+)
+
+IF /I "%overwrite%"=="Y" (
+ GOTO download
+)
+GOTO done
+
+:download
+ECHO Downloading most recent publisher to %jarlocationname% - it's ~200 MB, so this may take a bit
+
+FOR /f "tokens=4-5 delims=. " %%i IN ('ver') DO SET VERSION=%%i.%%j
+IF "%version%" == "10.0" GOTO win10
+IF "%version%" == "6.3" GOTO win8.1
+IF "%version%" == "6.2" GOTO win8
+IF "%version%" == "6.1" GOTO win7
+IF "%version%" == "6.0" GOTO vista
+
+ECHO Unrecognized version: %version%
+GOTO done
+
+:win10
+CALL POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%dlurl%\",\"%jarlocation%\") } else { Invoke-WebRequest -Uri "%dlurl%" -Outfile "%jarlocation%" }
+
+GOTO done
+
+:win7
+rem this may be triggering the antivirus - bitsadmin.exe is a known threat
+rem CALL bitsadmin /transfer GetPublisher /download /priority normal "%dlurl%" "%jarlocation%"
+
+rem this didn't work in win 10
+rem CALL Start-BitsTransfer /priority normal "%dlurl%" "%jarlocation%"
+
+rem this should work - untested
+call (New-Object Net.WebClient).DownloadFile('%dlurl%', '%jarlocation%')
+GOTO done
+
+:win8.1
+:win8
+:vista
+GOTO done
+
+
+
+:done
+
+
+
+
+ECHO.
+ECHO Updating scripts
+IF "%skipPrompts%"=="y" (
+ SET updateScripts=Y
+) ELSE (
+ SET /p updateScripts="Update scripts? (Y/N) "
+)
+IF /I "%updateScripts%"=="Y" (
+ GOTO scripts
+)
+GOTO end
+
+
+:scripts
+
+REM Download all batch files (and this one with a new name)
+
+SETLOCAL DisableDelayedExpansion
+
+
+
+:dl_script_1
+ECHO Updating _build.sh
+call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_sh_url%\",\"_build.new.sh\") } else { Invoke-WebRequest -Uri "%build_sh_url%" -Outfile "_build.new.sh" }
+if %ERRORLEVEL% == 0 goto upd_script_1
+echo "Errors encountered during download: %errorlevel%"
+goto dl_script_2
+:upd_script_1
+start copy /y "_build.new.sh" "_build.sh" ^&^& del "_build.new.sh" ^&^& exit
+
+
+:dl_script_2
+ECHO Updating _build.bat
+call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_bat_url%\",\"_build.new.bat\") } else { Invoke-WebRequest -Uri "%build_bat_url%" -Outfile "_build.new.bat" }
+if %ERRORLEVEL% == 0 goto upd_script_2
+echo "Errors encountered during download: %errorlevel%"
+goto end
+:upd_script_2
+start copy /y "_build.new.bat" "_build.bat" ^&^& del "_build.new.bat" ^&^& exit
+
+
+GOTO end
+
+
+:publish_once
+
+SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
+
+:: Debugging statements before running publisher
+ECHO 1jar_location is: %jar_location%
+IF NOT "%jar_location%"=="not_found" (
+ java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% %*
+) ELSE (
+ ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
+)
+
+GOTO end
+
+
+
+:publish_nosushi
+
+SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
+
+:: Debugging statements before running publisher
+ECHO 3jar_location is: %jar_location%
+IF NOT "%jar_location%"=="not_found" (
+ java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% -no-sushi %*
+) ELSE (
+ ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
+)
+
+GOTO end
+
+
+:publish_notx
+SET txoption=-tx n/a
+
+SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
+
+:: Debugging statements before running publisher
+ECHO 2jar_location is: %jar_location%
+IF NOT "%jar_location%"=="not_found" (
+ java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% %*
+) ELSE (
+ ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
+)
+
+GOTO end
+
+
+
+
+:publish_continuous
+
+SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
+
+:: Debugging statements before running publisher
+ECHO Checking %input_cache_path% for publisher.jar
+IF EXIST "%input_cache_path%\%publisher_jar%" (
+ java %JAVA_OPTS% -jar "%input_cache_path%\%publisher_jar%" -ig . %txoption% -watch %*
+) ELSE (
+ ECHO Checking %upper_path% for publisher.jar
+ IF EXIST "..\%publisher_jar%" (
+ java %JAVA_OPTS% -jar "..\%publisher_jar%" -ig . %txoption% -watch %*
+ ) ELSE (
+ ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
+ )
+)
+
+GOTO end
+
+
+:end
+
+:: Pausing at the end
+
+
+IF NOT "%skipPrompts%"=="true" (
+ PAUSE
+)
diff --git a/_updatePublisher.bat b/_updatePublisher.bat
index 67aebf58..10fee381 100644
--- a/_updatePublisher.bat
+++ b/_updatePublisher.bat
@@ -8,6 +8,8 @@ SET input_cache_path=%CD%\input-cache\
SET skipPrompts=false
SET scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main
+SET build_bat_url=%scriptdlroot%/_build.bat
+SET build_sh_url=%scriptdlroot%/_build.sh
SET update_bat_url=%scriptdlroot%/_updatePublisher.bat
SET gen_bat_url=%scriptdlroot%/_genonce.bat
SET gencont_bat_url=%scriptdlroot%/_gencontinuous.bat
@@ -20,7 +22,7 @@ IF "%~1"=="/f" SET skipPrompts=y
ECHO.
ECHO Checking internet connection...
-PING tx.fhir.org -4 -n 1 -w 1000 | FINDSTR TTL && GOTO isonline
+PING tx.fhir.org -4 -n 1 -w 4000 | FINDSTR TTL && GOTO isonline
ECHO We're offline, nothing to do...
GOTO end
@@ -69,6 +71,7 @@ IF DEFINED FORCE (
IF "%skipPrompts%"=="y" (
SET create=Y
) ELSE (
+ ECHO Will place publisher jar here: %input_cache_path%%publisher_jar%
SET /p create="Ok? (Y/N) "
)
IF /I "%create%"=="Y" (
@@ -211,6 +214,16 @@ goto end
start copy /y "_updatePublisher.new.bat" "_updatePublisher.bat" ^&^& del "_updatePublisher.new.bat" ^&^& exit
+:dl_script_7
+ECHO Updating _build.bat
+call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_bat_url%\",\"_build.new.bat\") } else { Invoke-WebRequest -Uri "%update_bat_url%" -Outfile "_build.new.bat" }
+if %ERRORLEVEL% == 0 goto upd_script_6
+echo "Errors encountered during download: %errorlevel%"
+goto end
+:upd_script_6
+start copy /y "_build.new.bat" "_build.bat" ^&^& del "_build.new.bat" ^&^& exit
+
+
:end
diff --git a/_updatePublisher.sh b/_updatePublisher.sh
index 0f9ecbed..6a97fe0b 100644
--- a/_updatePublisher.sh
+++ b/_updatePublisher.sh
@@ -12,6 +12,8 @@ gencont_bat_url=$scriptdlroot/_gencontinuous.bat
gencont_sh_url=$scriptdlroot/_gencontinuous.sh
gen_sh_url=$scriptdlroot/_genonce.sh
update_sh_url=$scriptdlroot/_updatePublisher.sh
+build_sh_url=$scriptdlroot/_build.sh
+build_bat_url=$scriptdlroot/_build.bat
skipPrompts=false
FORCE=false
@@ -103,6 +105,16 @@ if [[ $skipPrompts != true ]]; then
if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then
echo "Downloading most recent scripts "
+ curl -L $build_bat_url -o /tmp/_build.new
+ cp /tmp/_build.new _build.bat
+ rm /tmp/_build.new
+
+
+ curl -L $build_sh_url -o /tmp/_build.new
+ cp /tmp/_build.new _build.sh
+ chmod +x _build.sh
+ rm /tmp/_build.new
+
curl -L $update_bat_url -o /tmp/_updatePublisher.new
cp /tmp/_updatePublisher.new _updatePublisher.bat
rm /tmp/_updatePublisher.new
@@ -129,4 +141,4 @@ if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then
cp /tmp/_updatePublisher.new _updatePublisher.sh
chmod +x _updatePublisher.sh
rm /tmp/_updatePublisher.new
-fi
+fi
\ No newline at end of file
diff --git a/bulk-import-ci.py b/bulk-import-ci.py
index ce7129d8..fe142d84 100644
--- a/bulk-import-ci.py
+++ b/bulk-import-ci.py
@@ -34,6 +34,17 @@
HEADERS = {"Content-Type": "application/json"}
+# Print out more information if an error occurred
+def printErrorAdditionalDetails(e):
+ print(f"{ERROR_RED}*** Additional error details: ***{END_C}")
+ if e.response is not None:
+ print(f"{ERROR_RED}Status Code: {e.response.status_code}{END_C}")
+ print(f"{ERROR_RED}Reason: {e.response.reason}{END_C}")
+ print(f"{ERROR_RED}Response Text: {e.response.text}{END_C}")
+ else:
+ print(f"{ERROR_RED}No additional error information available.{END_C}")
+ print()
+
# Get questionnaire resources from a defined output directory
def getQuestionnairesFromLocalIg():
questionnaires = {}
@@ -99,10 +110,13 @@ def updateRootAndSubquestionnaires(questionnaires, implementationGuide):
print(
f"{ERROR_RED}ERROR: Fail to find {reference} in local files, questionnaire not updated in server. {END_C}"
)
+ printErrorAdditionalDetails(e)
except requests.exceptions.HTTPError as e:
print(f"{ERROR_RED}ERROR: HTTP ERROR THROWN:{END_C}", e, '\n')
+ printErrorAdditionalDetails(e)
except Exception as e:
print(f"{ERROR_RED}ERROR: An error occurred, details:{END_C}", e, '\n')
+ printErrorAdditionalDetails(e)
@@ -126,7 +140,6 @@ def assembleQuestionnaire(questionnaires):
f"{OK_GREEN}POST request Questionnaire/$assemble successful at {formsServerEndpoint}: {response.status_code} OK{END_C}"
)
assembleOutputParams = response.json()
- print(assembleOutputParams)
# Return bare questionnaire
if assembleOutputParams["resourceType"] == "Questionnaire":
@@ -143,6 +156,7 @@ def assembleQuestionnaire(questionnaires):
f"{ERROR_RED}ERROR: Unable to retrieve assembled questionnaire from output parameters{END_C}",
e, '\n'
)
+ printErrorAdditionalDetails(e)
else:
print(
@@ -151,8 +165,10 @@ def assembleQuestionnaire(questionnaires):
except requests.exceptions.HTTPError as e:
print(f"{ERROR_RED}ERROR: HTTP ERROR THROWN:{END_C}",e, '\n')
+ printErrorAdditionalDetails(e)
except Exception as e:
print(f"{ERROR_RED}ERROR: An error occurred, details:", e, '\n')
+ printErrorAdditionalDetails(e)
return None
@@ -183,8 +199,10 @@ def updateAssembledQuestionnaire(questionnaire):
except requests.exceptions.HTTPError as e:
print(f"{ERROR_RED}ERROR: HTTP ERROR THROWN:{END_C}",e, '\n')
+ printErrorAdditionalDetails(e)
except Exception as e:
print(f"{ERROR_RED}ERROR: An error occurred, details:", e, '\n')
+ printErrorAdditionalDetails(e)
# Main function
diff --git a/fsh-generated/includes/fsh-link-references.md b/fsh-generated/includes/fsh-link-references.md
deleted file mode 100644
index 674d8a3e..00000000
--- a/fsh-generated/includes/fsh-link-references.md
+++ /dev/null
@@ -1,53 +0,0 @@
-[AssemblyInstructions]: Questionnaire-AssemblyInstructions.html
-[AboriginalTorresStraitIslanderHealthCheck]: Questionnaire-AboriginalTorresStraitIslanderHealthCheck.html
-[AboutTheHealthCheck]: Questionnaire-AboutTheHealthCheck.html
-[AbsoluteCVDRiskCalculation]: Questionnaire-AbsoluteCVDRiskCalculation.html
-[AllergiesAdverseReactions]: Questionnaire-AllergiesAdverseReactions.html
-[ChronicDiseaseAgeing]: Questionnaire-ChronicDiseaseAgeing.html
-[Consent]: Questionnaire-Consent.html
-[CurrentPriorities]: Questionnaire-CurrentPriorities.html
-[EarHealthAndHearing]: Questionnaire-EarHealthAndHearing.html
-[Examination]: Questionnaire-Examination.html
-[EyeHealth]: Questionnaire-EyeHealth.html
-[FamilyHistory]: Questionnaire-FamilyHistory.html
-[FinalisingHealthCheck]: Questionnaire-FinalisingHealthCheck.html
-[Gambling]: Questionnaire-Gambling.html
-[HealthPrioritiesSummary]: Questionnaire-HealthPrioritiesSummary.html
-[HealthyEating]: Questionnaire-HealthyEating.html
-[HomeAndFamily]: Questionnaire-HomeAndFamily.html
-[Immunisation]: Questionnaire-Immunisation.html
-[Investigations]: Questionnaire-Investigations.html
-[LearningAndDevelopment]: Questionnaire-LearningAndDevelopment.html
-[LearningAndWork]: Questionnaire-LearningAndWork.html
-[MedicalHistoryCurrentProblems]: Questionnaire-MedicalHistoryCurrentProblems.html
-[MemoryAndThinking]: Questionnaire-MemoryAndThinking.html
-[Mood]: Questionnaire-Mood.html
-[OralAndDentalHealth]: Questionnaire-OralAndDentalHealth.html
-[PatientDetails]: Questionnaire-PatientDetails.html
-[RedFlagsEarlyIdentificationGuide]: Questionnaire-RedFlagsEarlyIdentificationGuide.html
-[RegularMedications]: Questionnaire-RegularMedications.html
-[ScreeningPrograms]: Questionnaire-ScreeningPrograms.html
-[SexualHealth]: Questionnaire-SexualHealth.html
-[Skin]: Questionnaire-Skin.html
-[SocialAndEmotionalWellbeing]: Questionnaire-SocialAndEmotionalWellbeing.html
-[SocialHistoryChild]: Questionnaire-SocialHistoryChild.html
-[SubstanceUse]: Questionnaire-SubstanceUse.html
-[AboriginalTorresStraitIslander]: ValueSet-AboriginalTorresStraitIslander.html
-[AustralianStatesAndTerritories]: ValueSet-australian-states-territories-2.html
-[BiologicalSex]: ValueSet-biological-sex-1.html
-[ConditionClinicalStatusCodes]: ValueSet-condition-clinical.html
-[ContainedResourceReference]: StructureDefinition-ContainedResourceReference.html
-[GenderIdentityResponse]: ValueSet-gender-identity-response-1.html
-[MedicalHistory]: ValueSet-MedicalHistory.html
-[PersonalPronouns]: ValueSet-pronouns.html
-[PhysicalActivityAndScreenTime]: Questionnaire-PhysicalActivityAndScreenTime.html
-[PrimaryCarerParentGrandparent]: ValueSet-PrimaryCarerParentGrandparent.html
-[QuestionnaireItemControlExtended]: CodeSystem-QuestionnaireItemControlExtended.html
-[QuestionnaireItemUIControlCodes]: CodeSystem-questionnaire-item-control.html
-[QuestionnaireItemUIControlCodes]: ValueSet-questionnaire-item-control.html
-[SmartFormsApplication]: CapabilityStatement-SmartFormsApplication.html
-[SmartFormsLauncherServerAboriginalTorresStraitIslanderHealthCheck]: CapabilityStatement-SFLauncherServerAboriginalTorresStraitIslanderHealthCheck.html
-[SmartFormsServer]: CapabilityStatement-SmartFormsServer.html
-[YesNo]: ValueSet-YesNo.html
-[YesNoNA]: ValueSet-YesNoNA.html
-[YesNoNotAskedDeclined]: ValueSet-YesNoNotAskedDeclined.html
\ No newline at end of file
diff --git a/fsh-generated/includes/menu.xml b/fsh-generated/includes/menu.xml
deleted file mode 100644
index 199b0a54..00000000
--- a/fsh-generated/includes/menu.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
"
}
]
},
@@ -89,19 +86,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-About",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
- }
- ],
- "linkId": "RecordUpdate-CVDRisk",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there.",
+ "linkId": "Guidance-CVDRisk",
+ "text": "The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator.",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator.
"
+ }
+ ]
+ },
"type": "display"
},
{
- "extension": [
+ "item": [
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "iif(%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists(), %CVDRiskResultValue + ' ( ' + %CVDRiskResultDateFormatted + ' )', 'Not available')"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-latestresult",
+ "text": "Latest available result",
+ "type": "string",
+ "repeats": false,
+ "readOnly": true
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists()"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-newassessmentquestion",
+ "text": "A previous CVD risk result has been found. Do you want to perform a new assessment?",
+ "type": "boolean",
+ "repeats": false
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%NewAssessmentQuestionAnswer = true or %CVDRiskResultValue.empty() or %CVDRiskResultDateFormatted.empty()"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-auscvdriskiaccess",
+ "text": "Do you have access to the Aus CVD Risk-i application from your clinical system?",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
Do you have access to the Aus CVD Risk‑i application from your clinical system?
"
+ }
+ ]
+ },
+ "type": "boolean",
+ "repeats": false
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%AusCVDRiskiAccessAnswer = true"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-auscvdriskiguidance",
+ "text": "Using the Aus CVD Risk-i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above.",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
Using the Aus CVD Risk‑i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above.
The Australian CVD risk calculator on the Aus CVD Risk website should be used. Below is a read only view of a subset of variables that can be used as inputs for the online calculator. The calculated CVD risk result can be entered here.
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
"
}
]
},
@@ -349,7 +345,7 @@
}
],
"linkId": "fe96046a-a202-4c22-ad3e-00419e717185",
- "text": "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time",
+ "text": "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time.",
"type": "display"
},
{
@@ -594,7 +590,7 @@
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
"valueExpression": {
"language": "text/fhirpath",
- "expression": "(%age > 5).intersect(%age <= 12)"
+ "expression": "(%age > 5) and (%age <= 12)"
}
}
],
@@ -636,7 +632,7 @@
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
"
}
]
},
@@ -89,19 +87,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-Exam",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
Document conversation about health eating which could include:
\r\n
\r\n
current diet including food and drinks
\r\n
recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)
\r\n
\r\n
"
}
],
"item": [
@@ -451,7 +447,15 @@
}
],
"linkId": "7a22a4c4-6611-4687-af00-37c80c3f8fc0",
- "text": "Document conversation about health eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)",
+ "text": "Document conversation about healthy eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
\r\n
Document conversation about healthy eating which could include:
\r\n
\r\n
current diet including food and drinks
\r\n
recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)
"
}
]
},
@@ -89,19 +87,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-MedHistory",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
This list includes items from the clinical record. If you wish to enter additional diagnoses, either update the clinical record and repopulate this form or add them to the \"New diagnoses list\" below and later update the clinical record as required.
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
"
}
]
},
@@ -81,13 +78,13 @@
]
},
{
- "linkId": "RecordUpdate-Patient",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
+ "linkId": "patientdetails-writebackinstruction",
+ "text": "This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates.",
"_text": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
+ "valueString": "
This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates.
"
}
]
},
@@ -109,7 +105,7 @@
}
],
"linkId": "0b520b20-98df-4024-b25d-2986f6b96e77",
- "text": "What age group is the child closet to?",
+ "text": "What age group is the child closest to?",
"type": "choice",
"repeats": false,
"answerOption": [
@@ -226,7 +222,7 @@
"valueString": "Does not notice someone new"
},
{
- "valueString": "Does not pay early turn taking games (eg peekaboo, rolling a ball)"
+ "valueString": "Does not play early turn taking games (e.g. peekaboo, rolling a ball)"
}
],
"enableWhen": [
@@ -288,7 +284,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (eg Cuddle doll, build blocks)"
+ "valueString": "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (e.g. cuddle doll, build blocks)"
}
],
"enableWhen": [
@@ -415,7 +411,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "Not starting to babble (eg aahh, oohh)"
+ "valueString": "Not starting to babble (e.g. aahh, oohh)"
}
],
"enableWhen": [
@@ -446,10 +442,10 @@
"repeats": true,
"answerOption": [
{
- "valueString": "Not using gestures (eg pointing, showing, waving)"
+ "valueString": "Not using gestures (e.g. pointing, showing, waving)"
},
{
- "valueString": "Not using two part babble (eg bubu, dada)"
+ "valueString": "Not using two part babble (e.g. bubu, dada)"
}
],
"enableWhen": [
@@ -483,7 +479,7 @@
"valueString": "No babbled phrases that sound like talking"
},
{
- "valueString": "No response to familiar words (eg bottle, daddy)"
+ "valueString": "No response to familiar words (e.g. bottle, daddy)"
}
],
"enableWhen": [
@@ -517,7 +513,7 @@
"valueString": "No clear words"
},
{
- "valueString": "Cannot understand short requests (eg 'Where is the ball?')"
+ "valueString": "Cannot understand short requests (e.g. 'Where is the ball?')"
}
],
"enableWhen": [
@@ -551,7 +547,7 @@
"valueString": "Not learning new words"
},
{
- "valueString": "Not putting words together (eg 'push car')"
+ "valueString": "Not putting words together (e.g. 'push car')"
}
],
"enableWhen": [
@@ -585,7 +581,7 @@
"valueString": "Speech is difficult for familiar people to understand"
},
{
- "valueString": "Not using simple sentences (eg big car go)"
+ "valueString": "Not using simple sentences (e.g. big car go)"
}
],
"enableWhen": [
@@ -619,7 +615,7 @@
"valueString": "Speech difficult to understand"
},
{
- "valueString": "Not able to follow directions with two steps (eg 'Put your bag away and then go play')"
+ "valueString": "Not able to follow directions with two steps (e.g. 'Put your bag away and then go play')"
}
],
"enableWhen": [
@@ -653,7 +649,7 @@
"valueString": "Difficulty telling a parent what is wrong"
},
{
- "valueString": "Not able to answer questions in a simple conversation (eg What's your name? Who is your family?)"
+ "valueString": "Not able to answer questions in a simple conversation (e.g. What's your name? Who is your family?)"
}
],
"enableWhen": [
@@ -863,7 +859,7 @@
"valueString": "Does not attempt everyday care skills (such as feeding or dressing)"
},
{
- "valueString": "Difficulty in manipulating small objects (eg threading beads)"
+ "valueString": "Difficulty in manipulating small objects (e.g. threading beads)"
}
],
"enableWhen": [
@@ -934,7 +930,7 @@
"valueString": "Not independently able to complete everyday routines such as feeding and dressing"
},
{
- "valueString": "Cannot draw simple pictures (eg stick person)"
+ "valueString": "Cannot draw simple pictures (e.g. stick person)"
}
],
"enableWhen": [
@@ -1039,7 +1035,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "No form of independent mobility (eg crawling, commando crawling, bottom shuffle)"
+ "valueString": "No form of independent mobility (e.g. crawling, commando crawling, bottom shuffle)"
},
{
"valueString": "Not pulling to stand independently and holding on for support"
@@ -1278,7 +1274,7 @@
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
\r\n
"
+ }
+ ]
+ },
+ "type": "group",
+ "repeats": false
+ },
{
"extension": [
{
@@ -165,29 +437,9 @@
},
{
"linkId": "874ec8db-95c9-4cc0-95db-e45edaa3cd12",
- "text": "Up to date in the health record?",
+ "text": "Check the health record is up to date",
"type": "boolean",
- "repeats": false,
- "required": true,
- "enableWhen": [
- {
- "question": "6eb59145-ed9a-4184-af83-3506d47e4d4e",
- "operator": "=",
- "answerCoding": {
- "code": "Y",
- "system": "http://terminology.hl7.org/CodeSystem/v2-0136"
- }
- },
- {
- "question": "3a2d27b6-e918-4df5-aca9-b374fcf9faad",
- "operator": "=",
- "answerCoding": {
- "code": "Y",
- "system": "http://terminology.hl7.org/CodeSystem/v2-0136"
- }
- }
- ],
- "enableBehavior": "any"
+ "repeats": false
},
{
"extension": [
@@ -197,10 +449,9 @@
}
],
"linkId": "36290837-ad70-48b2-9c66-31533fec918b",
- "text": "Medication understanding and adherence has been checked with patient",
+ "text": "Check medication understanding and adherence with patient",
"type": "boolean",
"repeats": false,
- "required": true,
"enableWhen": [
{
"question": "6eb59145-ed9a-4184-af83-3506d47e4d4e",
@@ -234,7 +485,7 @@
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
"
}
]
},
@@ -89,19 +85,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-ScreeningPrograms",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
}
]
},
@@ -89,82 +87,97 @@
}
]
},
- {
- "linkId": "RecordUpdate-SubstanceUse",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
- * type = #display
- * enableWhen[+]
- * question = "820f5b73-3539-44d2-8e8f-c485cf443839" // BMI item
- * operator = #>=
- * answerDecimal = 25
-*/
- * item[+]
- * linkId = "RecordUpdate-About"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
* extension[questionnaire-choiceOrientation].valueCode = #horizontal
@@ -144,7 +144,7 @@ Description: "About The Health Check sub-questionnaire for Aboriginal and Torres
* expression = "%QuestionnaireResponseLatestCompleted.entry.resource.authored"
* linkId = "01418489-1ec4-4c3b-b96a-7c14c3e21cfe"
* text = "Date of last completed health check"
- * type = #date
+ * type = #dateTime
* repeats = false
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
@@ -154,11 +154,10 @@ Description: "About The Health Check sub-questionnaire for Aboriginal and Torres
* text = "Date this health check commenced"
* type = #date
* repeats = false
-
* item[+]
* linkId = "MarkComplete-1"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-2" // Section complete item
* operator = #=
* answerBoolean = true
- * item[+]
- * linkId = "RecordUpdate-CVDRisk"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the online Australian CVD risk calculator.
-
The items included in this section are a subset of variables that can be used as inputs for the online calculator.
-
The final CVD risk result can be entered in the item at the bottom of this section.
-
"
+ * text = "The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator."
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator.
"
* type = #display
+ * item[+]
+ * linkId = "dabdc7b4-51db-44a0-9d59-77a88587cbe9"
+ * text = "CVD risk result"
+ * type = #group
+ * repeats = false
+ * item[+]
+ * extension[sdc-questionnaire-initialExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists(), %CVDRiskResultValue + ' ( ' + %CVDRiskResultDateFormatted + ' )', 'Not available')"
+ * linkId = "cvdrisk-latestresult"
+ * text = "Latest available result"
+ * type = #string
+ * repeats = false
+ * readOnly = true
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists()"
+ * linkId = "cvdrisk-newassessmentquestion"
+ * text = "A previous CVD risk result has been found. Do you want to perform a new assessment?"
+ * type = #boolean
+ * repeats = false
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%NewAssessmentQuestionAnswer = true or %CVDRiskResultValue.empty() or %CVDRiskResultDateFormatted.empty()"
+ * linkId = "cvdrisk-auscvdriskiaccess"
+ * text = "Do you have access to the Aus CVD Risk-i application from your clinical system?"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Do you have access to the Aus CVD Risk‑i application from your clinical system?
"
+ * type = #boolean
+ * repeats = false
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%AusCVDRiskiAccessAnswer = true"
+ * linkId = "cvdrisk-auscvdriskiguidance"
+ * text = "Using the Aus CVD Risk-i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above."
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Using the Aus CVD Risk‑i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above.
"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%AusCVDRiskiAccessAnswer = true"
+ * linkId = "cvdrisk-repopulateoverride"
+ * text = "Do you need to manually enter a new CVD risk result instead of repopulating?"
+ * type = #boolean
+ * repeats = false
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%AusCVDRiskiAccessAnswer != true or %RepopulateOverrideAnswer = true"
+ * linkId = "cvdrisk-cvdriskresultgroup"
+ * text = "New CVD risk result"
+ * type = #group
+ * repeats = false
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%AusCVDRiskiAccessAnswer != true"
+ * linkId = "cvdrisk-onlincecalculatorguidance"
+ * text = "Use the online Australian CVD risk calculator - https://www.cvdcheck.org.au/calculator"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
The Australian CVD risk calculator on the Aus CVD Risk website should be used. Below is a read only view of a subset of variables that can be used as inputs for the online calculator. The calculated CVD risk result can be entered here.
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-3" // Section complete item
* operator = #=
* answerBoolean = true
+
+ // Adverse reaction risk summary
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
- * linkId = "8a1d70bf-a68b-4b7b-be73-ba6956fccc78"
- * text = "Up to date in the health record?"
- * type = #boolean
- * repeats = false
- * item[+]
- * linkId = "3e689aeb-69a1-4a9b-93bd-50377511dd9b"
- * text = "Health priorities, actions and follow-up"
- * type = #text
- * repeats = false
+ * linkId = "allergyinstruction"
+ * text = "Adverse reaction risk summary"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
+
Adverse reaction risk summary
+
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-6" // Section complete item
@@ -205,14 +222,15 @@ Description: "Ear Health And Hearing sub-questionnaire for Aboriginal and Torres
* language = #text/fhirpath
* expression = "%age <= 12"
* linkId = "fe96046a-a202-4c22-ad3e-00419e717185"
- * text = "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time"
- * type = #display
+ * text = "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time."
+ * type = #display
+ //Children group
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
* expression = "%age <= 12"
* linkId = "2841915f-c8d2-4edb-8bc7-39b63385a2fb"
- * text = "Otoscopy findings" //children
+ * text = "Otoscopy findings"
* type = #group
* repeats = false
* item[+]
@@ -251,12 +269,13 @@ Description: "Ear Health And Hearing sub-questionnaire for Aboriginal and Torres
* answerOption[+].valueString = "Grommet in eardrum"
* answerOption[+].valueString = "Perforation"
* answerOption[+].valueString = "Red/bulging"
+ //Adolescents group
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
* expression = "%age > 12"
* linkId = "361b3c80-375b-423e-bb61-5732826bc2f0"
- * text = "Otoscopy findings" //adolescents +
+ * text = "Otoscopy findings"
* type = #group
* repeats = false
* item[+]
@@ -287,10 +306,11 @@ Description: "Ear Health And Hearing sub-questionnaire for Aboriginal and Torres
* answerOption[+].valueString = "Retracted"
* answerOption[+].valueString = "Unable to view eardrum"
* answerOption[+].valueString = "Wax"
- * item[+] // this group needs better modelling. The template is ambiguous so not properly represented.
+ // this group needs better modelling. The template is ambiguous so not properly represented.
+ * item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
- * expression = "(%age > 5).intersect(%age <= 12)"
+ * expression = "(%age > 5) and (%age <= 12)"
* linkId = "972afa06-9649-43d9-b8ce-c802f7f27e39"
* text = "Tympanometry"
* type = #group
@@ -311,11 +331,10 @@ Description: "Ear Health And Hearing sub-questionnaire for Aboriginal and Torres
* text = "Health priorities, actions and follow-up"
* type = #text
* repeats = false
-
* item[+]
* linkId = "MarkComplete-6"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-7" // Section complete item
* operator = #=
* answerBoolean = true
- * item[+]
- * linkId = "RecordUpdate-Exam"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
+
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
@@ -154,8 +349,10 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
// Observations table with dates
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control|1.0.0#grid
- * linkId = "53d5d5a6-3198-4bec-92ac-03fe7d77fb68"
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#grid
+ * linkId = "53d5d5a6-3198-4bec-92ac-03fe7d77fb68"
+ * text = "The tabled observations will display the most recent results available from the patient record. New observations may be added."
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
The tabled observations will display the most recent results available from the patient record. New observations may be added.
"
* type = #group
* repeats = false
* item[+]
@@ -167,25 +364,31 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBodyHeight.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
* linkId = "837cd0ce-4a9e-4c8b-8679-007ed961f121"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsBodyHeightValue.exists() and %ObsBodyHeightDateFormatted.exists(), %ObsBodyHeightValue.round(0).toString() + ' cm ( ' + %ObsBodyHeightDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#BodyHeightLengthTemplate"
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
+ * linkId = "obs-lengthheight-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "e73c3643-8898-4ef8-8bc9-b4b3826ab790"
+ * linkId = "obslengthheight-newresult-unit"
* text = "cm"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsBodyHeight.entry.resource.effective"
- * linkId = "b9faf79e-b5f7-443a-9203-67532e3a381f"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-lengthheight-newresult').answer.value.exists(), today())"
+ * linkId = "obs-lengthheight-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -197,25 +400,31 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBodyHeight.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
* linkId = "7035c7e7-ada3-4c6b-9ea8-f39666f5d4ea"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsBodyHeightValue.exists() and %ObsBodyHeightDateFormatted.exists(), %ObsBodyHeightValue.round(0).toString() + ' cm ( ' + %ObsBodyHeightDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#BodyHeightTemplate"
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
+ * linkId = "obs-height-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "387c95f0-8b54-4ad7-992d-8ab26a34fd77"
+ * linkId = "obs-height-newresult-unit"
* text = "cm"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsBodyHeight.entry.resource.effective"
- * linkId = "c666ac96-1e64-40e2-8e0b-7d0187bb3e50"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-height-newresult').answer.value.exists(), today())"
+ * linkId = "obs-height-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -224,25 +433,31 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBodyWeight.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#kg
* linkId = "443bd584-684a-449c-ab6e-9d07da4df9fa"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsBodyWeightValue.exists() and %ObsBodyWeightDateFormatted.exists(), %ObsBodyWeightValue.round(1).toString() + ' kg ( ' + %ObsBodyWeightDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#BodyWeightTemplate"
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#kg
+ * linkId = "obs-weight-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "5ba0d699-bc2a-45d0-8f40-f53cb21dc911"
+ * linkId = "obs-weight-newresult-unit"
* text = "kg"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsBodyWeight.entry.resource.effective"
- * linkId = "92cdc1c7-eb6c-4f6d-9bd9-ae726a0e0d3d"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-weight-newresult').answer.value.exists(), today())"
+ * linkId = "obs-weight-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -250,23 +465,32 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* language = #text/fhirpath
* expression = "%age > 12"
* linkId = "bc209c5e-ed28-48e3-b1a1-55cb7e435d8b"
- * text = "BMI"
+ * text = "BMI (calculated)"
* type = #group
* repeats = false
+ * item[+]
+ * linkId = "2ada6633-03c6-4b05-bc23-18dec84ec150"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsBodyWeightValue.exists() and %ObsBodyHeightValue.exists(), (%ObsBodyWeightValue/((%ObsBodyHeightValue/100).power(2))).round(1).toString() + ' kg/m2', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* description = "BMI calculation"
* language = #text/fhirpath
* expression = "(%weight/((%height/100).power(2))).round(1)"
* extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#kg/m2
- * linkId = "2ada6633-03c6-4b05-bc23-18dec84ec150"
- * text = "Value"
+ * linkId = "obs-bmi-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
+ // BMI is calculated from height and weight, so this field is read-only and cannot be edited directly.
* readOnly = true
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "a709b8ec-9e65-40f0-a781-500cb3e56f3c"
+ * linkId = "obs-bmi-newresult-unit"
* text = "kg/m2"
* type = #display
* item[+]
@@ -278,25 +502,31 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsHeadCircumference.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
* linkId = "7a4a6aac-558e-4bec-86c5-326ae07e37d6"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsHeadCircumferenceValue.exists() and %ObsHeadCircumferenceDateFormatted.exists(), %ObsHeadCircumferenceValue.round(0).toString() + ' cm ( ' + %ObsHeadCircumferenceDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#HeadCircumferenceTemplate"
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
+ * linkId = "obs-headcircumference-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "73937983-65a0-4d40-8600-de7ca3277d5e"
+ * linkId = "obs-headcircumference-newresult-unit"
* text = "cm"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsHeadCircumference.entry.resource.effective"
- * linkId = "b8da15e7-8648-492b-9e82-ad5ab7cad179"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-headcircumference-newresult').answer.value.exists(), today())"
+ * linkId = "obs-headcircumference-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -308,25 +538,30 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsWaistCircumference.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#cm
* linkId = "8df0f5d8-821d-4f71-b3c1-d164616ea2f5"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsWaistCircumferenceValue.exists() and %ObsWaistCircumferenceDateFormatted.exists(), %ObsWaistCircumferenceValue.round(0).toString() + ' cm ( ' + %ObsWaistCircumferenceDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#WaistCircumferenceTemplate"
+ * linkId = "obs-waistcircumference-newresult"
+ * text = "New result"
* type = #decimal
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "19aeb0ab-7494-4bac-8b2d-d7d2527c1f4a"
+ * linkId = "obs-waistcircumference-newresult-unit"
* text = "cm"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsWaistCircumference.entry.resource.effective"
- * linkId = "3eb3b929-e67a-4331-8949-b8447b66a4c7"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-waistcircumference-newresult').answer.value.exists(), today())"
+ * linkId = "obs-waistcircumference-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -335,25 +570,31 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsHeartRate.entry.resource.value.value"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#/min
* linkId = "49029ef0-eaa8-44f8-b26a-177820c82dfd"
- * text = "Value"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsHeartRateValue.exists() and %ObsHeartRateDateFormatted.exists(), %ObsHeartRateValue.round(0).toString() + ' /min ( ' + %ObsHeartRateDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#HeartRateTemplate"
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#/min
+ * linkId = "obs-heartrate-newresult"
+ * text = "New result"
* type = #integer
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "090964b9-be33-438b-8465-2a2a09632fde"
+ * linkId = "obs-heartrate-newresult-unit"
* text = "/min"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsHeartRate.entry.resource.effective"
- * linkId = "feeac08f-2ba6-4048-80a2-10b3f90cf5e3"
- * text = "Date performed"
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-heartrate-newresult').answer.value.exists(), today())"
+ * linkId = "obs-heartrate-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
* item[+]
@@ -361,92 +602,90 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* text = "Heart rhythm"
* type = #group
* repeats = false
+ * item[+]
+ * linkId = "99a8eb6f-a36a-4daf-99d7-27bfde0d4bb1"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsHeartRhythmValue.exists() and %ObsHeartRhythmDateFormatted.exists(), %ObsHeartRhythmValue.display + ' ( ' + %ObsHeartRhythmDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
* item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#HeartRhythmTemplate"
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
- * linkId = "99a8eb6f-a36a-4daf-99d7-27bfde0d4bb1"
- * text = "Value"
+ * linkId = "obs-heartrhythm-newresult"
+ * text = "New result"
* type = #choice
- * repeats = false
- * answerOption[+].valueCoding = $SCT#271636001 "Pulse Regular"
- * answerOption[+].valueCoding = $SCT#61086009 "Pulse Irregular"
+ * repeats = false
+ * answerValueSet = "#heart-rhythm-1"
* item[+]
- * linkId = "eeb56682-0eae-4428-9c37-0e63852026c0"
- * text = "Date performed"
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%resource.repeat(item).where(linkId='obs-heartrhythm-newresult').answer.value.exists(), today())"
+ * linkId = "obs-heartrhythm-newdate"
+ * text = "New result date"
* type = #date
* repeats = false
// Blood pressure observations table with dates
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control|1.0.0#grid
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%age > 12"
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#grid
* linkId = "3639c586-9576-48d3-a52b-e91fd2138581"
- * type = #group
+ * text = "Blood pressure"
+ * extension[+]
+ * url = "https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextHidden"
+ * valueBoolean = true
+ * type = #group
* repeats = false
* item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%age > 12"
* linkId = "705f6d04-acab-4d14-baab-98f9bfc4808e"
* text = "Blood pressure"
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBloodPressure.entry.resource.component.where(code.coding.exists(code='8480-6')).value.value"
+ * linkId = "bp-bp-lastresult"
+ * text = "Last result"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsBloodPressureValue.exists() and %ObsBloodPressureDateFormatted.exists(), %ObsBloodPressureValue + ' mm Hg ( ' + %ObsBloodPressureDateFormatted + ' )', 'Not available')"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-style].valueString = "text-align: left;"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#BloodPressureTemplate"
* extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#mm[Hg]
- * linkId = "e68b660d-cfd2-4b89-957a-c96a4c73a5fd"
+ * linkId = "bp-newbp-systolic"
* text = "Systolic"
* type = #integer
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "197d212d-72cc-4c85-91dc-2f030d384391"
+ * linkId = "bp-newbp-systolic-unit"
* text = "mm Hg"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBloodPressure.entry.resource.component.where(code.coding.exists(code='8462-4')).value.value"
* extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#mm[Hg]
- * linkId = "867b0022-f812-4f80-b287-79686c972b15"
+ * linkId = "bp-newbp-diastolic"
* text = "Diastolic"
* type = #integer
* repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "416ee494-4fa2-4b29-af0b-3d022f686e39"
+ * linkId = "bp-newbp-diastolic-unit"
* text = "mm Hg"
* type = #display
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsBloodPressure.entry.resource.effective"
- * linkId = "a005050c-ed79-46ed-ac14-2fc1496059a5"
+ * expression = "iif(%resource.repeat(item).where(linkId='bp-newbp-systolic').answer.value.exists() or %resource.repeat(item).where(linkId='bp-newbp-diastolic').answer.value.exists(), today())"
+ * linkId = "bp-newbp-date"
* text = "Date performed"
* type = #date
* repeats = false
-/*
- * item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsBloodPressure.entry.resource.select(component[0].value.select(value.toString()) + '/' + component[1].value.select(value.toString()) )"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#mm[Hg]
- * linkId = "15200593-ab79-47ec-babe-4fdcb2327737"
- * text = "Blood pressure"
- * type = #string
- * repeats = false
- * enableWhen[+]
- * question = "e2a16e4d-2765-4b61-b286-82cfc6356b30" // age item which has initial population from variable
- * operator = #>
- * answerInteger = 12
- * item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "eb022a99-7bd0-4635-aaad-04ac0d0334c8"
- * text = "mm Hg"
- * type = #display
-*/
// needs assessment for potentional coded response
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
@@ -501,4 +740,4 @@ Description: "Examination sub-questionnaire for Aboriginal and Torres Strait Isl
* text = "Mark section as complete"
* extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
\r\n\r\n \r\n\r\n\r\n
Mark section as complete
\r\n\r\n
"
* type = #boolean
- * repeats = false
\ No newline at end of file
+ * repeats = false
diff --git a/input/fsh/715-Assessment-EyeHealth.fsh b/input/fsh/715-Assessment-EyeHealth.fsh
index 8b6c689a..e6ad8781 100644
--- a/input/fsh/715-Assessment-EyeHealth.fsh
+++ b/input/fsh/715-Assessment-EyeHealth.fsh
@@ -4,7 +4,7 @@ Alias: $UCUM = http://unitsofmeasure.org
Instance: EyeHealth
InstanceOf: Questionnaire
-Usage: #definition
+Usage: #example
Title: "Aboriginal and Torres Strait Islander Health Check - Eye Health"
Description: "Eye Health sub-questionnaire for Aboriginal and Torres Strait Islander Health Check."
@@ -38,22 +38,39 @@ Description: "Eye Health sub-questionnaire for Aboriginal and Torres Strait Isla
* extension[+]
* url = "description"
* valueString = "The practitioner user that is to be used to pre-populate the form"
+* extension[+]
+ * url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext"
+ * extension[+]
+ * url = "name"
+ * valueCoding = http://hl7.org/fhir/uv/sdc/CodeSystem/launchContext#encounter
+ * extension[+]
+ * url = "type"
+ * valueCode = #Encounter
+ * extension[+]
+ * url = "description"
+ * valueString = "The encounter that is to be used to pre-populate the form"
//assemble context
* extension[+]
* url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext"
* valueString = "age"
+//R5 preadoption extensions
+* extension[+]
+ * url = "http://hl7.org/fhir/5.0/StructureDefinition/extension-Questionnaire.versionAlgorithm[x]"
+ * valueCoding
+ * system = "http://hl7.org/fhir/version-algorithm"
+ * code = #semver
+
* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-render"
* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-modular"
-* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-pop-exp"
* url = "http://www.health.gov.au/assessments/mbs/715/EyeHealth"
* name = "EyeHealth"
* title = "Aboriginal and Torres Strait Islander Health Check - Eye Health"
* status = #draft
* experimental = false
* subjectType[+] = #Patient
-* date = "2022-05-24"
+* date = "2025-03-14"
* jurisdiction.coding = urn:iso:std:iso:3166#AU
* item[+]
@@ -72,13 +89,13 @@ Description: "Eye Health sub-questionnaire for Aboriginal and Torres Strait Isla
* type = #display
* enableWhen[+]
* question = "MarkComplete-8" // Section complete item
- * operator = #=
- * answerBoolean = false
+ * operator = #!=
+ * answerBoolean = true
* item[+] //complete
* extension[questionnaire-itemControl].valueCodeableConcept = https://smartforms.csiro.au/ig/CodeSystem/QuestionnaireItemControlExtended#context-display
* linkId = "CD-complete-8"
* text = "Complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
+ * linkId = "9f6adf74-f240-41a2-a509-d216d5308911"
+ * text = "Document conversation about age-appropriate healthy eating, which could include: current diet; transition to solids; dietary recommendations re fruit and vegetable intake, iron-rich foods, avoiding sugary drinks"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Document conversation about age-appropriate healthy eating, which could include:
current diet
@@ -218,8 +237,6 @@ Description: "Healthy Eating sub-questionnaire for Aboriginal and Torres Strait
dietary recommendations re fruit and vegetable intake, iron-rich foods, avoiding sugary drinks
"
- * linkId = "9f6adf74-f240-41a2-a509-d216d5308911"
- * text = "Document conversation about age-appropriate healthy eating, which could include: current diet; transition to solids; dietary recommendations re fruit and vegetable intake, iron-rich foods, avoiding sugary drinks"
* type = #text
* repeats = false
* item[+]
@@ -231,15 +248,15 @@ Description: "Healthy Eating sub-questionnaire for Aboriginal and Torres Strait
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
* expression = "%age > 5"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
-
Document conversation about health eating which could include:
+ * linkId = "7a22a4c4-6611-4687-af00-37c80c3f8fc0"
+ * text = "Document conversation about healthy eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
+
Document conversation about healthy eating which could include:
current diet including food and drinks
recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)
"
- * linkId = "7a22a4c4-6611-4687-af00-37c80c3f8fc0"
- * text = "Document conversation about health eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)"
* type = #text
* repeats = false
* item[+]
@@ -280,6 +297,6 @@ Description: "Healthy Eating sub-questionnaire for Aboriginal and Torres Strait
* item[+]
* linkId = "MarkComplete-11"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-17" // Section complete item
* operator = #=
* answerBoolean = true
- * item[+]
- * linkId = "RecordUpdate-MedHistory"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
+//Birth history
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
* expression = "%age <= 5"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#wk
- * linkId = "a10a7375-e9d3-4e71-a47a-282e9ba38ec1"
- * text = "Gestation at birth"
- * type = #decimal
+ * linkId = "b9de2b58-55e2-436d-95ab-49600508cdf7"
+ * text = "Birth history"
+ * type = #group
* repeats = false
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "f3899852-36c4-441f-9a7d-544ef1617f08"
- * text = "weeks"
- * type = #display
- * item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%age <= 5"
- * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#kg
- * linkId = "29b6d8ea-23b2-4a69-98d9-899198692de7"
- * text = "Birth weight"
- * type = #decimal
- * repeats = false
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#wk
+ * linkId = "a10a7375-e9d3-4e71-a47a-282e9ba38ec1"
+ * text = "Gestation at birth"
+ * type = #decimal
+ * repeats = false
+ * item[+]
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
+ * linkId = "f3899852-36c4-441f-9a7d-544ef1617f08"
+ * text = "weeks"
+ * type = #display
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
- * linkId = "87cf1ecd-6d1b-4de1-894d-58bd77dcfde1"
- * text = "kg"
- * type = #display
-
- /* Agreed to replace this section with medical history table. Commenting out for now.
- // for infants 0-5
- * item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%age <= 5"
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.code.select(coding.where(system='http://snomed.info/sct').first())"
- * linkId = "033db7b3-80da-43e2-9838-88f3d51e5913"
- * text = "Problems"
- * type = #choice
- * repeats = true
- * answerValueSet = "#MedicalHistoryShortListInfants"
-
- // for Primary School Children 5-12
- * item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "(%age > 5).intersect(%age <= 12)"
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.code.select(coding.where(system='http://snomed.info/sct').first())"
- * linkId = "384ab440-10ed-4ac1-89da-cd7d24f87a95"
- * text = "Problems"
- * type = #choice
- * repeats = true
- * answerValueSet = "#MedicalHistoryShortListPrimarySchool"
-
- // for adolescents 12-24
- * item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "(%age > 12).intersect(%age <= 24)"
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.code.select(coding.where(system='http://snomed.info/sct').first())"
- * linkId = "c24ae0d2-8932-4b87-9b7e-a644b5eb2874"
- * text = "Problems"
- * type = #choice
- * repeats = true
- * answerValueSet = "#MedicalHistoryShortListAdolescents"
-
- // for adults and older >24
- * item[+]
- * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%age > 24"
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.code.select(coding.where(system='http://snomed.info/sct').first())"
- * linkId = "bba27ef5-05c5-4e9c-bc9f-cf42091e99cb"
- * text = "Problems"
- * type = #choice
- * repeats = true
- * answerValueSet = "#MedicalHistoryShortListAdultsAndOlderPeople"
-
-//continue
- * item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.code.select((coding.where(system='http://snomed.info/sct') | coding.where(system!='http://snomed.info/sct').first() | text ).first())"
- * linkId = "736f2a51-e04d-4e7f-aef1-c47f3a1f4e3c"
- * text = "Other relevant medical history, operations, hospital admissions, etc"
- * extension[sdc-questionnaire-shortText].valueString = "Other relevant medical history"
- * type = #open-choice
- * repeats = true
- * answerValueSet = "#MedicalHistory"
- * item[+]
- * linkId = "f00def30-35dd-401a-9a38-12602bd3b8b1"
- * text = "Provide details of identified problems"
- * type = #text
- * repeats = false
-
-*/
-
+ * extension[http://hl7.org/fhir/StructureDefinition/questionnaire-unit].valueCoding = $UCUM#kg
+ * linkId = "29b6d8ea-23b2-4a69-98d9-899198692de7"
+ * text = "Birth weight"
+ * type = #decimal
+ * repeats = false
+ * item[+]
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#unit
+ * linkId = "87cf1ecd-6d1b-4de1-894d-58bd77dcfde1"
+ * text = "kg"
+ * type = #display
+
// table of medical history
+
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#gtable
- * extension[sdc-questionnaire-itemPopulationContext].valueExpression
- * name = "ConditionRepeat"
- * language = #text/fhirpath
- * expression = "%Condition.entry.resource.where(category.coding.exists(code='problem-list-item'))"
- * linkId = "92bd7d05-9b5e-4cf9-900b-703f361dad9d"
- * text = "Medical history and current problems list"
+ * linkId = "medicalhistorysummary"
+ * text = "Medical history summary"
* extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
-
Medical history and current problems list
-
This list includes items from the clinical record. If you wish to enter additional diagnoses, either update the clinical record and repopulate this form or add them to the \"New diagnoses list\" below and later update the clinical record as required.
+
Medical history summary
+
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-22" // Section complete item
@@ -89,7 +106,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#check-box
* linkId = "0b520b20-98df-4024-b25d-2986f6b96e77"
- * text = "What age group is the child closet to?"
+ * text = "What age group is the child closest to?"
* type = #choice
* repeats = false
* answerOption[+].valueString = "6 months"
@@ -135,7 +152,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Does not notice someone new"
- * answerOption[+].valueString = "Does not pay early turn taking games (eg peekaboo, rolling a ball)"
+ * answerOption[+].valueString = "Does not play early turn taking games (e.g. peekaboo, rolling a ball)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -157,7 +174,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* text = "Social Emotional"
* type = #choice
* repeats = true
- * answerOption[+].valueString = "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (eg Cuddle doll, build blocks)"
+ * answerOption[+].valueString = "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (e.g. cuddle doll, build blocks)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -204,7 +221,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* text = "Communication"
* type = #choice
* repeats = true
- * answerOption[+].valueString = "Not starting to babble (eg aahh, oohh)"
+ * answerOption[+].valueString = "Not starting to babble (e.g. aahh, oohh)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -215,8 +232,8 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* text = "Communication"
* type = #choice
* repeats = true
- * answerOption[+].valueString = "Not using gestures (eg pointing, showing, waving)"
- * answerOption[+].valueString = "Not using two part babble (eg bubu, dada)"
+ * answerOption[+].valueString = "Not using gestures (e.g. pointing, showing, waving)"
+ * answerOption[+].valueString = "Not using two part babble (e.g. bubu, dada)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -228,7 +245,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "No babbled phrases that sound like talking"
- * answerOption[+].valueString = "No response to familiar words (eg bottle, daddy)"
+ * answerOption[+].valueString = "No response to familiar words (e.g. bottle, daddy)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -240,7 +257,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "No clear words"
- * answerOption[+].valueString = "Cannot understand short requests (eg 'Where is the ball?')"
+ * answerOption[+].valueString = "Cannot understand short requests (e.g. 'Where is the ball?')"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -252,7 +269,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Not learning new words"
- * answerOption[+].valueString = "Not putting words together (eg 'push car')"
+ * answerOption[+].valueString = "Not putting words together (e.g. 'push car')"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -264,7 +281,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Speech is difficult for familiar people to understand"
- * answerOption[+].valueString = "Not using simple sentences (eg big car go)"
+ * answerOption[+].valueString = "Not using simple sentences (e.g. big car go)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -276,7 +293,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Speech difficult to understand"
- * answerOption[+].valueString = "Not able to follow directions with two steps (eg 'Put your bag away and then go play')"
+ * answerOption[+].valueString = "Not able to follow directions with two steps (e.g. 'Put your bag away and then go play')"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -288,7 +305,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Difficulty telling a parent what is wrong"
- * answerOption[+].valueString = "Not able to answer questions in a simple conversation (eg What's your name? Who is your family?)"
+ * answerOption[+].valueString = "Not able to answer questions in a simple conversation (e.g. What's your name? Who is your family?)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -364,7 +381,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* type = #choice
* repeats = true
* answerOption[+].valueString = "Does not attempt everyday care skills (such as feeding or dressing)"
- * answerOption[+].valueString = "Difficulty in manipulating small objects (eg threading beads)"
+ * answerOption[+].valueString = "Difficulty in manipulating small objects (e.g. threading beads)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -389,7 +406,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* repeats = true
* answerOption[+].valueString = "Concerns from teacher about school readiness"
* answerOption[+].valueString = "Not independently able to complete everyday routines such as feeding and dressing"
- * answerOption[+].valueString = "Cannot draw simple pictures (eg stick person)"
+ * answerOption[+].valueString = "Cannot draw simple pictures (e.g. stick person)"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
* operator = #=
@@ -428,7 +445,7 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* text = "Gross motor"
* type = #choice
* repeats = true
- * answerOption[+].valueString = "No form of independent mobility (eg crawling, commando crawling, bottom shuffle)"
+ * answerOption[+].valueString = "No form of independent mobility (e.g. crawling, commando crawling, bottom shuffle)"
* answerOption[+].valueString = "Not pulling to stand independently and holding on for support"
* enableWhen[+]
* question = "0b520b20-98df-4024-b25d-2986f6b96e77"
@@ -513,6 +530,6 @@ Description: "Red Flags Early Identification Guide For Children sub-questionnair
* item[+]
* linkId = "MarkComplete-22"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
+
"
+* item.item[=].type = #group
+* item.item[=].repeats = false
+
+// Current medications
+* item.item[=].item[0].extension[sdc-questionnaire-itemPopulationContext][+].valueExpression[+].name = "MedicationStatementRepeat"
+* item.item[=].item[=].extension[sdc-questionnaire-itemPopulationContext][=].valueExpression[=].language = #text/fhirpath
+* item.item[=].item[=].extension[sdc-questionnaire-itemPopulationContext][=].valueExpression[=].expression = "%MedicationStatement.entry.resource.ofType(MedicationStatement)"
+* item.item[=].item[=].extension[TemplateExtractExtensionExtended][+].extension[template][+].valueReference = Reference(MedicationStatementPatchTemplate)
+* item.item[=].item[=].extension[TemplateExtractExtensionExtended][=].extension[resourceId][+].valueString = "item.where(linkId='medicationStatementId').answer.value"
+* item.item[=].item[=].extension[TemplateExtractExtensionExtended][=].extension[type][+].valueCode = #MedicationStatement
+* item.item[=].item[=].extension[https://smartforms.csiro.au/ig/StructureDefinition/GroupHideAddItemButton][+].valueBoolean = true
+* item.item[=].item[=].linkId = "regularmedications-summary-current"
+* item.item[=].item[=].text = "Current medications"
+* item.item[=].item[=].text.extension[+].url = "https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextHidden"
+* item.item[=].item[=].text.extension[=].valueBoolean = true
+* item.item[=].item[=].type = #group
+* item.item[=].item[=].repeats = true
+* item.item[=].item[=].item[0].extension[questionnaire-hidden].valueBoolean = true
+* item.item[=].item[=].item[=].extension[sdc-questionnaire-initialExpression][+].valueExpression.language = #text/fhirpath
+* item.item[=].item[=].item[=].extension[sdc-questionnaire-initialExpression][=].valueExpression.expression = "%MedicationStatementRepeat.id"
+* item.item[=].item[=].item[=].linkId = "medicationStatementId"
+* item.item[=].item[=].item[=].type = #string
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension[=].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"
+* item.item[=].item[=].item[=].extension[=].valueExpression[+].language = #text/fhirpath
+/*
+ This expression selects the SNOMED coding from MedicationStatements.
+ In some cases, medication.reference may be a reference to a contained Medication resource or an external Medication resource.
+ %medicationsFromContained and %medicationsFromRef contains a list of contained Medication resources and externally referenced Medication resources respectively.
+
+ Step 1: Check if the medication.reference is a contained resource (starts with '#') and if its ID is in %medicationsFromContained.
+ Step 2: If it is, use the ID to find the corresponding Medication resource in %medicationsFromContained and select its SNOMED coding.
+ Step 3: Otherwise, check if the medication.reference is an external resource (starts with 'Medication/') and if its ID is in %medicationsFromRef.
+ Step 4: If it is, use the ID to find the corresponding Medication resource in %medicationsFromRef and select its SNOMED coding.
+ Step 5: Otherwise, use the SNOMED coding from MedicationStatement.medication (medicationCodeableConcept to be specific).
+*/
+* item.item[=].item[=].item[=].extension[=].valueExpression[=].expression = "iif(%MedicationStatementRepeat.medication.reference.replace('#', '') in %medicationsFromContained.id, %medicationsFromContained.where(id = %MedicationStatementRepeat.medication.reference.replace('#', '')).code.select((coding.where(system='http://snomed.info/sct') | coding.where(system!='http://snomed.info/sct').first() | text ).first()), iif(%MedicationStatementRepeat.medication.reference.replace('Medication/', '') in %medicationsFromRef.id , %medicationsFromRef.where(id = %MedicationStatementRepeat.medication.reference.replace('Medication/', '')).code.select((coding.where(system='http://snomed.info/sct') | coding.where(system!='http://snomed.info/sct').first() | text ).first()) ,%MedicationStatementRepeat.medication.select((coding.where(system='http://snomed.info/sct') | coding.where(system!='http://snomed.info/sct').first() | text ).first())))"
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-medication"
+* item.item[=].item[=].item[=].text = "Medication"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].readOnly = true
+* item.item[=].item[=].item[=].answerValueSet = "#smart-health-checks-medicine-products"
+/*
+* item.item[=].item[=].item[+].extension.url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension.valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-form"
+* item.item[=].item[=].item[=].text = "Form"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/medication-form-1"
+* item.item[=].item[=].item[+].extension.url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension.valueCodeableConcept = $questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-route"
+* item.item[=].item[=].item[=].text = "Route of administration"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/route-of-administration-1"
+* item.item[=].item[=].item[+].linkId = "regularmedications-summary-current-doseamount"
+* item.item[=].item[=].item[=].text = "Dose amount"
+* item.item[=].item[=].item[=].type = #decimal
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].item.extension.url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].item.extension.valueCodeableConcept = $questionnaire-item-control#unit
+* item.item[=].item[=].item[=].item.linkId = "regularmedications-summary-current-doseamount-unit"
+* item.item[=].item[=].item[=].item.type = #choice
+* item.item[=].item[=].item[=].item.answerOption[0].valueCoding = $UCUM#mg "mg"
+* item.item[=].item[=].item[=].item.answerOption[+].valueCoding = $unitsofmeasure#ml "ml"
+* item.item[=].item[=].item[+].extension.url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension.valueCodeableConcept = $questionnaire-item-control#drop-down
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-dosetiming"
+* item.item[=].item[=].item[=].text = "Dose timing"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].answerValueSet = "http://hl7.org/fhir/ValueSet/timing-abbreviation"
+*/
+
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"
+* item.item[=].item[=].item[=].extension[=].valueExpression[+].language = #text/fhirpath
+* item.item[=].item[=].item[=].extension[=].valueExpression[=].expression = "%MedicationStatementRepeat.status"
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-status"
+* item.item[=].item[=].item[=].text = "Status"
+* item.item[=].item[=].item[=].type = #choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].answerValueSet = "#MedicationStatementStatusLimited"
+
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"
+* item.item[=].item[=].item[=].extension[=].valueExpression[+].language = #text/fhirpath
+* item.item[=].item[=].item[=].extension[=].valueExpression[=].expression = "%MedicationStatementRepeat.dosage.text"
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-dosage"
+* item.item[=].item[=].item[=].text = "Dosage"
+* item.item[=].item[=].item[=].type = #text
+* item.item[=].item[=].item[=].repeats = false
+
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension[=].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"
+* item.item[=].item[=].item[=].extension[=].valueExpression[+].language = #text/fhirpath
+* item.item[=].item[=].item[=].extension[=].valueExpression[=].expression = "%MedicationStatementRepeat.reasonCode.select((coding.where(system='http://snomed.info/sct') | coding.where(system!='http://snomed.info/sct').first() | text ).first())"
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-reasoncode"
+* item.item[=].item[=].item[=].text = "Clinical indication"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = true
+* item.item[=].item[=].item[=].readOnly = true
+* item.item[=].item[=].item[=].answerValueSet = "#medication-reason-taken-1"
+
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"
+* item.item[=].item[=].item[=].extension[=].valueExpression[+].language = #text/fhirpath
+* item.item[=].item[=].item[=].extension[=].valueExpression[=].expression = "%MedicationStatementRepeat.note.text"
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-current-comment"
+* item.item[=].item[=].item[=].text = "Comment"
+* item.item[=].item[=].item[=].type = #text
+* item.item[=].item[=].item[=].repeats = false
+
+// New medications
+* item.item[=].item[+].extension[+].url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract"
+* item.item[=].item[=].extension[=].extension.url = "template"
+* item.item[=].item[=].extension[=].extension.valueReference = Reference(MedicationStatementTemplate)
+* item.item[=].item[=].linkId = "regularmedications-summary-new"
+* item.item[=].item[=].text = "New medications"
+* item.item[=].item[=].text.extension[+].url = "https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextHidden"
+* item.item[=].item[=].text.extension[=].valueBoolean = true
+* item.item[=].item[=].type = #group
+* item.item[=].item[=].repeats = true
+* item.item[=].item[=].item[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension[=].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-new-medication"
+* item.item[=].item[=].item[=].text = "Medication"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = false
+* item.item[=].item[=].item[=].answerValueSet = "#smart-health-checks-medicine-products"
+
+* item.item[=].item[=].item[+].linkId = "regularmedications-summary-new-dosage"
+* item.item[=].item[=].item[=].text = "Dosage"
+* item.item[=].item[=].item[=].type = #text
+* item.item[=].item[=].item[=].repeats = false
+
+* item.item[=].item[=].item[+].extension.url = "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
+* item.item[=].item[=].item[=].extension.valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#autocomplete
+* item.item[=].item[=].item[=].linkId = "regularmedications-summary-new-reasoncode"
+* item.item[=].item[=].item[=].text = "Clinical indication"
+* item.item[=].item[=].item[=].type = #open-choice
+* item.item[=].item[=].item[=].repeats = true
+* item.item[=].item[=].item[=].answerValueSet = "#medication-reason-taken-1"
+
+* item.item[=].item[=].item[+].linkId = "regularmedications-summary-new-comment"
+* item.item[=].item[=].item[=].text = "Comment"
+* item.item[=].item[=].item[=].type = #text
+* item.item[=].item[=].item[=].repeats = false
+
+* item.item[+].extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression.language = #text/fhirpath
+* item.item[=].extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression.expression = "%age <= 12"
+* item.item[=].extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
+* item.item[=].extension[questionnaire-choiceOrientation].valueCode = #horizontal
+* item.item[=].linkId = "6eb59145-ed9a-4184-af83-3506d47e4d4e"
+* item.item[=].text = "Does your child take any regular medications (prescribed, over-the-counter, traditional, complementary and alternative)?"
+* item.item[=].extension[sdc-questionnaire-shortText].valueString = "Does your child take any regular medications?"
+* item.item[=].type = #choice
+* item.item[=].repeats = false
+* item.item[=].answerValueSet = "#YesNo"
+* item.item[+].extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression.language = #text/fhirpath
+* item.item[=].extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression.expression = "%age > 12"
+* item.item[=].extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
+* item.item[=].extension[questionnaire-choiceOrientation].valueCode = #horizontal
+* item.item[=].linkId = "3a2d27b6-e918-4df5-aca9-b374fcf9faad"
+* item.item[=].text = "Do you take any regular medications (prescribed, over-the-counter, traditional, complementary and alternative)?"
+* item.item[=].extension[sdc-questionnaire-shortText].valueString = "Do you take any regular medications?"
+* item.item[=].type = #choice
+* item.item[=].repeats = false
+* item.item[=].answerValueSet = "#YesNo"
+
+* item.item[+].linkId = "874ec8db-95c9-4cc0-95db-e45edaa3cd12"
+* item.item[=].text = "Check the health record is up to date"
+* item.item[=].type = #boolean
+* item.item[=].repeats = false
+* item.item[+].linkId = "36290837-ad70-48b2-9c66-31533fec918b"
+* item.item[=].text = "Check medication understanding and adherence with patient"
+* item.item[=].extension[sdc-questionnaire-shortText].valueString = "Understanding and adherence checked"
+* item.item[=].type = #boolean
+* item.item[=].repeats = false
+* item.item[=].enableWhen[+].question = "6eb59145-ed9a-4184-af83-3506d47e4d4e"
+* item.item[=].enableWhen[=].operator = #=
+* item.item[=].enableWhen[=].answerCoding = http://terminology.hl7.org/CodeSystem/v2-0136#Y
+* item.item[=].enableWhen[+].question = "3a2d27b6-e918-4df5-aca9-b374fcf9faad"
+* item.item[=].enableWhen[=].operator = #=
+* item.item[=].enableWhen[=].answerCoding = http://terminology.hl7.org/CodeSystem/v2-0136#Y
+* item.item[=].enableBehavior = #any
+
+* item.item[+].linkId = "aa9ff2ed-bcd2-406d-a9ff-89c201df2605"
+* item.item[=].text = "Health priorities, actions and follow-up"
+* item.item[=].type = #text
+* item.item[=].repeats = false
+
+* item.item[+].linkId = "MarkComplete-23"
+* item.item[=].text = "Mark section as complete"
+* item.item[=].text.extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
\r\n\r\n \r\n\r\n\r\n
Mark section as complete
\r\n\r\n
"
+* item.item[=].type = #boolean
+* item.item[=].repeats = false
diff --git a/input/fsh/715-Assessment-ScreeningPrograms.fsh b/input/fsh/715-Assessment-ScreeningPrograms.fsh
index 611da9d2..5f87582f 100644
--- a/input/fsh/715-Assessment-ScreeningPrograms.fsh
+++ b/input/fsh/715-Assessment-ScreeningPrograms.fsh
@@ -4,7 +4,7 @@ Alias: $UCUM = http://unitsofmeasure.org
Instance: ScreeningPrograms
InstanceOf: Questionnaire
-Usage: #definition
+Usage: #example
Title: "Aboriginal and Torres Strait Islander Health Check - Screening Programs"
Description: "Screening Programs sub-questionnaire for Aboriginal and Torres Strait Islander Health Check."
@@ -36,30 +36,46 @@ Description: "Screening Programs sub-questionnaire for Aboriginal and Torres Str
* extension[+]
* url = "description"
* valueString = "The practitioner user that is to be used to pre-populate the form"
+* extension[+]
+ * url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext"
+ * extension[+]
+ * url = "name"
+ * valueCoding = http://hl7.org/fhir/uv/sdc/CodeSystem/launchContext#encounter
+ * extension[+]
+ * url = "type"
+ * valueCode = #Encounter
+ * extension[+]
+ * url = "description"
+ * valueString = "The encounter that is to be used to pre-populate the form"
//assemble context
* extension[+]
* url = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext"
* valueString = "age"
+//R5 preadoption extensions
+* extension[+]
+ * url = "http://hl7.org/fhir/5.0/StructureDefinition/extension-Questionnaire.versionAlgorithm[x]"
+ * valueCoding
+ * system = "http://hl7.org/fhir/version-algorithm"
+ * code = #semver
+
* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-render"
* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-modular"
-* meta.profile[+] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-pop-exp"
* url = "http://www.health.gov.au/assessments/mbs/715/ScreeningPrograms"
* name = "ScreeningPrograms"
* title = "Aboriginal and Torres Strait Islander Health Check - Screening Programs"
* status = #draft
* experimental = false
* subjectType[+] = #Patient
-* date = "2022-05-24"
+* date = "2025-03-14"
* jurisdiction.coding = urn:iso:std:iso:3166#AU
-// should this group be only for >=74?
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
- * expression = "(%age >= 50).intersect(%age <= 74)"
+ * expression = "(%age >= 50) and (%age <= 74)"
* linkId = "9674ffa0-2ad9-4ca3-80e6-e8bb0670a802"
* text = "Participation in screening programs"
* type = #group
@@ -72,25 +88,18 @@ Description: "Screening Programs sub-questionnaire for Aboriginal and Torres Str
* type = #display
* enableWhen[+]
* question = "MarkComplete-24" // Section complete item
- * operator = #=
- * answerBoolean = false
+ * operator = #!=
+ * answerBoolean = true
* item[+] //complete
* extension[questionnaire-itemControl].valueCodeableConcept = https://smartforms.csiro.au/ig/CodeSystem/QuestionnaireItemControlExtended#context-display
* linkId = "CD-complete-24"
* text = "Complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-24" // Section complete item
* operator = #=
* answerBoolean = true
- * item[+]
- * linkId = "RecordUpdate-ScreeningPrograms"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
// following items require coded answers. Either <|Context values for actions (qualifier value)| or <|Chronic disease monitoring status (finding)|
* item[+]
* linkId = "ed15e82b-803a-4d21-9344-9110b57b2313"
@@ -171,17 +180,15 @@ Description: "Screening Programs sub-questionnaire for Aboriginal and Torres Str
* type = #text
* repeats = false
-
* item[+]
* linkId = "70f82c4b-d1f9-44d5-9903-bd7097799c05"
* text = "Health priorities, actions and follow-up"
* type = #text
* repeats = false
-
* item[+]
* linkId = "MarkComplete-24"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-36" // Section complete item
@@ -125,7 +143,10 @@ Description: "Sexual Health sub-questionnaire for Aboriginal and Torres Strait I
* operator = #=
* answerCoding = http://terminology.hl7.org/CodeSystem/v2-0136#Y
* item[+]
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
+ * extension[sdc-questionnaire-shortText].valueString = "Consider discussing items relevant to age/sex/gender"
+ * linkId = "0fba3972-faa3-4f40-940c-c2f1c9b55329"
+ * text = "Consider discussing as relevant to age/sex/gender: menstruation (including risk of anaemia); current sexual activity; contraception; safe sex practice (eg use of condoms); sexually transmitted infection symptoms and screening; blood-borne virus screening"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Consider discussing as relevant to age/sex/gender:
menstruation (including risk of anaemia)
@@ -136,9 +157,6 @@ Description: "Sexual Health sub-questionnaire for Aboriginal and Torres Strait I
blood-borne virus screening
"
- * extension[sdc-questionnaire-shortText].valueString = "Consider discussing items relevant to age/sex/gender"
- * linkId = "0fba3972-faa3-4f40-940c-c2f1c9b55329"
- * text = "Consider discussing as relevant to age/sex/gender: menstruation (including risk of anaemia); current sexual activity; contraception; safe sex practice (eg use of condoms); sexually transmitted infection symptoms and screening; blood-borne virus screening"
* type = #text
* repeats = false
@@ -153,7 +171,7 @@ Description: "Sexual Health sub-questionnaire for Aboriginal and Torres Strait I
* item[+]
* linkId = "MarkComplete-36"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-29" // Section complete item
* operator = #=
- * answerBoolean = true
- * item[+]
- * linkId = "RecordUpdate-SubstanceUse"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
+ * answerBoolean = true
* item[+]
- * linkId = "515eda6e-973a-4b10-910a-0d4bf4f2efff"
+ * linkId = "substanceuse-smoking"
* text = "Smoking"
* type = #group
* repeats = false
* item[+]
- * extension[sdc-questionnaire-initialExpression].valueExpression
- * language = #text/fhirpath
- * expression = "%ObsTobaccoSmokingStatus.entry.resource.value.coding.where(system='http://snomed.info/sct')"
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
- * linkId = "b639a3a8-f476-4cc8-b5c7-f5d2abb23511"
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#grid
+ * linkId = "substanceuse-smoking-smokingstatus"
* text = "Smoking status"
- * type = #choice
+ * extension[+]
+ * url = "https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextHidden"
+ * valueBoolean = true
+ * type = #group
* repeats = false
- // better as a standard answerValueSet when missing concepts are available or national standard adoption
- * answerOption[+].valueCoding = http://snomed.info/sct#266919005 "Never smoked"
- * answerOption[+].valueCoding = http://snomed.info/sct#77176002 "Smoker"
- * answerOption[+].valueCoding = http://snomed.info/sct#8517006 "Ex-Smoker"
- * answerOption[+].valueCoding = http://snomed.info/sct#16090371000119103 "Environmental exposure to tobacco smoke (home, car, etc)"
- * answerOption[+].valueString = "Wants to quit"
- * answerOption[+].valueString = "Other tobacco use"
+ * item[+]
+ * linkId = "substanceuse-smoking-smokingstatus-group"
+ * text = "Smoking status"
+ * type = #group
+ * repeats = false
+ * item[+]
+ * linkId = "substanceuse-smoking-smokingstatus-group-laststatus"
+ * text = "Last status"
+ * extension[http://hl7.org/fhir/StructureDefinition/cqf-expression].valueExpression
+ * language = #text/fhirpath
+ * expression = "iif(%ObsTobaccoSmokingStatusValue.exists() and %ObsTobaccoSmokingStatusDateFormatted.exists(), %ObsTobaccoSmokingStatusValue.display + ' ( ' + %ObsTobaccoSmokingStatusDateFormatted + ' )', 'Not available')"
+ * type = #display
+ * item[+]
+ * extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract].extension[template].valueReference.reference = "#SmokingStatusTemplate"
+ * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#drop-down
+ * linkId = "b639a3a8-f476-4cc8-b5c7-f5d2abb23511"
+ * text = "New status"
+ * type = #choice
+ * repeats = false
+ * answerValueSet = "#TobaccoUseStatus-1"
+ * item[+]
+ * linkId = "substanceuse-smoking-smokingstatus-group-newdate"
+ * text = "New date"
+ * type = #date
+ * repeats = false
* item[+]
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
* linkId = "96dc7c22-d003-459c-8a56-f6cd182fc077"
@@ -130,9 +183,7 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
* question = "b639a3a8-f476-4cc8-b5c7-f5d2abb23511"
* operator = #=
* answerCoding = http://snomed.info/sct#8517006
- * answerOption[+].valueCoding = http://snomed.info/sct#48031000119106 "Quit >=12 months"
- * answerOption[+].valueCoding = http://snomed.info/sct#735128000 "Quit <12 months"
-
+ * answerValueSet = "#SmokingQuitStatus-1"
* item[+]
* linkId = "9e86387d-1be4-4c26-9047-9dd6b03e1ee0"
* text = "How many?"
@@ -149,7 +200,7 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
* enableWhen[+]
* question = "b639a3a8-f476-4cc8-b5c7-f5d2abb23511"
* operator = #=
- * answerString = "Wants to quit"
+ * answerCoding = http://snomed.info/sct#394872000
* enableBehavior = #any
* item[+]
* linkId = "32e71641-f660-4ca2-af99-dff8917f07be"
@@ -166,7 +217,7 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
* enableWhen[+]
* question = "b639a3a8-f476-4cc8-b5c7-f5d2abb23511"
* operator = #=
- * answerString = "Wants to quit"
+ * answerCoding = http://snomed.info/sct#394872000
* enableBehavior = #any
* item[+]
* linkId = "34feaee8-8088-43ee-991d-9729990b5550"
@@ -174,7 +225,10 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
* type = #group
* repeats = false
* item[+]
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
+ * extension[sdc-questionnaire-shortText].valueString = "Quantity and frequency of substance use"
+ * linkId = "ea73d52c-f831-46be-a45d-2c42250a5210"
+ * text = "Quantity and frequency of: alcohol; caffeine (coffee, soft drinks, iced coffee); cannabis/yarndi/gunja; other substance use: IVDU, methamphetamine, opiates, solvents, other"
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Quantity and frequency of:
alcohol
@@ -183,9 +237,6 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
other substance use: IVDU, methamphetamine, opiates, solvents, other
"
- * extension[sdc-questionnaire-shortText].valueString = "Quantity and frequency of substance use"
- * linkId = "ea73d52c-f831-46be-a45d-2c42250a5210"
- * text = "Quantity and frequency of: alcohol; caffeine (coffee, soft drinks, iced coffee); cannabis/yarndi/gunja; other substance use: IVDU, methamphetamine, opiates, solvents, other"
* type = #text
* repeats = false
* item[+]
@@ -199,11 +250,9 @@ Description: "Substance Use sub-questionnaire for Aboriginal and Torres Strait I
* type = #text
* repeats = false
-
-
* item[+]
* linkId = "MarkComplete-29"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
"
* type = #display
* enableWhen[+]
* question = "MarkComplete-32" // Section complete item
* operator = #=
* answerBoolean = true
* item[+]
- * linkId = "RecordUpdate-Patient"
- * text = "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first."
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
- Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.
-
"
- * type = #display
+ * linkId = "patientdetails-writebackinstruction"
+ * text = "This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates."
+ * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates.
"
+ * type = #display
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -128,25 +143,25 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
- * expression = "%patient.extension.where(url='http://hl7.org/fhir/StructureDefinition/individual-pronouns').extension.where(url='value').value.coding"
+ * expression = "%patient.extension.where(exists(url='http://hl7.org/fhir/StructureDefinition/individual-pronouns') and extension.where(url='period').value.end.empty()).extension.where(url='value').value.coding"
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#drop-down
* linkId = "540b1034-7c9a-4aba-a9ef-afb77d445a58"
* text = "Preferred pronouns"
* type = #choice
* repeats = false
* readOnly = true
- * answerValueSet = "http://terminology.hl7.org/ValueSet/pronouns"
+ * answerValueSet = "#australian-pronouns-1"
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
- * expression = "%patient.extension.where(url='http://hl7.org/fhir/StructureDefinition/patient-genderIdentity').value.coding"
+ * expression = "%patient.extension.where(exists(url='http://hl7.org/fhir/StructureDefinition/individual-genderIdentity') and extension.where(url='period').value.end.empty()).extension.where(url='value').value.coding"
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#drop-down
* linkId = "f669a4fe-4818-429a-8847-d20da88d2bb3"
* text = "Gender identity"
* type = #choice
* repeats = false
* readOnly = true
- * answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/gender-identity-response-1"
+ * answerValueSet = "#gender-identity-response-1"
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -157,20 +172,18 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Administrative gender"
* type = #choice
* repeats = false
- * answerValueSet = "http://hl7.org/fhir/ValueSet/administrative-gender"
+ * answerValueSet = "#administrative-gender"
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
- * expression = "%ObsSex.entry.resource.value.coding"
+ * expression = "%SexAtBirthCoding"
* extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#drop-down
* linkId = "56ef44bb-3d1d-4972-aad1-834b69185d61"
* text = "Sex assigned at birth"
* type = #choice
* repeats = false
* readOnly = true
- * answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/biological-sex-1"
-
-
+ * answerValueSet = "#biological-sex-1"
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -199,7 +212,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* type = #choice
* repeats = false
* readOnly = true
- * answerValueSet[+] = "#AboriginalTorresStraitIslander"
+ * answerValueSet = "#AboriginalTorresStraitIslander"
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
@@ -209,7 +222,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Parents/primary carer/s"
* type = #choice
* repeats = true
- * answerValueSet[+] = "#PrimaryCarerParentGrandparent"
+ * answerValueSet = "#PrimaryCarerParentGrandparent"
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
@@ -258,11 +271,12 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* extension[sdc-questionnaire-itemPopulationContext].valueExpression
* name = "HomeAddressRepeat"
* language = #text/fhirpath
- * expression = "%patient.address.where(use='home' and (type.empty() or type!='postal'))"
+ * expression = "%patient.address.where(all(use='home' and (type.empty() or type!='postal')))"
* linkId = "f1262ade-843c-4eba-a86d-51a9c97d134b"
* text = "Home address"
* type = #group
* repeats = false
+ * readOnly = true
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -275,6 +289,10 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* repeats = false
* item[+]
* linkId = "4e0dc185-f83e-4027-b7a8-ecb543d42c6d"
+ * text = "Home address"
+ * extension[+]
+ * url = "https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextHidden"
+ * valueBoolean = true
* type = #group
* repeats = true
* enableWhen[+]
@@ -308,7 +326,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* definition = "http://hl7.org.au/fhir/StructureDefinition/au-address#Address.state"
* text = "State"
* type = #choice
- * answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/australian-states-territories-2"
+ * answerValueSet = "#australian-states-territories-2"
* repeats = false
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
@@ -370,7 +388,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* definition = "http://hl7.org.au/fhir/StructureDefinition/au-address#Address.state"
* text = "State"
* type = #choice
- * answerValueSet = "https://healthterminologies.gov.au/fhir/ValueSet/australian-states-territories-2"
+ * answerValueSet = "#australian-states-territories-2"
* repeats = false
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
@@ -391,6 +409,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Home phone"
* type = #string
* repeats = true
+ * readOnly = true
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -399,15 +418,21 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Mobile phone"
* type = #string
* repeats = true
+ * readOnly = true
* item[+]
+ * extension[sdc-questionnaire-itemPopulationContext].valueExpression
+ * name = "EmergencyContactRepeat"
+ * language = #text/fhirpath
+ * expression = "%patient.contact.where(relationship.coding.exists(code = 'C'))"
* linkId = "c22390d3-1be6-4fd1-b775-6443b7239a6b"
* text = "Emergency contact"
* type = #group
* repeats = true
+ * readOnly = true
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
- * expression = "%patient.contact.where(relationship.coding.exists(code = 'C')).name.select((family | (given | prefix).join(' ')).join(', ').where($this != '') | text)"
+ * expression = "%EmergencyContactRepeat.name.select((family | (given | prefix).join(' ')).join(', ').where($this != '') | text)"
* linkId = "d7f2dd75-20c8-480f-8c22-71d604ebee8d"
* text = "Name"
* type = #string
@@ -431,7 +456,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
- * expression = "%patient.contact.where(relationship.coding.exists(code = 'C')).telecom.value"
+ * expression = "%EmergencyContactRepeat.telecom.value"
* linkId = "626e3723-6310-4b99-81c1-525676b027c8"
* text = "Phone"
* type = #string
@@ -441,6 +466,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Medicare number"
* type = #group
* repeats = false
+ * readOnly = true
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
* language = #text/fhirpath
@@ -475,6 +501,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Pensioner Card Number"
* type = #string
* repeats = false
+ * readOnly = true
* maxLength = 10
* item[+]
* extension[sdc-questionnaire-initialExpression].valueExpression
@@ -484,15 +511,17 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* text = "Health Care Card Number"
* type = #string
* repeats = false
+ * readOnly = true
* maxLength = 10
* item[+]
- * extension[questionnaire-itemControl].valueCodeableConcept = http://hl7.org/fhir/questionnaire-item-control#radio-button
- * extension[questionnaire-choiceOrientation].valueCode = #horizontal
+ * extension[sdc-questionnaire-initialExpression].valueExpression
+ * language = #text/fhirpath
+ * expression = "%patient.extension.where(url='http://hl7.org.au/fhir/StructureDefinition/closing-the-gap-registration').value"
* linkId = "83814495-3a81-43f4-88df-42186cce516a"
* text = "Registered for Closing the Gap PBS Co-payment Measure (CTG)"
- * type = #choice
+ * type = #boolean
* repeats = false
- * answerValueSet = "#YesNoNA"
+ * readOnly = true
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
@@ -554,7 +583,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* item[+]
* extension[http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression].valueExpression
* language = #text/fhirpath
- * expression = "(%age <= 49).intersect(%age > 12)"
+ * expression = "(%age <= 49) and (%age > 12)"
* linkId = "9bc882bc-e989-4600-9587-8089fb757641"
* text = "Children"
* type = #group
@@ -704,7 +733,7 @@ Description: "Patient Details sub-questionnaire for Aboriginal and Torres Strait
* item[+]
* linkId = "MarkComplete-32"
* text = "Mark section as complete"
- * extension[http://hl7.org/fhir/StructureDefinition/rendering-xhtml].valueString = "
Implement the RESTful behavior according to the FHIR specification.
Support JSON source formats for all interactions.
"
+* rest.documentation = "Smart Forms Launcher Server **SHALL**:
+1. Support the [Smart Health Checks AllergyIntolerance resource profile](StructureDefinition-SHCAllergyIntolerance.html)
+1. Support the [Smart Health Checks AllergyIntolerance Patch resource profile](StructureDefinition-SHCAllergyIntolerancePatch.html)
+1. Support the [Smart Health Checks Condition resource profile](StructureDefinition-SHCCondition.html)
+1. Support the [Smart Health Checks Condition Patch resource profile](StructureDefinition-SHCConditionPatch.html)
+1. Support the [Smart Health Checks Encounter resource profile](StructureDefinition-SHCEncounter.html)
+1. Support the [Smart Health Checks Immunization resource profile](StructureDefinition-SHCImmunization.html)
+1. Support the [Smart Health Checks Medication profile](StructureDefinition-SHCMedication.html)
+1. Support the [Smart Health Checks MedicationStatement profile](StructureDefinition-SHCMedicationStatement.html)
+1. Support the [Smart Health Checks MedicationStatement Patch profile](StructureDefinition-SHCMedicationStatementPatch.html)
+1. Support the [Smart Health Checks Observation resource profiles](profiles-and-extensions.html#observation)
+1. Support the [Smart Health Checks Patient resource profile](StructureDefinition-SHCPatient.html)
+1. Support the [Smart Health Checks Practitioner resource profile](StructureDefinition-SHCPractitioner.html)
+1. Support the [Smart Health Checks QuestionnaireResponse resource profile](StructureDefinition-SHCQuestionnaireResponse.html)
+1. Support the [Smart Health Checks Extract Bundle resource profile](StructureDefinition-SHCExtractBundle.html)
+1. Implement the RESTful behavior according to the FHIR specification
+1. Support JSON source formats for all interactions"
* rest.security.cors = true
* rest.security.cors.extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
@@ -44,41 +50,101 @@ Usage: #definition
* rest.security.service = http://terminology.hl7.org/CodeSystem/restful-security-service#SMART-on-FHIR
* rest.security.service.extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.security.service.extension[0].valueCode = #SHALL
-* rest.security.description = "
The server SHALL support the Condition resource, the AU Core profile and the conformance expectations for the Condition resource.
"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].type = #Immunization
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCImmunization"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The server **SHALL** support the Immunization resource, the Smart Health Checks profile and the conformance expectations for the Immunization resource."
* rest.resource[=].interaction[0].code = #search-type
* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "patient"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
-* rest.resource[=].searchParam[+].name = "clinical-status"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Condition-clinical-status"
+* rest.resource[=].searchParam[+].name = "status"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Immunization-status"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.
+
+The server **SHALL** support both."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+//Medication
+* rest.resource[+].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[0].valueCode = #MAY
+* rest.resource[=].type = #Medication
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedication"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "If an external reference to a Medication resource is used in MedicationStatement, then the server **SHALL** support the Medication resource, the Smart Health Checks profile and the conformance expectations for the Medication resource."
+* rest.resource[=].interaction[0].code = #read
+* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+
+//MedicationStatement
+* rest.resource[+].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[0].valueCode = #SHALL
+* rest.resource[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
+* rest.resource[=].extension[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[=].extension[=].valueCode = #SHALL
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
+* rest.resource[=].extension[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[=].extension[=].valueCode = #MAY
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "_include"
+* rest.resource[=].type = #MedicationStatement
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedicationStatement"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The server **SHALL** support the MedicationStatement resource, the Smart Health Checks profile and the conformance expectations for the MedicationStatement resource.
+
+If a medication in a MedicationStatement resource is represented as an external Medication resource reference, the server **SHALL** support the `_include` parameter for searching this element (`MedicationStatement:medication`)
+"
+* rest.resource[=].interaction[0].code = #search-type
+* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[=].extension[0].valueCode = #SHALL
+* rest.resource[=].interaction[+].code = #patch
+* rest.resource[=].interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[=].extension[0].valueCode = #SHALL
+* rest.resource[=].searchInclude[+] = "MedicationStatement:medication"
+* rest.resource[=].searchParam[+].name = "patient"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both."
+* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+* rest.resource[=].searchParam[+].name = "status"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/medications-status"
+* rest.resource[=].searchParam[=].type = #token
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.
+
+The server **SHALL** support both.
+
+The client **SHALL** support `multipleOr`.
+
+The server **SHALL** support `multipleOr`."
+* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+* rest.resource[=].searchParam[+].name = "_include"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "If a medication in a MedicationStatement resource is represented as an external Medication resource reference, the server **SHALL** support the `_include` parameter for searching this element (`MedicationStatement:medication`).
+
+The client **SHALL** support this method."
+* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].searchParam[=].extension[0].valueCode = #MAY
+
+//Observation
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].extension[=].valueCode = #SHALL
* rest.resource[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
@@ -118,68 +269,116 @@ Usage: #definition
* rest.resource[=].extension[=].extension[=].valueString = "patient"
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "code"
-* rest.resource[=].extension[=].extension[+].url = "required"
-* rest.resource[=].extension[=].extension[=].valueString = "_count"
+/** rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "_count"*/
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "_sort"
+
* rest.resource[=].type = #Observation
-* rest.resource[=].profile = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-observation"
-* rest.resource[=].profile.extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
-* rest.resource[=].profile.extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-smokingstatus"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBloodPressure"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bodyheight"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBodyHeight"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bodyweight"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBodyWeight"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bmi"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPathologyResult"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-headcircum"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeadCircumference"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-waistcircum"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeartRate"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bloodpressure"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeartRhythm"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-heartrate"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCWaistCircumference"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-lipid-result"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCSmokingStatus"
* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
-* rest.resource[=].documentation = "
The server SHALL support the Observation resource, the AU Core profiles listed and the conformance expectations for the Observation resource.
"
+* rest.resource[=].documentation = "The server **SHALL** support the Observation resource, the Smart Health Checks profiles listed and the conformance expectations for the Observation resource."
* rest.resource[=].interaction[0].code = #search-type
* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "patient"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both. "
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "code"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-code"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the code and system values.
+
+The server **SHALL** support both."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
-* rest.resource[=].searchParam[+].name = "_count"
+/** rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The client and server SHALL support search result limiting.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result limiting."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
-* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL*/
* rest.resource[=].searchParam[+].name = "_sort"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client and server SHALL support search result sorting by date and MAY support other values.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result sorting by date and **MAY** support other values."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+//Parameters
+* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[=].valueCode = #SHALL
+* rest.resource[=].type = #Parameters
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCAllergyIntolerancePatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCConditionPatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedicationStatementPatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The server **SHALL** support the Parameters resource, the Smart Health Checks profiles listed and the conformance expectations for the Parameters resource."
+
+//Patient
+* rest.resource[+].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[0].valueCode = #SHALL
+* rest.resource[=].type = #Patient
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPatient"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The server **SHALL** support the Patient resource, Smart Health Checks profile and the conformance expectations for the Patient resource."
+* rest.resource[=].interaction[0].code = #read
+* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+* rest.resource[=].interaction[+].code = #patch
+* rest.resource[=].interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[=].extension[0].valueCode = #SHALL
+
+//Practitioner
+* rest.resource[+].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].extension[0].valueCode = #SHALL
+* rest.resource[=].type = #Practitioner
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPractitioner"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The server **SHALL** support the Practitioner resource, Smart Health Checks profile and the conformance expectations for the Practitioner resource."
+* rest.resource[=].interaction[0].code = #read
+* rest.resource[=].interaction[0].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].interaction[0].extension[0].valueCode = #SHALL
+
+//QuestionnaireResponse
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].extension[=].valueCode = #SHALL
* rest.resource[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
@@ -214,10 +413,10 @@ Usage: #definition
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "status"
* rest.resource[=].type = #QuestionnaireResponse
-* rest.resource[=].profile = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse"
-* rest.resource[=].profile.extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
-* rest.resource[=].profile.extension[0].valueCode = #SHALL
-* rest.resource[=].documentation = "
The server SHALL support the QuestionnaireResponse resource, Structured Data Capture profile and the conformance expectations for the QuestionnaireResponse resource.
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both. "
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "questionnaire"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/QuestionnaireResponse-questionnaire"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
The client and server SHALL support chained search questionnaire.title using the :contains modifier.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both.
+
+The client and server **SHALL** support chained search questionnaire.title using the :contains modifier."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "status"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/QuestionnaireResponse-status"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the code and system values.
+
+The server **SHALL** support both."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The client and server SHALL support search result limiting.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result limiting."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
* rest.resource[=].searchParam[+].name = "_sort"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client and server SHALL support search result sorting by authored and MAY support other values.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result sorting by authored and **MAY** support other values."
* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+* rest.interaction[+].code = #transaction
+* rest.interaction[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.interaction[=].extension[0].valueCode = #SHALL
+* rest.interaction[=].documentation = "The server **SHALL** support the transaction interaction for all resources."
+/*Remove this role
Instance: SmartFormsServer
InstanceOf: CapabilityStatement
Usage: #definition
@@ -274,7 +484,7 @@ Usage: #definition
* description = "This CapabilityStatement describes the capabilities of the Smart Forms Server. The Smart Forms Server provides a definitional repository of resources that a client application can retrieve for use in a Smart Forms context. The capabilities listed include supported FHIR profiles, RESTful operations, and search parameters."
* status = #draft
* experimental = false
-* date = "2023-06-16"
+* date = "2025-04-16"
* publisher = "AEHRC CSIRO"
* kind = #capability
* instantiates[+] = "http://hl7.org/fhir/uv/sdc/CapabilityStatement/sdc-form-manager"
@@ -320,112 +530,242 @@ Usage: #definition
* rest.resource[=].searchParam[+].name = "title"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Questionnaire-title"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client supports search using the :contains modifier.
"
+* rest.resource[=].searchParam[=].documentation = "The client supports search using the :contains modifier."
* rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The server supports search result limiting.
"
+* rest.resource[=].searchParam[=].documentation = "The server supports search result limiting."
* rest.resource[=].searchParam[+].name = "_sort"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The server supports search result sorting by date and MAY support other values.
"
+* rest.resource[=].searchParam[=].documentation = "The server supports search result sorting by date and **MAY** support other values."
* rest.resource[=].operation[0].name = "assemble"
* rest.resource[=].operation[0].definition = "http://hl7.org/fhir/uv/sdc/OperationDefinition/Questionnaire-assemble"
+*/
-
-Instance: SmartFormsApplication
+Instance: SHCAppCapabilityStatement
InstanceOf: CapabilityStatement
Usage: #definition
-* name = "SmartFormsApplication"
-* title = "Smart Forms Application"
-* description = "This CapabilityStatement describes the capabilities of the Smart Forms Application. These capabilities include supported FHIR profiles, RESTful operations, and search parameters. It covers supported tasks such as SMART App launch context, prepopulation and completion of forms."
+* name = "SHCApp"
+* title = "SHC App"
+* description = "This CapabilityStatement describes the capabilities of the SHC App. These capabilities include supported FHIR profiles, RESTful operations, and search parameters. It covers supported tasks such as SMART App launch context, prepopulation, write-back of extracted resources and completion of forms."
* status = #draft
* experimental = false
-* date = "2023-06-16"
+* date = "2025-04-16"
* publisher = "AEHRC CSIRO"
* kind = #capability
* instantiates[+] = "http://hl7.org/fhir/uv/sdc/CapabilityStatement/sdc-form-filler"
-* software.name = "Smart Forms Application"
+* instantiates[+] = "http://hl7.org.au/fhir/core/CapabilityStatement/au-core-requester"
+* software.name = "Smart Health Checks Application"
* fhirVersion = #4.0.1
* format[0] = #json
-* implementationGuide[+] = "http://hl7.org/fhir/smart-app-launch/ImplementationGuide/hl7.fhir.uv.smart-app-launch"
+* patchFormat[0] = #application/fhir+json
+* implementationGuide[+] = "http://hl7.org/fhir/smart-app-launch/ImplementationGuide/hl7.fhir.uv.smart-app-launch|2.2.0"
* rest.mode = #client
-* rest.documentation = "The Smart Forms Application performs interactions to support SMART App Launch, form prepopulation and form filling. The interactions performed for prepopulation are not listed here as they can vary greatly and are defined in the Questionnaire instance."
+* rest.documentation = "The SHC App performs interactions to support SMART App Launch, form prepopulation, write-back of extracted resources and form filling."
* rest.security.cors = true
* rest.security.service = http://terminology.hl7.org/CodeSystem/restful-security-service#SMART-on-FHIR
* rest.security.description = "SMART App Launch supported to allow secure data exchange."
-* rest.resource[+].type = #Patient
-* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Patient"
-* rest.resource[=].supportedProfile = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-patient"
-* rest.resource[=].interaction[0].code = #read
+//AllergyIntolerance
+* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].type = #AllergyIntolerance
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCAllergyIntolerance"
+* rest.resource[=].documentation = "The client supports the AllergyIntolerance resource, the Smart Health Checks profile and the conformance expectations for the AllergyIntolerance resource."
+* rest.resource[=].interaction[0].code = #search-type
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[+].code = #patch
+* rest.resource[=].searchParam[+].name = "patient"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
-* rest.resource[+].type = #Practitioner
-* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Practitioner"
-* rest.resource[=].supportedProfile = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-practitioner"
-* rest.resource[=].interaction[0].code = #read
+The server **SHALL** support both."
+
+//Bundle
+* rest.resource[+].type = #Bundle
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCExtractBundle"
+* rest.resource[=].documentation = "The client supports the Bundle resource, the Smart Health Checks profile listed and the conformance expectations for the Bundle resource."
+//Condition
+* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "category"
+* rest.resource[=].type = #Condition
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCCondition"
+* rest.resource[=].documentation = "The client supports the Condition resource, the Smart Health Checks and the conformance expectations for the Condition resource."
+* rest.resource[=].interaction[0].code = #search-type
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[+].code = #patch
+* rest.resource[=].searchParam[+].name = "patient"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both."
+* rest.resource[=].searchParam[+].name = "category"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Condition-category"
+* rest.resource[=].searchParam[=].type = #token
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.
+
+The server **SHALL** support both."
+
+//Encounter
* rest.resource[+].type = #Encounter
-* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Encounter"
-* rest.resource[=].supportedProfile = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-encounter"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCEncounter"
+* rest.resource[=].documentation = "The client supports the Encounter resource, the Smart Health Checks profile and the conformance expectations for the Encounter resource."
* rest.resource[=].interaction[0].code = #read
+//Immunization
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "patient"
* rest.resource[=].extension[=].extension[+].url = "required"
-* rest.resource[=].extension[=].extension[=].valueString = "clinical-status"
-* rest.resource[=].type = #Condition
-* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Condition"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-condition"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].type = #Immunization
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCImmunization"
+* rest.resource[=].documentation = "The client supports the Immunization resource, the Smart Health Checks profile and the conformance expectations for the Immunization resource."
* rest.resource[=].interaction[0].code = #search-type
-* rest.resource[=].searchParam[0].name = "patient"
-* rest.resource[=].searchParam[0].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
-* rest.resource[=].searchParam[0].type = #reference
-* rest.resource[=].searchParam[0].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
-* rest.resource[=].searchParam[+].name = "clinical-status"
-* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Condition-clinical-status"
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].searchParam[+].name = "patient"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both."
+* rest.resource[=].searchParam[+].name = "status"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Immunization-status"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.
+
+The server **SHALL** support both."
+
+//Medication
+* rest.resource[+].type = #Medication
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedication"
+* rest.resource[=].documentation = "The client supports the Medication resource, the Smart Health Checks profile and the conformance expectations for the Medication resource."
+* rest.resource[=].interaction[0].code = #read
+//MedicationStatement
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "patient"
* rest.resource[=].extension[=].extension[+].url = "required"
-* rest.resource[=].extension[=].extension[=].valueString = "code"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
* rest.resource[=].extension[=].extension[+].url = "required"
-* rest.resource[=].extension[=].extension[=].valueString = "_count"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "status"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "_include"
+* rest.resource[=].type = #MedicationStatement
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedicationStatement"
+* rest.resource[=].documentation = "The client supports the MedicationStatement resource, the Smart Health Checks profile and the conformance expectations for the MedicationStatement resource."
+* rest.resource[=].interaction[0].code = #search-type
+* rest.resource[=].interaction[+].code = #create
+* rest.resource[=].interaction[+].code = #patch
+* rest.resource[=].searchInclude[+] = "MedicationStatement:medication"
+* rest.resource[=].searchParam[+].name = "patient"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both."
+* rest.resource[=].searchParam[+].name = "status"
+* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/medications-status"
+* rest.resource[=].searchParam[=].type = #token
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.
+
+The server **SHALL** support both.
+
+The client **SHALL** support `multipleOr`.
+
+The server **SHALL** support `multipleOr`."
+* rest.resource[=].searchParam[+].name = "_include"
+* rest.resource[=].searchParam[=].type = #reference
+* rest.resource[=].searchParam[=].documentation = "If a medication in a MedicationStatement resource is represented as an external Medication resource reference, the server **SHALL** support the `_include` parameter for searching this element (`MedicationStatement:medication`).
+
+The client **SHALL** support this method."
+
+//Observation
+* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "patient"
+* rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "code"
+/** rest.resource[=].extension[=].extension[+].url = "required"
+* rest.resource[=].extension[=].extension[=].valueString = "_count"*/
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "_sort"
+
* rest.resource[=].type = #Observation
-* rest.resource[=].profile = "http://hl7.org/fhir/StructureDefinition/Observation"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-observation"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-smokingstatus"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bodyheight"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bodyweight"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bmi"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-headcircum"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-waistcircum"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-bloodpressure"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-heartrate"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-lipid-result"
-* rest.resource[=].supportedProfile[+] = "http://hl7.org.au/fhir/core/StructureDefinition/au-core-sexassignedatbirth"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBloodPressure"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBodyHeight"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCBodyWeight"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPathologyResult"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeadCircumference"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeartRate"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCHeartRhythm"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCWaistCircumference"
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCSmokingStatus"
+* rest.resource[=].documentation = "The client supports the Observation resource, the Smart Health Checks profiles listed and the conformance expectations for the Observation resource."
* rest.resource[=].interaction[0].code = #search-type
+* rest.resource[=].interaction[+].code = #create
* rest.resource[=].searchParam[+].name = "patient"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both. "
* rest.resource[=].searchParam[+].name = "code"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/clinical-code"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
-* rest.resource[=].searchParam[+].name = "_count"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the code and system values.
+
+The server **SHALL** support both."
+/** rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The client supports search result limiting.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result limiting."
+* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL*/
* rest.resource[=].searchParam[+].name = "_sort"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client supports search result sorting by date and MAY support other values.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result sorting by date and **MAY** support other values."
+* rest.resource[=].searchParam[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].searchParam[=].extension[0].valueCode = #SHALL
+
+//Parameters
+* rest.resource[+].type = #Parameters
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCAllergyIntolerancePatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCConditionPatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCMedicationStatementPatch"
+* rest.resource[=].supportedProfile[=].extension[0].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
+* rest.resource[=].supportedProfile[=].extension[0].valueCode = #SHALL
+* rest.resource[=].documentation = "The client supports the Parameters resource, the Smart Health Checks profiles listed and the conformance expectations for the Parameters resource."
+
+//Patient
+* rest.resource[+].type = #Patient
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPatient"
+* rest.resource[=].documentation = "The client supports the Patient resource, Smart Health Checks profile and the conformance expectations for the Patient resource."
+* rest.resource[=].interaction[0].code = #read
+* rest.resource[=].interaction[+].code = #patch
+
+//Practitioner
+* rest.resource[+].type = #Practitioner
+* rest.resource[=].supportedProfile[+] = "https://smartforms.csiro.au/ig/StructureDefinition/SHCPractitioner"
+* rest.resource[=].documentation = "The client supports the Practitioner resource, Smart Health Checks profile and the conformance expectations for the Practitioner resource."
+* rest.resource[=].interaction[0].code = #read
+//Questionnaire
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "url"
@@ -445,6 +785,8 @@ Usage: #definition
* rest.resource[=].extension[=].extension[=].valueString = "_sort"
* rest.resource[=].type = #Questionnaire
* rest.resource[=].profile = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire"
+//Add more SDC profiles?
+* rest.resource[=].documentation = "The client supports the Questionnaire resource, Structured Data Capture profile and the conformance expectations for the Questionnaire resource."
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].interaction[+].code = #create
* rest.resource[=].searchParam[+].name = "url"
@@ -456,18 +798,19 @@ Usage: #definition
* rest.resource[=].searchParam[+].name = "title"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Questionnaire-title"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client supports search using the :contains modifier.
"
+* rest.resource[=].searchParam[=].documentation = "The client supports search using the :contains modifier."
* rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The client supports search result sorting by date and MAY support other values.
"
+* rest.resource[=].searchParam[=].documentation = "The client supports search result sorting by date and **MAY** support other values."
* rest.resource[=].operation[+].name = "assemble"
* rest.resource[=].operation[=].definition = "http://hl7.org/fhir/uv/sdc/OperationDefinition/Questionnaire-assemble"
* rest.resource[=].operation[+].name = "populate"
* rest.resource[=].operation[=].definition = "http://hl7.org/fhir/uv/sdc/OperationDefinition/Questionnaire-populate"
+//QuestionnaireResponse
* rest.resource[+].extension[+].url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination"
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "patient"
@@ -494,38 +837,46 @@ Usage: #definition
* rest.resource[=].extension[=].extension[+].url = "required"
* rest.resource[=].extension[=].extension[=].valueString = "status"
* rest.resource[=].type = #QuestionnaireResponse
-* rest.resource[=].profile = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse"
+* rest.resource[=].profile = "https://smartforms.csiro.au/ig/StructureDefinition/SHCQuestionnaireResponse"
+* rest.resource[=].documentation = "The client supports the QuestionnaireResponse resource, Smart Health Checks profile and the conformance expectations for the QuestionnaireResponse resource."
* rest.resource[=].interaction[+].code = #read
* rest.resource[=].interaction[+].code = #search-type
* rest.resource[=].interaction[+].code = #create
* rest.resource[=].interaction[+].code = #update
+* rest.resource[=].versioning = #versioned-update
* rest.resource[=].searchParam[+].name = "patient"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/QuestionnaireResponse-patient"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both. "
* rest.resource[=].searchParam[+].name = "questionnaire"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/QuestionnaireResponse-questionnaire"
* rest.resource[=].searchParam[=].type = #reference
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a id value and MAY provide both the Type and id values. The server SHALL support both.
The client and server SHALL support chained search questionnaire.title using the :contains modifier.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.
+
+The server **SHALL** support both.
+
+The client and server **SHALL** support chained search questionnaire.title using the :contains modifier."
* rest.resource[=].searchParam[+].name = "status"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/QuestionnaireResponse-status"
* rest.resource[=].searchParam[=].type = #token
-* rest.resource[=].searchParam[=].documentation = "
The client SHALL provide at least a code value and MAY provide both the code and system values. The server SHALL support both.
"
+* rest.resource[=].searchParam[=].documentation = "The client **SHALL** provide at least a code value and **MAY** provide both the code and system values.
+
+The server **SHALL** support both."
* rest.resource[=].searchParam[+].name = "_count"
* rest.resource[=].searchParam[=].type = #number
-* rest.resource[=].searchParam[=].documentation = "
The client supports search result limiting.
"
+* rest.resource[=].searchParam[=].documentation = "The client and server **SHALL** support search result limiting."
* rest.resource[=].searchParam[+].name = "_sort"
* rest.resource[=].searchParam[=].type = #string
-* rest.resource[=].searchParam[=].documentation = "
The client supports search result sorting by authored and MAY support other values.
diff --git a/input/pagecontent/general-requirements.md b/input/pagecontent/general-requirements.md
new file mode 100644
index 00000000..40788741
--- /dev/null
+++ b/input/pagecontent/general-requirements.md
@@ -0,0 +1,124 @@
+### General Requirements
+Systems compatible with the Smart Health Checks (SHC) App are required to support healthcare client and provider information conforming to profiles, AND implement the interaction requirements of relevant actor's capability statements defined in this implementation guide.
+
+The requirements of the FHIR standard and [FHIR Conformance Rules](http://hl7.org/fhir/conformance-rules.html) apply, and define the conformance verbs - **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **MAY**.
+
+This page documents how CapabilityStatements declare conformance to the SHC profiles and their FHIR interactions. It also defines the expectations for mandatory and *Must Support* elements. Authorisation to a healthcare client's record is supported using [SMART App Launch v2.2.0 implementation guide](https://hl7.org/fhir/smart-app-launch).
+
+
+### Conformance Artifacts
+The [Artifacts](artifacts.html) page lists the SHC profiles defined for this implementation guide. Core profile [StructureDefinitions]({{site.data.fhir.path}}structuredefinition.html) defines the minimum elements, extensions, vocabularies, and value sets which **SHALL** be present when using the profile. Many profile pages also contain additional guidance.
+
+The profile elements consist of both mandatory and *Must Support* elements. Mandatory elements are elements with a minimum cardinality of 1 (min=1). The base FHIR [*Must Support*]({{site.data.fhir.path}}profiling.html#mustsupport) guidance requires specifications to define the support expected for profile elements labeled *Must Support*. The sections below explain how these elements are displayed and define the rules for interpreting profile elements and sub-elements labeled mandatory and *Must Support* for [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) and [SHC App](ActorDefinition-SHCApp.html).
+
+
+#### Capability Statements
+
+The [capability statement](capability-statements.html) page lists the capability statements that are to be supported by systems implementing the SHC actors in this IG.
+
+### Exchange Format Support
+
+In FHIR, resources are commonly exchanged in multiple formats including JSON and XML. The SHC App is a JavaScript-based app and hence mandates the support of JSON.
+
+### Profile and Interaction Support
+The SHC systems support the SHC *profiles* to represent clinical information and the SHC REST API *interactions* to access that information. Therefore, the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) must implement and support SHC profiles AND interactions to be compatible with the [SHC App](ActorDefinition-SHCApp.html).
+
+#### Profile Support
+Profile support refers to the support of the SHC profiles, such that the system exposes FHIR resources that adhere to the SHC profiles' content model. Specifically, a [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) with SHC profile support:
+* **SHALL** communicate all profile data elements that are mandatory by that profile's StructureDefinition.
+
+#### Interaction Support
+Interaction support refers to a system that supports the SHC REST API interactions. Specifically, a server with SHC Interaction support:
+* **SHALL** implement the REST API behavior according to the FHIR specification, including *read*, *search*, *create* and *patch* interactions as required, and the required search parameters as defined in the [SHC Host FHIR Server CapabilityStatement](CapabilityStatement-SHCHostFHIRServerCapabilityStatement.html#resourcesSummary1).
+* **SHALL** specify the full capability details from the SHC Host FHIR Server CapabilityStatement it claims to implement, including mandatory support for _FHIR transactions_.
+
+### Must Support and Obligations
+
+In the context of SHC, [Obligations](https://hl7.org/fhir/extensions/CodeSystem-obligation.html) defines how an actor ([SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) or [SHC App](ActorDefinition-SHCApp.html)) must “support” a given element. All [*Must Support*]({{site.data.fhir.path}}conformance-rules.html#mustSupport) elements in this IG are accompanied by an explicit obligation, which identifies structured expectations for a given actor. If a *Must Support* element has no obligation for a given actor, that element need not be supported by that actor.
+
+SHC profiles are derived from AU Core profiles, hence any elements flagged as Must Support in AU Core are also Must Support in the SHC profiles of this Implementation Guide. The SHC HOST FHIR Server and SHC App actors derived from AU Core Responder and AU Core Requester respectively, hence the actor obligations are inherited from AU Core as the default obligations in the SHC profiles. Additional obligations constrain and augment these defaults as required, to support the prepopulation and writeback requirements of each actor in this Implementation Guide.
+
+The actor obligations of Must Support elements are specified in the element description of each SHC profile.
+
+#### Obligation Code Definitions
+The Obligation codes are defined in the FHIR Extensions [Obligation Codes ValueSet](https://hl7.org/fhir/extensions/ValueSet-obligation.html). The Obligation codes used within this Implementation Guide are summarised and description of how the data elements are expected to be supported by the actor.
+
+Obligations are specified for each actor in the context of two sets of interactions defined in the [Smart Health Checks Interactions](index.html#smart-health-checks-interactions):
+1. data access for prepopulation of the Health Check; and
+2. writeback of data to the SHC Host FHIR Server.
+
+The figure below illustrates the relationhsip between the SHC and AU Core actors, the default Must Support Obligations inherited from AU Core actors, and the additional Obligations of each SHC actor specified for the Prepopulation and Writeback interactions .
+
+
+
+#### Obligations for SHC Host FHIR Server
+A [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) actor **SHALL** support the data usage expectations specified in the Obligations of the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) actor for each Must Support element.
+
+The [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) actor derives from AU Core Responder actor, hence the Must Support elements in SHC profiles that are derived from AU Core profiles inherit the default `SHALL:populate-if-known` obligation for data access interactions. This requires the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) to populate an element if that element is available. There are a few potential reasons why a *Must Support* element may not be available, for example:
+* a system may not have the capability to collect a data element, therefore is not expected to ever provide a value
+* for a particular patient, a value may not be available for a data element, but in some cases a value is provided
+* a value is available, but the [SHC App](ActorDefinition-SHCApp.html) or its user is not authorized to access the data, therefore the value is not provided.
+
+The SHC profiles may specify additional obligations for the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) actor related to data access for prepopulation and writeback interactions. These include:
+
+Code | Interactions | SHC Host FHIR Server Obligations
+--- | --- | ---
+[SHALL:populate-if-known](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58populate-if-known) | Prepopulation | Indicates the element **SHALL** be populated where a value is known, it is important for prepopulation, however missing data is allowed.
+[SHALL:populate](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58populate) | Prepopulation | Indicates the element **SHALL** be capable of being populated when a value is known and allowed to be shared. It is required for search queries or prepopulation and hence always populated.
+[SHALL:persist](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58persist) | Writeback (create) | Indicates where the element is populated, the value **SHALL** be stored in a persistent store
+[SHALL:process](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58process) | Writeback (patch) | Indicates the element **SHALL** be processed as part of a PATCH interaction, where the element's related parameter value replace the existing stored value.
+
+#### Obligations for SHC App
+The [SHC App](ActorDefinition-SHCApp.html) actor **SHALL** support the data usage expectations specified in the Obligations of the [SHC App](ActorDefinition-SHCApp.html) actor for each Must Support data element. The [SHC App](ActorDefinition-SHCApp.html) actor derives from the AU Core Requester actor, hence the Must Support elements in SHC profiles that are derived from AU Core profiles inherit the default `SHALL:no-error` obligation for data access interactions. This requires the [SHC App](ActorDefinition-SHCApp.html) actor to accept resources containing any valid value for the element without error, including missing data and data absent reason codes and extensions.
+
+The SHC profiles may specify additional obligations for the [SHC App](ActorDefinition-SHCApp.html) actor related to data access for prepopulation and writeback interactions, these may include:
+
+Code | Interactions | SHC App Obligations
+--- | --- | ---
+[SHALL:process](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58process) | Prepopulation | Indicates the element **SHALL** be processed as part of prepopulation.
+[SHALL:populate-if-known](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58populate-if-known) | Writeback (create and patch) | Indicates the element is known and **SHALL** be populated when a value is available from being prepopulated or entered by a user.
+[SHALL:populate](https://hl7.org/fhir/extensions/CodeSystem-obligation.html#obligation-SHALL.58populate) | Writeback (create and patch) | Indicates the element **SHALL** be populated as a value will always be known and allowed to be shared.
+
+#### Must Support - Resource References
+
+Some elements labeled as *Must Support* reference multiple resource types or profiles (e.g., `QuestionnaireResponse.author`). [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) **SHALL** support *at least one* referenced resource or profile for each element listed in the table below. The [SHC App](ActorDefinition-SHCApp.html) **SHALL** support *all* referenced resources or profiles listed in the table below.
+
+For example, when claiming conformance to the SHC QuestionnaireResponse profile:
+
+* [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) **SHALL** be capable of providing a QuestionnaireResponse.author with a valid reference to an AU Core Practitioner profile, an AU Core PractitionerRole profile, an AU Core Patient profile, or any combination of them if the element is available
+* [SHC App](ActorDefinition-SHCApp.html) **SHALL** be capable of processing a QuestionnaireResponse.author with a valid reference to an AU Core Practitioner profile, AU Core PractitionerRole profile, and an AU Core Patient profile.
+
+#### Must Support - Choice of Data Types
+
+Some elements labeled as *Must Support* allow different data types (e.g., `Observation.effective[x]`) for their content. [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) **SHALL** support *at least one* data type for each element listed in the table below. [SHC App](ActorDefinition-SHCApp.html) **SHALL** support *all* data types listed in the table below.
+
+For example, when claiming conformance to the AU Core Diagnostic Result Observation profile:
+
+* [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) **SHALL** be capable of populating `Observation.effectiveDateTime`, `Observation.effectivePeriod`, or both if the element is available.
+* [SHC App](ActorDefinition-SHCApp.html) **SHALL** be capable of processing `Observation.effectiveDateTime` and `Observation.effectivePeriod`
+
+Systems **MAY** support populating and processing other choice elements not listed in the table (such as `Observation.effectiveInstant`), but this is not a requirement.
+
+#### Missing Data
+There are situations when information on a particular data element is missing, and the source system does not know the reason for the absence of data.
+
+##### Optional And Must Support Elements
+If the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) does not have data for an element with a minimum cardinality = 0 (including elements labeled *Must Support*), the data element **SHALL** be omitted from the resource.
+
+##### Required And Must Support Elements
+
+If the [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) does not have data to be included, the reason for the absence has to be specified as follows:
+
+1. For non-coded data elements, use the [DataAbsentReason Extension]({{site.data.fhir.path}}extension-data-absent-reason.html) in the data type.
+2. For coded data elements:
+ - *example*, *preferred*, or *extensible* binding strengths (CodeableConcept datatypes):
+ - if the source systems have text but no coded data, only the text element is used.
+ - if there is neither text nor codes representing actual (i.e., non-exceptional) concepts:
+ - use the appropriate exceptional concept code from the value set if available
+ - use the appropriate concept code from the [DataAbsentReason Value Set]({{site.data.fhir.path}}valueset-data-absent-reason.html) if the value set does not have it.
+ - *required* binding strength (CodeableConcept or code datatypes):
+ - use the appropriate exceptional concept code from the value set
+
+##### Accepting and Processing Must Support Elements With Missing Data
+A [SHC App](ActorDefinition-SHCApp.html) **SHALL** be able to accept resource instances containing data elements asserting missing data without error, *except* when the *Must Support* element has an [SHC App](ActorDefinition-SHCApp.html) obligation of `SHALL:process` and [SHC Host FHIR Server](ActorDefinition-SHCHostFHIRServer.html) obligation of `SHALL:populate`, where the [SHC App](ActorDefinition-SHCApp.html) **MAY** report an error due to not being able to perform the prepropulation process.
+
diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md
index 4f094efb..ff1b1825 100644
--- a/input/pagecontent/index.md
+++ b/input/pagecontent/index.md
@@ -1,18 +1,67 @@
### Introduction
-This implementation guide is provided to support the use of Smart Forms.
+This implementation guide is provided to support the integration of the Smart Health Checks App within a patient management system enabling users to complete health check assessments such as the Aboriginal and Torres Strait Islander Health Check.
-Smart Forms is a FHIR-based solution aimed to demonstrate effective undertaking of health care assessments. It leverages [SMART App Launch](https://build.fhir.org/ig/HL7/smart-app-launch/app-launch.html) and the [Structured Data Capture specification](http://build.fhir.org/ig/HL7/sdc/index.html) to support better clinical outcomes, improved clinical workflow, enhance the usefulness of information in the practice record and improve interoperability of health information.
+The Smart Health Checks App is a FHIR-based client application aimed at demonstrating effective undertaking of healthcare assessments. It leverages [SMART App Launch](https://build.fhir.org/ig/HL7/smart-app-launch/app-launch.html), [Structured Data Capture specification](http://build.fhir.org/ig/HL7/sdc/index.html) and [AU Core](https://hl7.org.au/fhir/core/) to improve clinical workflow, enhance the usefulness of information in the practice record and improve interoperability of health information to support better clinical outcomes.
-See [Reference Implementation](reference-implementation.html).
+The Smart Health Checks App is based on the CSIRO Smart Forms App which was provided as a [Reference Implementation](reference-implementation.html) of using FHIR standards and implementation guides to provide reusable software components that can be applied within Australian healthcare software systems to support uses cases such as national health check assessment forms.
+
+### Smart Health Checks Actors
+The following figure provides an overview of the actors involved in the Smart Health Checks (SHC) solution.
+
+
+
+
+#### SHC App
+
+The SHC App allows a user of the SHC Host to launch the SHC App for filling out a health check form prepopulated with authorized patient health information retrieved from the SHC Host FHIR Server and writeback the collected form data.
+
+The SHC App actor is implemented by the CSIRO Smart Forms App.
+
+#### SHC Host
+
+The SHC Host allows a user to launch the SHC App within an embedded or externally launched web browser to fill out a health check form.
+
+The SHC Host actor is implemented by the patient management system.
+
+#### SHC Host FHIR Server
+
+The SHC Host FHIR Server allows the SHC App to retrieve patient health information and writeback collected health check data.
+
+The SHC Host actor is implemented by the patient management system.
+
+#### SHC Host Authorization Server
+
+The SHC Host Authorization Server allows the SHC App to request authorisation from the user to access patient health information to prepopulate and write back health checks data using the SHC Host FHIR Server.
+
+### Smart Health Checks Interactions
+
+The Smart Health Check App follows a standard set of interactions which are summarised as:
+1. App Launch: The SHC User initiates the SHC Host to launch SHC App with a context of the current user, patient and health check form.
+2. SMART Authorization Configuration: The SHC App uses SHC Host FHIR Server to locate the SHC Host Authorization Server endpoints and capability.
+3. Authorization Request: SHC App redirects to the SHC Host Authorization Server to authorise access to patient health information using the SHC Host FHIR Server. The SHC User may be prompted to permit or deny access to the requested data.
+4. Authorization Callback: The SHC Host redirects back to the SHC App to proceed with the authorised launch of the health check form.
+5. Token Request: SHC App requests an access token and associated launch context, including user, patient and health check form, from the SHC Host Authorization Server.
+6. Prepopulate Health Check: SHC App uses the launch context to use the SHC Host FHIR Server to:
+ 1. read Practitioner;
+ 2. read Patient;
+ 3. read or search QuestionnaireResponse; and
+ 4. various search requests to prepopulate the health check form
+
+
+
+7. Fill and Save Health Check: The user fills out the health check form and saves the form data.
+8. Writeback Questionnaire Response: The health check form data is written back to the SHC Host FHIR Server as a QuestionnaireResponse.
+9. Writeback Extract Transaction: The health check form data extracted from a completed form as FHIR Resources are written back to the SHC Host FHIR Server as transaction Bundle.
+
+
+
+
### Dependencies
-Smart Forms is dependent on:
-- [FHIR R4](http://hl7.org/fhir/R4/)
-- [HL7 Terminology](https://terminology.hl7.org/5.0.0/)
-- [Structured Data Capture](http://build.fhir.org/ig/HL7/sdc/index.html)
-- [AU Base](http://build.fhir.org/ig/hl7au/au-fhir-base/)
-- [AU Core](https://build.fhir.org/ig/hl7au/au-fhir-core/)
+{% include dependency-table.xhtml %}
+
+Smart Forms is also dependent on:
- Terminology published in Australia's [National Clinical Terminology Service](https://www.healthterminologies.gov.au/access-clinical-terminology/access-fhir-terminology-resources/)
In addition, the following FHIR implementation guides are referenced:
@@ -33,14 +82,16 @@ This guide is divided into several pages which are listed at the top of each pag
- [Home](index.html): This page provides the introduction and scope for this guide.
- Guidance
- - [Reference Implementation](reference-implementation.html): This page describes software components of a Smart Forms reference implementation.
- - [Smart Health Check Application Integration](smart-health-check-application-integration.html): This page includes a document that provides an overview of integrating a Practice Management System with the Smart Health Checks Application.
+ - [General Requirements](general-requirements.html): This page documents how CapabilityStatements declare conformance to the SHC profiles and their FHIR interactions. It also defines the expectations for mandatory and *Must Support* elements.
+ - [Smart Health Check Integration](smart-health-check-integration.html): This page provides an overview of the integration requirements to launch the Smart Health Check Application.
+ - [Reference Implementation](reference-implementation.html): This page describes software components that have been developed to demonstrate the Smart Health Checks solution.
+ - [Informative Guidance](informative-guidance.html): This page provides some informative material that implementers may find useful but does not represent normative requirements.
- FHIR Artefacts: These pages provide detailed descriptions and formal definitions for all the FHIR artefacts defined in this guide.
- [Artefact Summary](artifacts.html): This page lists all of the FHIR artefacts defined in this guide.
- [Questionnaires](questionnaires.html): This page lists all of the Questionnaire resources defined in this guide.
- - [Capability Statements](capability-statements.html): This page lists all of the CapabilityStatement resources defined in this guide.
- [Profiles and Extensions](profiles-and-extensions.html): This page lists all of the StructureDefinition resources defined in this guide.
- - [Terminology](terminology.html): This page lists all of the ValueSet, CodeSystem and ConceptMap resources defined in this guide.
+ - [Capability Statements](capability-statements.html): This page lists all of the CapabilityStatement resources defined in this guide.
+ - [Actor Definitions](actor-definitions.html): This page lists all of the ActorDefinition resources defined in this guide.
- [Downloads](downloads.html): This page provides links to downloadable artefacts including the Smart Forms FHIR NPM package.
diff --git a/input/pagecontent/informative-guidance.xml b/input/pagecontent/informative-guidance.xml
new file mode 100644
index 00000000..91da5a05
--- /dev/null
+++ b/input/pagecontent/informative-guidance.xml
@@ -0,0 +1,19 @@
+
+
+
+ Informative Guidance
+
+
+
+ This page provides some additional guidance material that implementers may find useful. It does not contain any formative requirements or recommendations. It is informative only.
+
+
Previous Smart Health Checks Material
+
The following document was produced as part of a previous phase of the Smart Health Checks project. It is provided here for reference only. Current requirements have changed since this document was produced.
+
+
+
+
+
+
+
+
diff --git a/input/pagecontent/profiles-and-extensions.md b/input/pagecontent/profiles-and-extensions.md
index 02cb0242..b284069b 100644
--- a/input/pagecontent/profiles-and-extensions.md
+++ b/input/pagecontent/profiles-and-extensions.md
@@ -1,20 +1,16 @@
-
-
### Profiles
-The profiles used in this guide are defined in [AU Core](https://build.fhir.org/ig/hl7au/au-fhir-core/).
-
-No additional profiles have been defined for this implementation guide.
-
-
-
+The following profiles have been defined for this implementation guide.
-
+{% include sd-list-generator.md %}
+There are additional profiles used in this guide defined in [AU Core](https://build.fhir.org/ig/hl7au/au-fhir-core/).
+
+
### Extensions
diff --git a/input/pagecontent/questionnaires.md b/input/pagecontent/questionnaires.md
index d71e2391..54133963 100644
--- a/input/pagecontent/questionnaires.md
+++ b/input/pagecontent/questionnaires.md
@@ -1,5 +1,3 @@
-
-
### Questionnaires
The following questionnaires have been defined for this implementation guide.
@@ -11,11 +9,3 @@ The following questionnaires have been defined for this implementation guide.
-
-
-
-
-
-
-
-
diff --git a/input/pagecontent/reference-implementation.md b/input/pagecontent/reference-implementation.md
index 5c80531e..b2a98f19 100644
--- a/input/pagecontent/reference-implementation.md
+++ b/input/pagecontent/reference-implementation.md
@@ -12,10 +12,18 @@ The source code and additional information is available at the [Smart Forms GitH
If you are interested in using the rendering engine in your projects, a standalone package is published on NPM as [@aehrc/smart-forms-renderer](https://www.npmjs.com/package/@aehrc/smart-forms-renderer).
+#### Smart Health Checks Application
+
+Try it out here:
+
+An instance of the Smart Forms Application is hosted to act in the role of the Smart Health Checks Application. It serves as a Smart Health Checks Commons Services component.
+
+For more information on this specific instance see the [Smart Health Check Integration](smart-health-check-integration.html) page.
+
#### Smart Forms Server
-Publicly available endpoint here:
+Publicly available endpoint here:
A Questionnaire-hosting Forms Server API that supports the [$assemble](http://hl7.org/fhir/uv/sdc/OperationDefinition-Questionnaire-assemble.html) operation. This API is built on the [HAPI-FHIR Starter Project](https://github.com/hapifhir/hapi-fhir-jpaserver-starter).
diff --git a/input/pagecontent/smart-health-check-application-integration.xml b/input/pagecontent/smart-health-check-application-integration.xml
deleted file mode 100644
index 7cb80906..00000000
--- a/input/pagecontent/smart-health-check-application-integration.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- Smart Health Check Application Integration
-
-
-
-
-
-
-
diff --git a/input/pagecontent/smart-health-check-integration.md b/input/pagecontent/smart-health-check-integration.md
new file mode 100644
index 00000000..6a263fa2
--- /dev/null
+++ b/input/pagecontent/smart-health-check-integration.md
@@ -0,0 +1,163 @@
+This page provides an overview of the integration requirements for a practice management system to launch the Smart Health Checks Application. The requirements outlined are based on a reference architecture that includes separately hosted services to support the Smart Health Check solution. Other deployment architectures are possible but will have additional requirements not covered in this page or implementation guide generally.
+
+### Solution Overview
+
+#### Overview
+
+The Smart Health Checks Application (SHCA) is a standards-based data collection application supporting the Aboriginal and Torres Strait Islander Health Check assessment (henceforth referred to as, Health Check). It allows a Practice Management System (PMS) to support the collection of Health Check data without the need to implement and maintain each Health Check within the PMS itself. The PMS is integrated with the SHCA using HL7 FHIR standards and associated implementation guides as part of implementing the App Launch, Authorization Service and FHIR Server Application Programming Interfaces.
+
+#### Assumptions and Constraints
+
+This solution integration assumes the following:
+1. The PMS is a desktop application deployed on-premise within a primary care organisation’s private network or cloud-based virtual private network.
+1. The PMS user agent will have access to SHCA and associated Ontoserver terminology service and Smart Health Checks Forms Server using public internet.
+1. The PMS Authorization Service will allow secure access from the PMS user agent hosting the SHCA within the private network or public internet when required.
+1. The PMS FHIR Server will allow secure access from the PMS user agent hosting the SHCA within the private network or public internet when required.
+1. The PMS Authorization Service will maintain secure storage of launch context, authorization codes and access tokens as recommended by OAuth 2.0 specifications.
+1. The PMS FHIR Server will maintain storage of FHIR QuestionnaireResponse resources.
+1. The PMS FHIR Server will retrieve (read or search) the supported patient and user data from the PMS data store.
+1. The PMS FHIR Server will save (create) the supported patient data to the PMS data store.
+
+### Logical View
+
+#### High Level Solution Architecture
+
+The high-level architecture of the Smart Health Check solution is shown in the figure below. The solution consists of a PMS integrated with Smart Health Check Common Services. The PMS represents any existing or future PMS, on-premise or cloud-based, provided by any vendor whilst the Smart Health Check Common Services shared by the multiple and various PMS instances. The Smart Health Check Common Services is not limited to a single centralised deployment, it could be deployed within a jurisdiction, regionally or by a vendor as deemed appropriate.
+
+
Smart Forms Launcher Server for the Aboriginal and Torres Strait Islander Health Check Capability Statement
Kind of capability statement: Requirements
FHIR Version: 4.0.1
Supported Formats: SHALL support json
Published by: AEHRC CSIRO
Note to Implementers: FHIR Capabilities
Any FHIR capability may be 'allowed' by the system unless explicitly marked as "SHALL NOT". Some items might be marked as MAY in the Implementation Guide to highlight their potential relevance to the use case.
The summary table lists the resources that are part of this configuration, and for each resource it lists:
The relevant profiles (if any)
The interactions supported by each resource (Read, Search, Update, and Create, are always shown, while VRead, Patch, Delete, History on Instance, or History on Type are only present if at least one of the resources has support for them.
The required, recommended, and some optional search parameters (if any).
The server SHALL correctly track and populate the versionId meta-property on resources and support using e-tags and If-Match header for version integrity in the API.
Documentation
The server SHALL support the QuestionnaireResponse resource, Structured Data Capture profile and the conformance expectations for the QuestionnaireResponse resource.
The server SHALL support the QuestionnaireResponse resource, Structured Data Capture profile and the conformance expectations for the QuestionnaireResponse resource.
Additional FHIR capabilities may be 'allowed' by the system. Only the capabilities relevant to Smart Forms have been included in this capability statement.
The summary table lists the resources that are part of this configuration, and for each resource it lists:
The relevant profiles (if any)
The interactions supported by each resource (Read, Search, Update, and Create, are always shown, while VRead, Patch, Delete, History on Instance, or History on Type are only present if at least one of the resources has support for them.
The required, recommended, and some optional search parameters (if any).
Additional FHIR capabilities may be 'allowed' by the system. Only the capabilities relevant to Smart Forms have been included in this capability statement.
Implements a Subset of the Following Capability Statements:
The summary table lists the resources that are part of this configuration, and for each resource it lists:
The relevant profiles (if any)
The interactions supported by each resource (Read, Search, Update, and Create, are always shown, while VRead, Patch, Delete, History on Instance, or History on Type are only present if at least one of the resources has support for them.
The required, recommended, and some optional search parameters (if any).
The date at which a concept was deprecated. Concepts that are deprecated but not inactive can still be used, but their use is discouraged.
Concepts
This code system http://hl7.org/fhir/questionnaire-item-control defines the following codes:
Lvl
Code
Display
Definition
Deprecated
abstract
Status
Deprecation Date
1
group
UI controls relevant to organizing groups of questions
true
2
list
List
Questions within the group should be listed sequentially
2
table
Vertical Answer Table
Questions within the group are rows in the table with possible answers as columns. Used for 'choice' questions. The questions within a group marked with this controlType SHALL provide an enumerated list of options and SHOULD refer to the same set of options, same value set or same expression. In the case of a 'sparse' table where some options aren't available for some questions, the order of the answers in the table is not defined and some rendering tools may refuse to display the group as a table.
2
htable
Horizontal Answer Table
Questions within the group are columns in the table with possible answers as rows. Used for 'choice' questions. The questions within a group marked with this controlType SHALL provide an enumerated list of options and SHOULD refer to the same set of options, same value set or same expression. In the case of a 'sparse' table where some options aren't available for some questions, the order of the answers in the table is not defined and some rendering tools may refuse to display the group as a table.
2
gtable
Group Table
Questions within the group are columns in the table with each group repetition as a row. Used for single-answer questions.
2
grid
Group Grid
Child items of type='group' within the a 'grid' group are rows, and questions beneath the 'row' groups are organized as columns in the grid. The grid might be fully populated, but could be sparse. Questions may support different data types and/or different answer choices.
2
header
Header
The group is to be continuously visible at the top of the questionnaire
2
footer
Footer
The group is to be continuously visible at the bottom of the questionnaire
2
page
Page
Indicates that the content within the group should appear as a logical "page" when rendering the form, such that all enabled items within the page are displayed at once, but items in subsequent groups are not displayed until the user indicates a desire to move to the 'next' group. (Header and footer items may still be displayed.) This designation may also influence pagination when printing questionnaires. If there are items at the same level as a 'page' group that are listed before the 'page' group, they will be treated as a separate page. Header and footer groups for a questionnaire will be rendered on all pages.
2
tab-container
Tab Container
Indicates that the group represents a collection of tabs. All child items SHALL be of type 'group' and SHALL NOT declare any item controls themselves. Each child group represents one tab within the tab container, where the item.title is the label for the tab.
1
display
UI controls relevant to rendering questionnaire display items
true
2
inline
In-line
Display item is rendered as a paragraph in a sequential position between sibling items (default behavior)
2
prompt
Prompt
Text is displayed immediately below or within the answer-entry area of the containing question item (typically as a guide for what to enter). **Deprecation Note** - Use the [[[http://hl7.org/fhir/StructureDefinition/entryFormat]]] extension instead.
Deprecated
deprecated
2019-10-03
2
unit
Unit
Display item is rendered adjacent (horizontally or vertically) to the answer space for the parent question, typically to indicate a unit of measure. **Deprecation Note** - The display element of the [[[http://hl7.org/fhir/StructureDefinition/questionnaire-unit]]] should be used instead.
Deprecated
deprecated
2022-09-08
2
lower
Lower-bound
Display item is rendered to the left of the set of answer choices or a scaling control for the parent question item to indicate the meaning of the 'lower' bound. E.g. 'Strongly disagree'
2
upper
Upper-bound
Display item is rendered to the right of the set of answer choices or a scaling control for the parent question item to indicate the meaning of the 'upper' bound. E.g. 'Strongly agree'
2
flyover
Fly-over
Display item is temporarily visible over top of an item if the mouse is positioned over top of the text for the containing item
2
help
Help-Button
Display item is rendered in a dialog box or similar control if invoked by pushing a button or some other UI-appropriate action to request 'help' for a question, group or the questionnaire as a whole (depending what the display item is nested within)
2
legal
legal-Button
Display item is rendered in a dialog box or similar control if invoked by pushing a button or some other UI-appropriate action to request 'legal' info for a question, group or the questionnaire as a whole (depending what the display item is nested within)
1
question
UI controls relevant to capturing question data
true
2
autocomplete
Auto-complete
A control which provides a list of potential matches based on text entered into a control. Used for large choice sets where text-matching is an appropriate discovery mechanism.
2
drop-down
Drop down
A control where an item (or multiple items) can be selected from a list that is only displayed when the user is editing the field. This control is best used for small-to-medium sized lists of options that can reasonably be scanned and selected in a drop-down control. If the list of options is managed by ValueSet, the designer should be confident that the set of codes will both be fully available and appropriately sized. For larger lists, the autocomplete control is more appropriate.
2
check-box
Check-box
A control where choices are listed with a box beside them. The box can be toggled to select or de-select a given choice. Multiple selections may be possible. Commonly useful for repeating items of type constrained by answerOption, answerValueset or answerExpression, however can also be used for boolean (if the checkbox is a 3-state control that allows 'unanswered' as a possibility).
2
lookup
Lookup
A control where editing an item spawns a separate dialog box or screen permitting a user to navigate, filter or otherwise discover an appropriate match. Useful for large choice sets where text matching is not an appropriate discovery mechanism. Such screens must generally be tuned for the specific choice list structure.
2
radio-button
Radio Button
A control where choices are listed with a button beside them. The button can be toggled to select or de-select a given choice. Selecting one item deselects all others. Used for non-repeating items with 'closed' answerOption, answerValueset or answerExpression constraints. Can also be used for boolean so long as there is a button for 'unanswered' or it's possible to deselect all items.
2
slider
Slider
A control where an axis is displayed between the high and low values and the control can be visually manipulated to select a value anywhere on the axis.
2
spinner
Spinner
A control where a list of numeric or other ordered values can be scrolled through via arrows.
2
text-box
Text Box
A control where a user can type in their answer freely.
"
}
]
},
@@ -1189,19 +4200,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-About",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
}
]
},
@@ -1803,13 +4782,13 @@
]
},
{
- "linkId": "RecordUpdate-Patient",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
+ "linkId": "patientdetails-writebackinstruction",
+ "text": "This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates.",
"_text": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
+ "valueString": "
This section contains several read only, non-editable items. Updates to these items will need to be done in the patient record. The form can be repopulated to include any updates.
"
}
]
},
@@ -3496,19 +6493,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-MedHistory",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
This list includes items from the clinical record. If you wish to enter additional diagnoses, either update the clinical record and repopulate this form or add them to the \"New diagnoses list\" below and later update the clinical record as required.
\r\n
"
+ "valueString": "
\r\n
Medical history summary
\r\n
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
This section includes a list of existing items from the patient record. Update these items here or update the patient record and repopulate the form. Add new items at the bottom.
"
}
]
},
@@ -6431,19 +9962,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-ScreeningPrograms",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
Document conversation about health eating which could include:
\r\n
\r\n
current diet including food and drinks
\r\n
recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)
\r\n
\r\n
"
}
],
"linkId": "7a22a4c4-6611-4687-af00-37c80c3f8fc0",
- "text": "Document conversation about health eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)",
+ "text": "Document conversation about healthy eating which could include: current diet including food and drinks; recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
\r\n
Document conversation about healthy eating which could include:
\r\n
\r\n
current diet including food and drinks
\r\n
recommendations about fruit and vegetable intake, water as the main drink, avoiding sugary drinks, avoiding highly processed foods (including supermarket-bought and take-away like KFC, Maccas, etc)
"
}
]
},
@@ -7764,7 +11290,7 @@
}
],
"linkId": "0b520b20-98df-4024-b25d-2986f6b96e77",
- "text": "What age group is the child closet to?",
+ "text": "What age group is the child closest to?",
"type": "choice",
"repeats": false,
"answerOption": [
@@ -7892,7 +11418,7 @@
"valueString": "Does not notice someone new"
},
{
- "valueString": "Does not pay early turn taking games (eg peekaboo, rolling a ball)"
+ "valueString": "Does not play early turn taking games (e.g. peekaboo, rolling a ball)"
}
]
},
@@ -7954,7 +11480,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (eg Cuddle doll, build blocks)"
+ "valueString": "When playing with toys tends to bang, drop, or throw them rather than use them for their purpose (e.g. cuddle doll, build blocks)"
}
]
},
@@ -8081,7 +11607,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "Not starting to babble (eg aahh, oohh)"
+ "valueString": "Not starting to babble (e.g. aahh, oohh)"
}
]
},
@@ -8112,10 +11638,10 @@
"repeats": true,
"answerOption": [
{
- "valueString": "Not using gestures (eg pointing, showing, waving)"
+ "valueString": "Not using gestures (e.g. pointing, showing, waving)"
},
{
- "valueString": "Not using two part babble (eg bubu, dada)"
+ "valueString": "Not using two part babble (e.g. bubu, dada)"
}
]
},
@@ -8149,7 +11675,7 @@
"valueString": "No babbled phrases that sound like talking"
},
{
- "valueString": "No response to familiar words (eg bottle, daddy)"
+ "valueString": "No response to familiar words (e.g. bottle, daddy)"
}
]
},
@@ -8183,7 +11709,7 @@
"valueString": "No clear words"
},
{
- "valueString": "Cannot understand short requests (eg 'Where is the ball?')"
+ "valueString": "Cannot understand short requests (e.g. 'Where is the ball?')"
}
]
},
@@ -8217,7 +11743,7 @@
"valueString": "Not learning new words"
},
{
- "valueString": "Not putting words together (eg 'push car')"
+ "valueString": "Not putting words together (e.g. 'push car')"
}
]
},
@@ -8251,7 +11777,7 @@
"valueString": "Speech is difficult for familiar people to understand"
},
{
- "valueString": "Not using simple sentences (eg big car go)"
+ "valueString": "Not using simple sentences (e.g. big car go)"
}
]
},
@@ -8285,7 +11811,7 @@
"valueString": "Speech difficult to understand"
},
{
- "valueString": "Not able to follow directions with two steps (eg 'Put your bag away and then go play')"
+ "valueString": "Not able to follow directions with two steps (e.g. 'Put your bag away and then go play')"
}
]
},
@@ -8319,7 +11845,7 @@
"valueString": "Difficulty telling a parent what is wrong"
},
{
- "valueString": "Not able to answer questions in a simple conversation (eg What's your name? Who is your family?)"
+ "valueString": "Not able to answer questions in a simple conversation (e.g. What's your name? Who is your family?)"
}
]
},
@@ -8529,7 +12055,7 @@
"valueString": "Does not attempt everyday care skills (such as feeding or dressing)"
},
{
- "valueString": "Difficulty in manipulating small objects (eg threading beads)"
+ "valueString": "Difficulty in manipulating small objects (e.g. threading beads)"
}
]
},
@@ -8600,7 +12126,7 @@
"valueString": "Not independently able to complete everyday routines such as feeding and dressing"
},
{
- "valueString": "Cannot draw simple pictures (eg stick person)"
+ "valueString": "Cannot draw simple pictures (e.g. stick person)"
}
]
},
@@ -8705,7 +12231,7 @@
"repeats": true,
"answerOption": [
{
- "valueString": "No form of independent mobility (eg crawling, commando crawling, bottom shuffle)"
+ "valueString": "No form of independent mobility (e.g. crawling, commando crawling, bottom shuffle)"
},
{
"valueString": "Not pulling to stand independently and holding on for support"
@@ -8933,7 +12459,7 @@
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
"
}
]
},
@@ -9032,83 +12550,98 @@
]
},
{
- "linkId": "RecordUpdate-SubstanceUse",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
}
]
},
@@ -10800,7 +14310,7 @@
}
],
"linkId": "fe96046a-a202-4c22-ad3e-00419e717185",
- "text": "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time",
+ "text": "Video otoscopy procedure recommended where possible as it allows for parental education and for images to be saved for tracking over time.",
"type": "display"
},
{
@@ -11041,7 +14551,7 @@
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
"valueExpression": {
"language": "text/fhirpath",
- "expression": "(%age > 5).intersect(%age <= 12)"
+ "expression": "(%age > 5) and (%age <= 12)"
}
}
],
@@ -11079,7 +14589,7 @@
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
"
}
]
},
@@ -11998,19 +15638,6 @@
}
]
},
- {
- "linkId": "RecordUpdate-Exam",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.",
- "_text": {
- "extension": [
- {
- "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
- "valueString": "
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
- }
- ]
- },
- "type": "display"
- },
{
"extension": [
{
@@ -12033,7 +15660,6 @@
"coding": [
{
"system": "http://hl7.org/fhir/questionnaire-item-control",
- "version": "1.0.0",
"code": "grid"
}
]
@@ -12041,6 +15667,15 @@
}
],
"linkId": "53d5d5a6-3198-4bec-92ac-03fe7d77fb68",
+ "text": "The tabled observations will display the most recent results available from the patient record. New observations may be added.",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
The tabled observations will display the most recent results available from the patient record. New observations may be added.
\r\n Important:The patient record may not be updated with information entered here. Information intended for the patient record should be entered there first.\r\n
"
- }
- ],
- "linkId": "RecordUpdate-CVDRisk",
- "text": "Important: The patient record may not be updated with information entered here. Information intended for the patient record should be entered there.",
- "type": "display"
- },
- {
- "extension": [
+ "linkId": "Guidance-CVDRisk",
+ "text": "The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator.",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
The Australian guideline for assessing and managing cardiovascular disease risk recommends the use of the Aus CVD Risk calculator.
"
+ }
+ ]
+ },
+ "type": "display"
+ },
+ {
+ "linkId": "dabdc7b4-51db-44a0-9d59-77a88587cbe9",
+ "text": "CVD risk result",
+ "type": "group",
+ "repeats": false,
+ "item": [
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "iif(%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists(), %CVDRiskResultValue + ' ( ' + %CVDRiskResultDateFormatted + ' )', 'Not available')"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-latestresult",
+ "text": "Latest available result",
+ "type": "string",
+ "repeats": false,
+ "readOnly": true
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%CVDRiskResultValue.exists() and %CVDRiskResultDateFormatted.exists()"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-newassessmentquestion",
+ "text": "A previous CVD risk result has been found. Do you want to perform a new assessment?",
+ "type": "boolean",
+ "repeats": false
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%NewAssessmentQuestionAnswer = true or %CVDRiskResultValue.empty() or %CVDRiskResultDateFormatted.empty()"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-auscvdriskiaccess",
+ "text": "Do you have access to the Aus CVD Risk-i application from your clinical system?",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
Do you have access to the Aus CVD Risk‑i application from your clinical system?
"
+ }
+ ]
+ },
+ "type": "boolean",
+ "repeats": false
+ },
+ {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
+ "valueExpression": {
+ "language": "text/fhirpath",
+ "expression": "%AusCVDRiskiAccessAnswer = true"
+ }
+ }
+ ],
+ "linkId": "cvdrisk-auscvdriskiguidance",
+ "text": "Using the Aus CVD Risk-i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above.",
+ "_text": {
+ "extension": [
+ {
+ "url": "http://hl7.org/fhir/StructureDefinition/rendering-xhtml",
+ "valueString": "
Using the Aus CVD Risk‑i application, calculate the CVD risk result and save it to the patient record. This form can then be repopulated to retrieve and include the result above.
The Australian CVD risk calculator on the Aus CVD Risk website should be used. Below is a read only view of a subset of variables that can be used as inputs for the online calculator. The calculated CVD risk result can be entered here.