[med-svn] [Git][med-team/gnumed-server][upstream] New upstream version 22.15
Andreas Tille
gitlab at salsa.debian.org
Sun Jan 24 07:34:35 GMT 2021
Andreas Tille pushed to branch upstream at Debian Med / gnumed-server
Commits:
0de59c05 by Andreas Tille at 2021-01-24T08:27:47+01:00
New upstream version 22.15
- - - - -
9 changed files:
- server/bootstrap/fixup_db-v22.conf
- server/bootstrap/update_db-v21_v22.conf
- server/doc/schema/gnumed-entire_schema.html
- server/pycommon/gmCrypto.py
- server/pycommon/gmLog2.py
- server/pycommon/gmMimeLib.py
- + server/sql/v21-v22/fixups/v22-add_generic_covid_vaccine.sql
- + server/sql/v21-v22/fixups/v22-dem-v_message_inbox-fixup.sql
- server/sql/v21-v22/fixups/v22-release_notes-fixup.sql
Changes:
=====================================
server/bootstrap/fixup_db-v22.conf
=====================================
@@ -31,6 +31,8 @@ v22-ref-paperwork_templates-fixups.sql
v22-invoice_id_grants-fixup.sql
v22-i18n-lang_funcs-fixup.sql
v22-clin-v_candidate_diagnoses-fixup.sql
+v22-dem-v_message_inbox-fixup.sql
+v22-add_generic_covid_vaccine.sql
v22-release_notes-fixup.sql
$schema$
=====================================
server/bootstrap/update_db-v21_v22.conf
=====================================
@@ -163,6 +163,8 @@ v22-ref-paperwork_templates-fixups.sql
v22-invoice_id_grants-fixup.sql
v22-i18n-lang_funcs-fixup.sql
v22-clin-v_candidate_diagnoses-fixup.sql
+v22-dem-v_message_inbox-fixup.sql
+v22-add_generic_covid_vaccine.sql
v22-release_notes-fixup.sql
$schema$
=====================================
server/doc/schema/gnumed-entire_schema.html
=====================================
@@ -112,7 +112,7 @@
<body>
<!-- Primary Index -->
- <p><br><br>Dumped on 2020-11-09</p>
+ <p><br><br>Dumped on 2021-01-23</p>
<h1><a name="index">Index of database - gnumed_v22</a></h1>
<ul>
=====================================
server/pycommon/gmCrypto.py
=====================================
@@ -543,6 +543,10 @@ def encrypt_directory_content(directory=None, receiver_key_ids=None, passphrase=
return True
+#---------------------------------------------------------------------------
+def pdf_is_encrypted(filename:str=None) -> bool:
+ pass
+
#===========================================================================
# main
#---------------------------------------------------------------------------
=====================================
server/pycommon/gmLog2.py
=====================================
@@ -141,7 +141,11 @@ def log_instance_state(instance):
logger = logging.getLogger('gm.logging')
logger.debug('state of %s', instance)
for attr in [ a for a in dir(instance) if not a.startswith('__') ]:
- logger.debug(' %s: %s', attr, getattr(instance, attr))
+ try:
+ val = getattr(instance, attr)
+ except AttributeError:
+ val = '<cannot access>'
+ logger.debug(' %s: %s', attr, val)
#===============================================================
def log_stack_trace(message=None, t=None, v=None, tb=None):
@@ -167,7 +171,11 @@ def log_stack_trace(message=None, t=None, v=None, tb=None):
logger.debug('type: %s', t)
logger.debug('list of attributes:')
for attr in [ a for a in dir(v) if not a.startswith('__') ]:
- logger.debug(' %s: %s', attr, getattr(v, attr))
+ try:
+ val = getattr(v, attr)
+ except AttributeError:
+ val = '<cannot access>'
+ logger.debug(' %s: %s', attr, val)
# make sure we don't leave behind a binding
# to the traceback as warned against in
=====================================
server/pycommon/gmMimeLib.py
=====================================
@@ -266,6 +266,7 @@ def convert_file(filename=None, target_mime=None, target_filename=None, target_e
tmp, converted_ext = os.path.splitext(target_filename)
if converted_ext is None:
converted_ext = target_extension # can still stay None
+ converted_ext = gmTools.coalesce(converted_ext, '').strip().lstrip('.')
converted_fname = gmTools.get_unique_filename(suffix = converted_ext)
_log.debug('attempting conversion: [%s] -> [<%s>:%s]', filename, target_mime, gmTools.coalesce(target_filename, converted_fname))
script_name = 'gm-convert_file'
@@ -281,7 +282,7 @@ def convert_file(filename=None, target_mime=None, target_filename=None, target_e
binary,
filename,
target_mime,
- converted_ext.lstrip('.'),
+ converted_ext,
converted_fname
]
success, returncode, stdout = gmShellAPI.run_process(cmd_line = cmd_line, verbose = True)
=====================================
server/sql/v21-v22/fixups/v22-add_generic_covid_vaccine.sql
=====================================
@@ -0,0 +1,382 @@
+-- ==============================================================
+-- GNUmed database schema change script
+--
+-- License: GPL v2 or later
+-- Author: karsten.hilbert at gmx.net
+--
+-- Add generic CoViD-2019 vaccine.
+--
+-- ==============================================================
+\set ON_ERROR_STOP 1
+--set default_transaction_read_only to off;
+
+-- --------------------------------------------------------------
+-- generic vaccine "substance" (= indications)
+-- --------------------------------------------------------------
+-- in case <sars-cov-2-mrna> already exists: add ATC
+UPDATE ref.substance SET atc = 'J07BX03' WHERE lower(description) = lower('SARS-CoV-2 spike protein mRNA') AND atc IS NULL;
+
+INSERT INTO ref.substance (description, atc)
+ SELECT
+ 'SARS-CoV-2 spike protein mRNA',
+ 'J07BX03'
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.substance WHERE
+ atc = 'J07BX03'
+ AND
+ description = 'SARS-CoV-2 spike protein mRNA'
+ );
+
+-- generic English
+SELECT i18n.upd_tx('en', 'J07BX03-target', 'CoViD-2019');
+-- user language, if any, fails if not set
+SELECT i18n.upd_tx('J07BX03-target', 'CoViD-2019');
+
+-- --------------------------------------------------------------
+-- generic vaccine
+-- --------------------------------------------------------------
+-- need to disable trigger before running
+ALTER TABLE ref.drug_product
+ DISABLE TRIGGER tr_assert_product_has_components
+;
+
+-- --------------------------------------------------------------
+-- in case <generic covid vaccine> exists: add ATC
+UPDATE ref.drug_product SET atc_code = 'J07BX03' WHERE
+ atc_code IS NULL
+ AND
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake IS TRUE;
+
+INSERT INTO ref.drug_product (description, preparation, is_fake, atc_code)
+ SELECT
+ 'generic covid vaccine',
+ 'vaccine',
+ TRUE,
+ 'J07BX03'
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.drug_product WHERE
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = TRUE
+ AND
+ atc_code = 'J07BX03'
+ );
+
+-- create dose, assumes substance exists
+INSERT INTO ref.dose (fk_substance, amount, unit, dose_unit)
+ SELECT
+ (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1),
+ 1,
+ 'dose',
+ 'shot'
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ );
+
+-- link dose to product
+INSERT INTO ref.lnk_dose2drug (fk_dose, fk_drug_product)
+ SELECT
+ (SELECT pk from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ ),
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = TRUE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.lnk_dose2drug WHERE
+ fk_dose = (
+ SELECT PK from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ )
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = TRUE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- add vaccine if necessary
+INSERT INTO ref.vaccine (is_live, fk_drug_product)
+ SELECT
+ False,
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = TRUE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.vaccine WHERE
+ is_live IS False
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'generic covid vaccine'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = TRUE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- --------------------------------------------------------------
+-- Comirnaty
+
+-- in case <Comirnaty> exists: add ATC
+UPDATE ref.drug_product SET atc_code = 'J07BX03' WHERE
+ atc_code IS NULL
+ AND
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake IS FALSE;
+
+INSERT INTO ref.drug_product (description, preparation, is_fake, atc_code)
+ SELECT
+ 'Comirnaty',
+ 'vaccine',
+ FALSE,
+ 'J07BX03'
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.drug_product WHERE
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ );
+
+-- link dose to product
+INSERT INTO ref.lnk_dose2drug (fk_dose, fk_drug_product)
+ SELECT
+ (SELECT pk from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ ),
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.lnk_dose2drug WHERE
+ fk_dose = (
+ SELECT PK from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ )
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- add vaccine if necessary
+INSERT INTO ref.vaccine (is_live, fk_drug_product)
+ SELECT
+ False,
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.vaccine WHERE
+ is_live IS False
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'Comirnaty'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- --------------------------------------------------------------
+-- mRNA-1273-Moderna
+
+-- in case <mRNA-1273-Moderna> exists: add ATC
+UPDATE ref.drug_product SET atc_code = 'J07BX03' WHERE
+ atc_code IS NULL
+ AND
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake IS FALSE;
+
+INSERT INTO ref.drug_product (description, preparation, is_fake, atc_code)
+ SELECT
+ 'mRNA-1273-Moderna',
+ 'vaccine',
+ FALSE,
+ 'J07BX03'
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.drug_product WHERE
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ );
+
+-- link dose to product
+INSERT INTO ref.lnk_dose2drug (fk_dose, fk_drug_product)
+ SELECT
+ (SELECT pk from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ ),
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.lnk_dose2drug WHERE
+ fk_dose = (
+ SELECT PK from ref.dose WHERE
+ fk_substance = (SELECT pk FROM ref.substance WHERE atc = 'J07BX03' AND description = 'SARS-CoV-2 spike protein mRNA' LIMIT 1)
+ AND
+ amount = 1
+ AND
+ unit = 'dose'
+ AND
+ dose_unit IS NOT DISTINCT FROM 'shot'
+ )
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- add vaccine if necessary
+INSERT INTO ref.vaccine (is_live, fk_drug_product)
+ SELECT
+ False,
+ (SELECT pk FROM ref.drug_product WHERE
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ WHERE NOT EXISTS (
+ SELECT 1 FROM ref.vaccine WHERE
+ is_live IS False
+ AND
+ fk_drug_product = (
+ SELECT pk FROM ref.drug_product WHERE
+ description = 'mRNA-1273-Moderna'
+ AND
+ preparation = 'vaccine'
+ AND
+ is_fake = FALSE
+ AND
+ atc_code = 'J07BX03'
+ )
+ );
+
+-- --------------------------------------------------------------
+-- want to re-enable trigger as now all inserted
+-- vaccines satisfy the conditions
+ALTER TABLE ref.drug_product
+ ENABLE TRIGGER tr_assert_product_has_components
+;
+
+-- --------------------------------------------------------------
+select gm.log_script_insertion('v22-add_generic_covid_vaccine.sql', '22.5');
=====================================
server/sql/v21-v22/fixups/v22-dem-v_message_inbox-fixup.sql
=====================================
@@ -0,0 +1,253 @@
+-- ==============================================================
+-- GNUmed database schema change script
+--
+-- License: GPL v2 or later
+-- Author: karsten.hilbert at gmx.net
+--
+-- ==============================================================
+\set ON_ERROR_STOP 1
+--set default_transaction_read_only to off;
+
+-- --------------------------------------------------------------
+drop view if exists dem.v_message_inbox cascade;
+
+
+create view dem.v_message_inbox as
+
+SELECT
+ all_msgs.*,
+ d_n.lastnames,
+ d_n.firstnames,
+ d_n.preferred
+ AS preferred_name,
+ d_n.comment
+ AS comment_name,
+ d_i.gender,
+ _(d_i.gender)
+ AS l10n_gender,
+ date_trunc('day'::text, d_i.dob) + COALESCE(d_i.tob, d_i.dob::time without time zone)::interval
+ AS dob,
+ d_i.deceased,
+ d_i.title,
+ d_i.comment
+ AS comment_identity
+FROM (
+
+ select
+ mi.modified_when
+ as received_when,
+ coalesce (
+ (select short_alias from dem.staff where db_user = mi.modified_by),
+ '<' || mi.modified_by || '>'
+ )
+ as modified_by,
+ (select short_alias from dem.staff where dem.staff.pk = mi.fk_staff)
+ as provider,
+ mi.importance,
+ vit.category,
+ vit.l10n_category,
+ vit.type,
+ vit.l10n_type,
+ mi.comment,
+ mi.ufk_context
+ as pk_context,
+ mi.data
+ as data,
+ mi.pk
+ as pk_inbox_message,
+ mi.fk_staff
+ as pk_staff,
+ vit.pk_category,
+ mi.fk_inbox_item_type
+ as pk_type,
+ mi.fk_patient
+ as pk_patient,
+ false
+ as is_virtual,
+ mi.due_date
+ as due_date,
+ mi.expiry_date
+ as expiry_date,
+ case
+ when due_date is null then false
+ when due_date > now() then false
+ when expiry_date is null then true
+ when expiry_date < now() then false
+ else true
+ end
+ as is_overdue,
+ case
+ when expiry_date is null then false
+ when expiry_date > now() then false
+ else true
+ end
+ as is_expired,
+ case
+ when due_date is null then null
+ when due_date > now() then due_date - now()
+ else now() - due_date
+ end
+ as interval_due,
+ gm.xid2int(mi.xmin)
+ as xmin_message_inbox
+ from
+ dem.message_inbox mi,
+ dem.v_inbox_item_type vit
+ where
+ mi.fk_inbox_item_type = vit.pk_type
+
+UNION ALL
+
+ select * from blobs.v_unreviewed_docs_inbox
+
+UNION ALL (
+
+ select
+ now() as received_when,
+ vtr.modified_by as modified_by,
+ (select short_alias from dem.staff where dem.staff.pk = vtr.pk_intended_reviewer)
+ as provider,
+ 1 as importance,
+ 'clinical'
+ as category,
+ _('clinical')
+ as l10n_category,
+ 'review results'
+ as type,
+ _('review results')
+ as l10n_type,
+ (select _('unreviewed (abnormal) results for patient') || ' ['
+ || dn.lastnames || ', '
+ || dn.firstnames || ']'
+ from dem.names dn
+ where
+ dn.id_identity = vtr.pk_patient
+ and
+ dn.active is True
+ )
+ as comment,
+ NULL::integer[]
+ as pk_context,
+ NULL::text
+ as data,
+ NULL::integer
+ as pk_inbox_message,
+ vtr.pk_intended_reviewer
+ as pk_staff,
+ (select pk_category from dem.v_inbox_item_type where type = 'review results')
+ as pk_category,
+ (select pk_type from dem.v_inbox_item_type where type = 'review results')
+ as pk_type,
+ vtr.pk_patient as pk_patient,
+ true
+ as is_virtual,
+ now()::timestamp with time zone - '1 hour'::interval
+ as due_date,
+ NULL::timestamp with time zone
+ as expiry_date,
+ TRUE::boolean
+ as is_overdue,
+ FALSE::boolean
+ as is_expired,
+ '1 hour'::interval
+ as interval_due,
+ NULL::integer
+ as xmin_message_inbox
+ from
+ clin.v_test_results vtr
+ where
+ reviewed is false
+ and
+ (
+ (is_technically_abnormal is true)
+ or
+ ((is_technically_abnormal is null) and (abnormality_indicator is not null))
+ )
+
+ UNION
+
+ select
+ now() as received_when,
+ vtr.modified_by as modified_by,
+ (select short_alias from dem.staff where dem.staff.pk = vtr.pk_intended_reviewer)
+ as provider,
+ 0 as importance,
+ 'clinical'
+ as category,
+ _('clinical')
+ as l10n_category,
+ 'review results'
+ as type,
+ _('review results')
+ as l10n_type,
+ (select _('unreviewed (normal) results for patient') || ' ['
+ || dn.lastnames || ', '
+ || dn.firstnames || ']'
+ from dem.names dn
+ where
+ dn.id_identity = vtr.pk_patient
+ and
+ dn.active is True
+ )
+ as comment,
+ NULL::integer[]
+ as pk_context,
+ NULL::text
+ as data,
+ NULL::integer
+ as pk_inbox_message,
+ vtr.pk_intended_reviewer
+ as pk_staff,
+ (select pk_category from dem.v_inbox_item_type where type = 'review results')
+ as pk_category,
+ (select pk_type from dem.v_inbox_item_type where type = 'review results')
+ as pk_type,
+ vtr.pk_patient as pk_patient,
+ true
+ as is_virtual,
+ now()::timestamp with time zone - '1 hour'::interval
+ as due_date,
+ NULL::timestamp with time zone
+ as expiry_date,
+ TRUE::boolean
+ as is_overdue,
+ FALSE::boolean
+ as is_expired,
+ '1 hour'::interval
+ as interval_due,
+ NULL::integer
+ as xmin_message_inbox
+ from
+ clin.v_test_results vtr
+ where
+ reviewed is false
+ and
+ (
+ (is_technically_abnormal is false)
+ or
+ ((is_technically_abnormal is null) and (abnormality_indicator is null))
+ )
+ )
+
+) AS all_msgs
+
+ LEFT OUTER JOIN dem.identity d_i ON (all_msgs.pk_patient = d_i.pk)
+ LEFT OUTER JOIN dem.names d_n ON (d_i.pk = d_n.id_identity)
+
+WHERE
+ -- name must be active=True or active=None (no patient)
+ -- do _not_ include active=False as that would produce
+ -- duplicates when there are several names for a patient
+ d_n.active IS DISTINCT FROM FALSE
+;
+
+
+comment on view dem.v_message_inbox is
+'Denormalized messages for the providers and/or patients.
+Using UNION makes sure we get the right level of uniqueness.';
+
+
+grant select on dem.v_message_inbox to group "gm-doctors";
+
+-- ==============================================================
+select gm.log_script_insertion('v22-dem-v_message_inbox-fixup.sql', '22.5');
=====================================
server/sql/v21-v22/fixups/v22-release_notes-fixup.sql
=====================================
@@ -17,22 +17,22 @@ INSERT INTO dem.message_inbox (
) VALUES (
(select pk from dem.staff where db_user = 'any-doc'),
(select pk_type from dem.v_inbox_item_type where type = 'memo' and category = 'administrative'),
- 'Release Notes for GNUmed 1.8.4 (database v22.14)',
- 'GNUmed 1.8.4 Release Notes:
+ 'Release Notes for GNUmed 1.8.5 (database v22.15)',
+ 'GNUmed 1.8.5 Release Notes:
- 1.8.4
+ 1.8.5
-IMPROVED: exceptions: always include exception/traceback in mail
-IMPROVED: PACS: robustify DICOM upload
+FIX: image conversion w/o target extension [thanks ...]
+FIX: SVG icon [thanks freddii]
+FIX: lab: tab "most-recent": [x]ing "show missing" throws exception
+FIX: log: exception on inaccessible attributes
-FIX: placeholders: exception on parsing some option styles
-FIX: address: nominatim.openstreetmap.org API has changed
-FIX: documents: properly wipe details display between patients
+NEW: add CoVid-2019 vaccines
- 22.14
+ 22.15
-FIX: bootstrapper exception calling capture_conn_state()
+FIX: message inbox view
');
-- --------------------------------------------------------------
-select gm.log_script_insertion('v22-release_notes-fixup.sql', '22.14 at 1.8.4');
+select gm.log_script_insertion('v22-release_notes-fixup.sql', '22.15 at 1.8.5');
View it on GitLab: https://salsa.debian.org/med-team/gnumed-server/-/commit/0de59c055f0d7391ccfc0447c147edf1c46d2930
--
View it on GitLab: https://salsa.debian.org/med-team/gnumed-server/-/commit/0de59c055f0d7391ccfc0447c147edf1c46d2930
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20210124/a5016283/attachment-0001.html>
More information about the debian-med-commit
mailing list