diff --git a/1-ClickServer/1-ReinstallR4.cmd b/1-ClickServer/1-ReinstallR4.cmd
deleted file mode 100644
index b74eef8ed..000000000
--- a/1-ClickServer/1-ReinstallR4.cmd
+++ /dev/null
@@ -1,4 +0,0 @@
-if not exist fhirR4.db copy fhirRx_empty.db fhirR4.db
-cd server
-FHIRServer.exe -cmd remount -password sa -ini ".\fhirserver.ini" -packages hl7.fhir.core#4.0.0 -endpoint r4 -mode open
-cd ..
diff --git a/1-ClickServer/2-RunServer.cmd b/1-ClickServer/2-RunServer.cmd
deleted file mode 100644
index 47b6c0b76..000000000
--- a/1-ClickServer/2-RunServer.cmd
+++ /dev/null
@@ -1,3 +0,0 @@
-cd server
-FHIRServer.exe -cmd exec -debug -ini ".\fhirserver.ini"
-cd ..
diff --git a/1-ClickServer/filelist.txt b/1-ClickServer/filelist.txt
deleted file mode 100644
index e616f8487..000000000
--- a/1-ClickServer/filelist.txt
+++ /dev/null
@@ -1,224 +0,0 @@
-1-ReinstallR4.cmd *
-2-RunServer.cmd *
-\server\auth.ini
-\server\ChakraCore.dll
-\server\FastMM_FullDebugMode64.dll
-\server\fhir.ini
-\server\fhirR4.db *
-\server\fhirRx_empty.db *
-\server\FHIRServer.exe
-\server\fhirserver.ini *
-\server\fhirserver_orig.ini
-\server\FHIRServerUtils.exe
-\server\fhirtests3.exe
-\server\getData.cmd
-\server\javaStart.bat
-\server\libeay32.dll
-\server\libmysql.dll
-\server\LOINC_short_license.txt
-\server\openssl.dll
-\server\org.hl7.fhir.validator.jar
-\server\sqlite3.dll
-\server\ssleay32.dll
-\server\ucum-essence.xml
-\server\unins000.exe
-\server\org.hl7.fhir.validator.jar
-\server\Libraries
-\server\Libraries\js
-\server\Libraries\js\AdvJavascript.pas
-\server\Libraries\js\chakra
-\server\Libraries\js\chakra\x64_release
-\server\Libraries\js\chakra\x64_release\ChakraCore.dll
-\server\Libraries\js\chakra\x86_release
-\server\Libraries\js\chakra\x86_release\ChakraCore.dll
-\server\Libraries\js\ChakraCommon.pas
-\server\Libraries\js\FHIRClientJs.pas
-\server\Libraries\js\FHIRJavascript.pas
-\server\Libraries\js\FHIRJavascriptTests.pas
-\server\Libraries\js\Javascript.pas
-\server\Libraries\js\JavascriptTests.pas
-\server\load
-\server\load\fhir.json.zip
-\server\load\fhir.min.json.zip
-\server\load\load.ini
-\server\load\loadmin.ini
-\server\load\us-core.json.zip
-\server\load\us-daf.json.zip
-\server\load\us-sdc.json.zip
-\server\load\us-sdcde.json.zip
-\server\loinc
-\server\loinc\loinc_266.cache
-\server\sql
-\server\sql\country-codes - Copy.sql
-\server\sql\country-codes.sql
-\server\sql\lang.txt
-\server\sql\ncimeta_import.sql
-\server\sql\nucc.xml
-\server\sql\remove resource of type.sql
-\server\sql\rxnorm_import.sql
-\server\sql\tslc.xml
-\server\sql\tx_db.sql
-\server\sql\us-state-codes.sql
-\server\tx
-\server\web
-\server\web\AnnotationStripper.xslt
-\server\web\CategorizeWarnings.xslt
-\server\web\definitions.json
-\server\web\definitions.json.zip
-\server\web\definitions.xml.zip
-\server\web\definitions1.zip
-\server\web\diagnostics.html
-\server\web\DocumentToHTML.xslt
-\server\web\examples.zip
-\server\web\facebook.png
-\server\web\favicon.png
-\server\web\fhir.css
-\server\web\fitbit-start.html
-\server\web\homepage.html
-\server\web\html-form-add.png
-\server\web\html-form-delete.png
-\server\web\icon-fhir-16.png
-\server\web\local.html
-\server\web\logout.png
-\server\web\oauth_choice.html
-\server\web\oauth_login.html
-\server\web\oauth_skype.html
-\server\web\oauth_userdetails.html
-\server\web\OwnerResources.xslt
-\server\web\patient.html
-\server\web\QuestionnaireToHTML.xslt
-\server\web\RenderWarnings.xslt
-\server\web\robots.txt
-\server\web\scimuser.html
-\server\web\scimusers.html
-\server\web\sct-choice.html
-\server\web\svrl_to_html.xslt
-\server\web\tx-cm-id.html
-\server\web\tx-cs-id.html
-\server\web\txform.html
-\server\web\txhome.html
-\server\web\tx-vs.html
-\server\web\tx-vs-id.html
-\server\web\validator.zip
-\server\web\WarningsToQA.xslt
-\server\web\iso_schematron_skeleton_for_saxon.xsl
-\server\web\iso_schematron_skeleton_for_xslt1.xsl
-\server\web\iso_svrl_for_xslt1.xsl
-\server\web\iso_svrl_for_xslt2.xsl
-\server\web\iso_svrl_for_xslt3.xsl
-\server\web\assets
-\server\web\assets\css
-\server\web\assets\css\bootstrap-fhir.css
-\server\web\assets\css\bootstrap-glyphicons.css
-\server\web\assets\css\modules.css
-\server\web\assets\css\project.css
-\server\web\assets\css\pygments-manni.css
-\server\web\assets\css\xml.css
-\server\web\assets\fonts
-\server\web\assets\fonts\glyphiconshalflings-regular.eot
-\server\web\assets\fonts\glyphiconshalflings-regular.otf
-\server\web\assets\fonts\glyphiconshalflings-regular.svg
-\server\web\assets\fonts\glyphiconshalflings-regular.ttf
-\server\web\assets\fonts\glyphiconshalflings-regular.woff
-\server\web\assets\ico
-\server\web\assets\ico\apple-touch-icon-114-precomposed.png
-\server\web\assets\ico\apple-touch-icon-144-precomposed.png
-\server\web\assets\ico\apple-touch-icon-57-precomposed.png
-\server\web\assets\ico\apple-touch-icon-72-precomposed.png
-\server\web\assets\ico\favicon.ico
-\server\web\assets\ico\favicon.png
-\server\web\assets\images
-\server\web\assets\images\fhir-logo.png
-\server\web\assets\images\fhir-logo-www.png
-\server\web\assets\images\hl7-logo.png
-\server\web\assets\images\logo_ansinew.jpg
-\server\web\assets\images\search.png
-\server\web\assets\images\stripe.png
-\server\web\assets\images\target.png
-\server\web\assets\js
-\server\web\assets\js\fhir.js
-\server\web\assets\js\html5shiv.js
-\server\web\assets\js\jquery.js
-\server\web\assets\js\jquery-1.11.1.min.map
-\server\web\assets\js\respond.min.js
-\server\web\assets\js\xml.js
-\server\web\css
-\server\web\css\jquery.ui.all.css
-\server\web\css\tags.css
-\server\web\definitions.json\conceptmaps.json
-\server\web\definitions.json\dataelements.json
-\server\web\definitions.json\extension-definitions.json
-\server\web\definitions.json\fhir.schema.json.zip
-\server\web\definitions.json\profiles-others.json
-\server\web\definitions.json\profiles-resources.json
-\server\web\definitions.json\profiles-types.json
-\server\web\definitions.json\search-parameters.json
-\server\web\definitions.json\v2-tables.json
-\server\web\definitions.json\v3-codesystems.json
-\server\web\definitions.json\valuesets.json
-\server\web\definitions.json\version.info
-\server\web\dist
-\server\web\dist\css
-\server\web\dist\css\bootstrap.css
-\server\web\dist\js
-\server\web\dist\js\bootstrap.js
-\server\web\dist\js\bootstrap.min.js
-\server\web\images
-\server\web\images\ui-bg_diagonals-thick_18_b81900_40x40.png
-\server\web\images\ui-bg_diagonals-thick_20_666666_40x40.png
-\server\web\images\ui-bg_flat_10_000000_40x100.png
-\server\web\images\ui-bg_glass_100_f6f6f6_1x400.png
-\server\web\images\ui-bg_glass_100_fdf5ce_1x400.png
-\server\web\images\ui-bg_glass_65_ffffff_1x400.png
-\server\web\images\ui-bg_gloss-wave_35_f6a828_500x100.png
-\server\web\images\ui-bg_highlight-soft_100_eeeeee_1x100.png
-\server\web\images\ui-bg_highlight-soft_75_ffe45c_1x100.png
-\server\web\images\ui-icons_222222_256x240.png
-\server\web\images\ui-icons_228ef1_256x240.png
-\server\web\images\ui-icons_ef8c08_256x240.png
-\server\web\images\ui-icons_ffd27a_256x240.png
-\server\web\images\ui-icons_ffffff_256x240.png
-\server\web\js
-\server\web\js\fhir-gw.js
-\server\web\js\hl7connect.js
-\server\web\js\jcookie.js
-\server\web\js\jquery.effects.blind.js
-\server\web\js\jquery.effects.bounce.js
-\server\web\js\jquery.effects.clip.js
-\server\web\js\jquery.effects.core.js
-\server\web\js\jquery.effects.drop.js
-\server\web\js\jquery.effects.explode.js
-\server\web\js\jquery.effects.fade.js
-\server\web\js\jquery.effects.fold.js
-\server\web\js\jquery.effects.highlight.js
-\server\web\js\jquery.effects.pulsate.js
-\server\web\js\jquery.effects.scale.js
-\server\web\js\jquery.effects.shake.js
-\server\web\js\jquery.effects.slide.js
-\server\web\js\jquery.effects.transfer.js
-\server\web\js\jquery.ui.accordion.js
-\server\web\js\jquery.ui.autocomplete.js
-\server\web\js\jquery.ui.button.js
-\server\web\js\jquery.ui.core.js
-\server\web\js\jquery.ui.datepicker.js
-\server\web\js\jquery.ui.dialog.js
-\server\web\js\jquery.ui.draggable.js
-\server\web\js\jquery.ui.droppable.js
-\server\web\js\jquery.ui.mouse.js
-\server\web\js\jquery.ui.position.js
-\server\web\js\jquery.ui.progressbar.js
-\server\web\js\jquery.ui.resizable.js
-\server\web\js\jquery.ui.selectable.js
-\server\web\js\jquery.ui.slider.js
-\server\web\js\jquery.ui.sortable.js
-\server\web\js\jquery.ui.tabs.js
-\server\web\js\jquery.ui.widget.js
-\server\web\js\jquery-1.3.2.min.js
-\server\web\js\jquery-1.6.2.js
-\server\web\js\jquery-1.6.2.min.js
-\server\web\js\jquery-ui-1.7.1.custom.min.js
-\server\web\js\jquery-ui-1.8.16.custom.js
-\server\web\js\jquery-ui-1.8.16.custom.min.js
-\server\web\js\json2.js
-\server\web\js\jtip.js
-\server\web\js\statuspage.js
diff --git a/1-ClickServer/readme.md b/1-ClickServer/readme.md
deleted file mode 100644
index e2b1b89f7..000000000
--- a/1-ClickServer/readme.md
+++ /dev/null
@@ -1,16 +0,0 @@
-One-click FHIR Server
-
-
-
-Running the server
-
-
-
-Setup
-
-1. Get Terminologies
-2. Define endpoints
-3. Mount the database
-
-
-
diff --git a/1-ClickServer/server/fhirR4.db b/1-ClickServer/server/fhirR4.db
deleted file mode 100644
index 4b982c5cf..000000000
Binary files a/1-ClickServer/server/fhirR4.db and /dev/null differ
diff --git a/1-ClickServer/server/fhirRx_empty.db b/1-ClickServer/server/fhirRx_empty.db
deleted file mode 100644
index 4b982c5cf..000000000
Binary files a/1-ClickServer/server/fhirRx_empty.db and /dev/null differ
diff --git a/1-ClickServer/server/fhirserver.ini b/1-ClickServer/server/fhirserver.ini
deleted file mode 100644
index 0ebadf5c0..000000000
--- a/1-ClickServer/server/fhirserver.ini
+++ /dev/null
@@ -1,95 +0,0 @@
-[databases]
-dbr4= database: .\fhir4.db; type: SQLite; when-testing: true
-
-
-[endpoints]
-r4= path: /r4; validate: true; database: dbr4; version: r4
-
-
-[terminologies]
-ucum= type: ucum; source: .\ucum-essence.xml
-;loinc= type: loinc; source: .\loinc\loinc_266.cache
-
-;icd10= type: icd10; source: .\icd\icd10.txt
-;icd10cm= type: icd10; source: .\icd\icd10cm.txt
-;icd10vn= type: icd10; source: .\icd\icd10vn.txt
-;s-usa= type: snomed; source: .\snomed\snomed_20190301_us.cache
-;sintl= type: snomed; source: .\snomed\snomed_20190731_intl.cache
-;rxnorm= type: rxnorm; database: \rxnorm\rxn
-;ndc=type: ndc; database: rxn; version: 20190321
-;unii= type: unii; database: dbr4
-;scomb= default: true; type: snomed; source: .\snomed_20170306_combined.cache; when-testing: true
-;lang= type: lang; source: .\sql\lang.txt
-
-
-
-[web]
-clients=.\auth.ini
-secure-token={uuid}
-host=localhost
-http=960
-base=/r4
-secure=
-https=
-certname=
-cacertname=
-certpword=
-folder=.\web
-
-[fhir]
-web=.\web
-
-[details]
-version=r4
-
-[internal]
-
-[scim]
-; SCIM sub-system configuration
-; salt=
-; a random string (use a UUID) that the SCIM sub-system uses to
-; salt the hashed passwords. If you change this, all existing
-; SCIM passwords are invalidated. You must have some content
-; for this even if you don't use SCIM
-;
-; the default rights to assign to anonymous users on the open/unsecured interface
-default-rights=openid,profile,user/*.*
-salt={E88C683B-C0D2-4B85-BEEF-289AB0CD8683}
-
-
-[admin]
-; required. Master admin account for administering user accounts.
-; password is provided to database mount procedure (or install)
-username=sa
-email=jct@zeora.net
-default-rights=openid,fhirUser,profile,user/*.*
-scim-salt={908CBB82-3404-4DFB-B959-62E2AB610AED}
-
-[email]
-; server configuration for sending email subscriptions
-;
-; Host= (host name to send email to)
-; Port= (post name for host)
-; Username= (user name with rights to send email using nominated server as a relay)
-; Password= (password for username)
-; Sender= (email address of sender - often related to the username)
-; secure= (0 or 1: whether to use TLS when sending. Server dictates what value to use here)
-
-[sms]
-; server configuration for sending sms subscriptions
-; account details on Twilio, which is used to send SMS messages
-; values as specified for the twilio account
-;
-; account=
-; token=
-; from=
-; owner= if an owner is nominated, they'll be sms'ed when the server starts or stops
-
-[dicom]
-cache=.\dicom.cache
-
-[lang]
-source=.\sql\lang.txt
-[server]
-run-number=805
-
diff --git a/Dockerfile b/Dockerfile
index db9675217..c04ad593b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@ FROM ubuntu:22.04 as builder
ENV DEBIAN_FRONTEND=noninteractive
-RUN apt update && apt install -y tzdata wget git unixodbc-dev libgtk2.0-dev xvfb sqlite3 libsqlite3-dev build-essential
+RUN apt update && apt install -y tzdata wget git unixodbc-dev libgtk2.0-dev xvfb sqlite3 libsqlite3-dev build-essential curl
# Download and build OpenSSL 1.1.1w
WORKDIR /tmp
@@ -20,8 +20,7 @@ RUN ls -la /usr/local/lib/
# Set the timezone
RUN echo "UTC" > /etc/timezone
-RUN apt update && apt install -y wget git unixodbc-dev libgtk2.0-dev xvfb sqlite3 libsqlite3-dev && \
- cd /tmp && \
+RUN cd /tmp && \
wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.26-linux-glibc2.12-x86-64bit.tar.gz && \
tar -xzvf mysql-connector-odbc-8.0.26-linux-glibc2.12-x86-64bit.tar.gz && \
cp -r mysql-connector-odbc-8.0.26-linux-glibc2.12-x86-64bit/lib/* /usr/local/lib && \
@@ -42,6 +41,11 @@ RUN cp /usr/local/lib/*.so* /usr/lib/
RUN /work/fhirserver/build/linux-fhirserver.sh /work/bootstrap
RUN cp exec/pack/*.properties exec/64
+# Set the health check
+HEALTHCHECK --interval=1m --timeout=10s --retries=5 \
+ CMD curl -f http://localhost:${PORT}/fhir/metadata || exit 1
+
+# Set the environment variables
ENV DISPLAY :99
ENV PORT 80
ENV TERMINOLOGY_CACHE /terminology
@@ -50,11 +54,21 @@ VOLUME /terminology
ENV DEBIAN_FRONTEND=
RUN printf '#!/bin/bash \n\
-Xvfb :99 -screen 0 1024x768x8 -nolisten tcp & \n\
-echo "[web]" > /work/fhirserver/exec/64/web.ini; \n\
-echo "http=${PORT}" >> /work/fhirserver/exec/64/web.ini; \n\
-/work/fhirserver/exec/64/fhirserver $(eval echo "$@")'> /bin/entrypoint.sh && \
-chmod +x /bin/entrypoint.sh
+ set -e \n\
+ start_xvfb() { \n\
+ Xvfb :99 -screen 0 1024x768x8 -nolisten tcp & \n\
+ } \n\
+ stop_xvfb() { \n\
+ killall Xvfb || true \n\
+ } \n\
+ trap stop_xvfb SIGTERM \n\
+ rm -f /tmp/.X99-lock \n\
+ start_xvfb \n\
+ echo "[web]" > /work/fhirserver/exec/64/web.ini; \n\
+ echo "http=${PORT}" >> /work/fhirserver/exec/64/web.ini; \n\
+ /work/fhirserver/exec/64/fhirserver $(eval echo "$@")' > /bin/entrypoint.sh && \
+ chmod +x /bin/entrypoint.sh
+
ENTRYPOINT ["/bin/entrypoint.sh"]
diff --git a/README.md b/README.md
index cb53b1cb9..c49c82a6c 100644
--- a/README.md
+++ b/README.md
@@ -112,7 +112,6 @@ Delphi:
* **library**: the pascal reference implementation with supporting code
* **exec**: files needed by the server at run time
-* **1-ClickServer**: Not sure what this is
* **.github**: ci-build setup
* **exec**: files required at execution time, and target for the compiled applications (e.g. exec/64)
* **build**: build scripts for windows and linux. Will install the entire pascal toolchain from scratch - see below
diff --git a/library/version.inc b/library/version.inc
index e369c2bc0..c5fbefbd6 100644
--- a/library/version.inc
+++ b/library/version.inc
@@ -1,3 +1,3 @@
- FHIR_CODE_FULL_VERSION = '3.0.1-SNAPSHOT';
- FHIR_CODE_RELEASE_DATE = '2024-01-10';
- FHIR_CODE_RELEASE_DATETIME = '20240110124513.733Z';
+ FHIR_CODE_FULL_VERSION = '3.0.1';
+ FHIR_CODE_RELEASE_DATE = '2024-01-11';
+ FHIR_CODE_RELEASE_DATETIME = '20240111105649.380Z';
diff --git a/server/fhirserver.lpi b/server/fhirserver.lpi
index ade687b4a..dad6de62d 100644
--- a/server/fhirserver.lpi
+++ b/server/fhirserver.lpi
@@ -130,7 +130,7 @@
-
+
@@ -275,7 +275,7 @@
-
+
@@ -285,6 +285,7 @@
+
@@ -295,7 +296,7 @@
-
+
@@ -306,6 +307,7 @@
+
@@ -719,7 +721,7 @@
-
+
@@ -779,7 +781,7 @@
-
+