[med-svn] [Git][med-team/gnumed-client][upstream] New upstream version 1.8.24+dfsg

Marc Angermann (@marc_a) gitlab at salsa.debian.org
Thu Apr 16 21:20:54 BST 2026



Marc Angermann pushed to branch upstream at Debian Med / gnumed-client


Commits:
a1f305dc by Marc Angermann at 2026-04-16T22:14:39+02:00
New upstream version 1.8.24+dfsg
- - - - -


5 changed files:

- client/CHANGELOG
- client/business/gmDICOM.py
- client/doc/schema/gnumed-entire_schema.html
- client/gnumed.py
- client/wxpython/gmDocumentWidgets.py


Changes:

=====================================
client/CHANGELOG
=====================================
@@ -6,6 +6,12 @@
 # rel-1-8-maint
 ------------------------------------------------
 
+	1.8.24
+
+FIX: more robust UI update when quickly scrolling document tree
+FIX: more robust handling of DICOM instance download issues
+FIX: more robust Orthanc DICOM instance parsing
+
 	1.8.23
 
 FIX: hyphenated module names failing in newer Python versions [thanks María]
@@ -2296,6 +2302,14 @@ FIX: missing cast to ::text in dem.date_trunc_utc() calls
 # gnumed_v22
 ------------------------------------------------
 
+	22.34
+
+FIX: bootstrapping: chicken-egg-problem with gm-dbo vs groups creation
+FIX: bootstrapping: use pg_roles rather than pg_user b/c of collation dependance
+FIX: gm.transfer_users(): switch from pg_user to pg_roles
+FIX: bootstrapping: properly set ADMIN on groups when running several upgrades in a row
+FIX: bootstrapping: using CREATE ROLE for users requires explicit LOGIN
+
 	22.33
 
 FIX: boostrapping: gm-dbo cannot GRANT ...  WITH ADMIN to itself


=====================================
client/business/gmDICOM.py
=====================================
@@ -581,26 +581,38 @@ class cOrthancServer:
 			filename = gmTools.get_unique_filename(suffix = '.png')
 		_log.debug('exporting preview for instance [%s] into [%s]', instance_id, filename)
 		download_url = '%s/instances/%s/preview' % (self.__server_url, instance_id)
-		f = io.open(filename, 'wb')
 		try:
-			f.write(self.__run_GET(url = download_url, allow_cached = True))
+			content, status = self.__run_GET(url = download_url, allow_cached = True, also_return_status = True)
 		except Exception:
-			_log.exception('cannot retrieve instance')
-			filename = None
-		finally:
-			f.close()
+			_log.exception('cannot retrieve instance preview')
+			return None
+
+		if content is False:
+			_log.error('cannot retrieve instance preview: %s', status)
+			return None
+
+		with open(filename, 'wb') as f:
+			f.write(content)
 		return filename
 
 	#--------------------------------------------------------
 	def get_instance(self, instance_id:str, filename:str=None, allow_cached:bool=True) -> str:
 		if filename is None:
 			filename = gmTools.get_unique_filename(suffix = '.dcm')
-
 		_log.debug('exporting instance [%s] into [%s]', instance_id, filename)
 		download_url = '%s/instances/%s/attachments/dicom/data' % (self.__server_url, instance_id)
-		f = io.open(filename, 'wb')
-		f.write(self.__run_GET(url = download_url, allow_cached = allow_cached))
-		f.close()
+		try:
+			content, status = self.__run_GET(url = download_url, allow_cached = True, also_return_status = True)
+		except Exception:
+			_log.exception('cannot retrieve instance')
+			return None
+
+		if content is False:
+			_log.error('cannot retrieve instance: %s', status)
+			return None
+
+		with open(filename, 'wb') as f:
+			f.write(content)
 		return filename
 
 	#--------------------------------------------------------
@@ -1171,7 +1183,7 @@ class cOrthancServer:
 					for key in orth_series:
 						if key == 'MainDicomTags':
 							for mkey in orth_series['MainDicomTags']:
-								series_dict['all_tags'][mkey] = orth_series['MainDicomTags'][mkey].strip()
+								series_dict['all_tags'][mkey] = orth_series['MainDicomTags'][mkey]
 							continue
 						series_dict['all_tags'][key] = orth_series[key]
 					_log.debug('series: %s', list(series_dict['all_tags']))
@@ -1800,6 +1812,6 @@ if __name__ == "__main__":
 	#test_modify_patient_id()
 	#test_upload_files()
 	#test_upload_file()
-	#test_get_instance_preview()
+	test_get_instance_preview()
 	#test_get_instance_tags()
 	#test_patient()


=====================================
client/doc/schema/gnumed-entire_schema.html
=====================================
@@ -112,7 +112,7 @@
 <body>
 
 <!-- Primary Index -->
-<p><br><br>Dumped on 2025-12-29</p>
+<p><br><br>Dumped on 2026-04-16</p>
 <h1><a name="index">Index of database - gnumed_v22</a></h1>
 <ul>
   
@@ -158,7 +158,7 @@
   
   <li><a name="gm.schema">gm</a></li><ul>
     <li><a href="gnumed-entire_schema.html#gm.table.access-log">access_log</a></li><li><a href="gnumed-entire_schema.html#gm.table.notifying-tables">notifying_tables</a></li><li><a href="gnumed-entire_schema.html#gm.table.schema-revision">schema_revision</a></li>
-    <li><a href="gnumed-entire_schema.html#gm.function.account-is-dbowner-or-staff-account-name">account_is_dbowner_or_staff(_account name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-missing-array-bits">add_missing_array_bits()</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-table-for-notifies-name-name">add_table_for_notifies(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-user-to-permission-group-name-name">add_user_to_permission_group(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.array-unnest-anyarray">array_unnest(anyarray)</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure">concat_table_structure()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-integer">concat_table_structure(integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v1">concat_table_structure_v1()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v16-and-up">concat_table_structure_v16_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v17-and-up">concat_table_structure_v17_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v18-and-up">concat_table_structure_v18_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v19-and-up">concat_table_structure_v19_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v2">concat_table_structure_v2()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v3">concat_table_structure_v3()</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-all-enc-epi-sanity-check-triggers">create_all_enc_epi_sanity_check_triggers()</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-all-table-mod-triggers-drop-old-triggers-boolean">create_all_table_mod_triggers(_drop_old_triggers boolean)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-enc-epi-sanity-check-trigger-schema-name-name-table-name-name-fk-encounter-col-name-fk-episode-col-name">create_enc_epi_sanity_check_trigger(_schema_name name, _table_name name, _fk_encounter_col name, _fk_episode_col name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-generic-combi-vaccine-text-textARRAY-text-boolean">create_generic_combi_vaccine(text, text[], text, boolean)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-table-mod-triggers-schema-name-name-table-name-name">create_table_mod_triggers(_schema_name name, _table_name name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-user-name-text">create_user(name, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.disable-user-name">disable_user(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.drop-user-name">drop_user(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.get-users">get_users()</a></li><li><a href="gnumed-entire_schema.html#gm.function.get-users-name">get_users(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.is-null-or-blank-string-text">is_null_or_blank_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.is-null-or-non-empty-string-text">is_null_or_non_empty_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.lo-chunked-md5-oid-integer">lo_chunked_md5(oid, integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.load-auto-explain-min-duration-integer">load_auto_explain(_min_duration integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-access2emr-text">log_access2emr(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-other-access-text">log_other_access(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-script-insertion-text-text">log_script_insertion(text, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.nullify-empty-string-text">nullify_empty_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.register-notifying-table-name-name">register_notifying_table(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.strip-allzeros-fraction-numeric">strip_allzeros_fraction(numeric)</a></li><li><a href="gnumed-entire_schema.html#gm.function.transfer-users-text">transfer_users(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.transfer-users-text-text">transfer_users(text, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.trf-announce-table-del">trf_announce_table_del()</a></li><li><a href="gnumed-entire_schema.html#gm.function.trf-announce-table-ins-upd">trf_announce_table_ins_upd()</a></li><li><a href="gnumed-entire_schema.html#gm.function.user-exists-name">user_exists(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.xid2int-xid">xid2int(xid)</a></li>
+    <li><a href="gnumed-entire_schema.html#gm.function.account-is-dbowner-or-staff-account-name">account_is_dbowner_or_staff(_account name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-missing-array-bits">add_missing_array_bits()</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-table-for-notifies-name-name">add_table_for_notifies(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.add-user-to-permission-group-name-name">add_user_to_permission_group(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.array-unnest-anyarray">array_unnest(anyarray)</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure">concat_table_structure()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-integer">concat_table_structure(integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v1">concat_table_structure_v1()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v16-and-up">concat_table_structure_v16_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v17-and-up">concat_table_structure_v17_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v18-and-up">concat_table_structure_v18_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v19-and-up">concat_table_structure_v19_and_up()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v2">concat_table_structure_v2()</a></li><li><a href="gnumed-entire_schema.html#gm.function.concat-table-structure-v3">concat_table_structure_v3()</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-all-enc-epi-sanity-check-triggers">create_all_enc_epi_sanity_check_triggers()</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-all-table-mod-triggers-drop-old-triggers-boolean">create_all_table_mod_triggers(_drop_old_triggers boolean)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-enc-epi-sanity-check-trigger-schema-name-name-table-name-name-fk-encounter-col-name-fk-episode-col-name">create_enc_epi_sanity_check_trigger(_schema_name name, _table_name name, _fk_encounter_col name, _fk_episode_col name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-generic-combi-vaccine-text-textARRAY-text-boolean">create_generic_combi_vaccine(text, text[], text, boolean)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-table-mod-triggers-schema-name-name-table-name-name">create_table_mod_triggers(_schema_name name, _table_name name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.create-user-name-text">create_user(name, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.disable-user-name">disable_user(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.drop-user-name">drop_user(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.get-users">get_users()</a></li><li><a href="gnumed-entire_schema.html#gm.function.get-users-name">get_users(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.is-null-or-blank-string-text">is_null_or_blank_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.is-null-or-non-empty-string-text">is_null_or_non_empty_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.lo-chunked-md5-oid-integer">lo_chunked_md5(oid, integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.load-auto-explain-min-duration-integer">load_auto_explain(_min_duration integer)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-access2emr-text">log_access2emr(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-other-access-text">log_other_access(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.log-script-insertion-text-text">log_script_insertion(text, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.nullify-empty-string-text">nullify_empty_string(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.register-notifying-table-name-name">register_notifying_table(name, name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.strip-allzeros-fraction-numeric">strip_allzeros_fraction(numeric)</a></li><li><a href="gnumed-entire_schema.html#gm.function.transfer-users-text">transfer_users(text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.transfer-users-text-text">transfer_users(text, text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.trf-announce-table-del">trf_announce_table_del()</a></li><li><a href="gnumed-entire_schema.html#gm.function.trf-announce-table-ins-upd">trf_announce_table_ins_upd()</a></li><li><a href="gnumed-entire_schema.html#gm.function.user-exists-name">user_exists(name)</a></li><li><a href="gnumed-entire_schema.html#gm.function.user-needs-md5-2-scramsha256-pwd-switch-user-text">user_needs_md5_2_scramsha256_pwd_switch(_user text)</a></li><li><a href="gnumed-entire_schema.html#gm.function.xid2int-xid">xid2int(xid)</a></li>
   </ul>
   
   <li><a name="i18n.schema">i18n</a></li><ul>
@@ -50039,11 +50039,11 @@ LEFT JOIN clin.encounter c_enc
 <!-- View Definition -->
 
 <pre>
-SELECT b_b.pk AS pk_bill
+SELECT pk AS pk_bill
 ,
-    b_b.invoice_id
+    invoice_id
 ,
-    b_b.fk_receiver_identity AS pk_receiver_identity
+    fk_receiver_identity AS pk_receiver_identity
 ,
     
 (
@@ -50108,15 +50108,15 @@ SELECT v_bill_items.currency
          LIMIT 1
 ) AS currency
 ,
-    b_b.close_date
+    close_date
 ,
-    b_b.apply_vat
+    apply_vat
 ,
-    b_b.comment
+    comment
 ,
-    b_b.fk_receiver_address AS pk_receiver_address
+    fk_receiver_address AS pk_receiver_address
 ,
-    b_b.fk_doc AS pk_doc
+    fk_doc AS pk_doc
 ,
     
 (
@@ -50153,7 +50153,7 @@ SELECT array_agg
      ) sorted_values
 ) AS pk_bill_items
 ,
-    b_b.xmin AS xmin_bill
+    xmin AS xmin_bill
    
 FROM bill.bill b_b;</pre>
 
@@ -53333,12 +53333,12 @@ ON (
 <!-- View Definition -->
 
 <pre>
-SELECT dt.pk AS pk_doc_type
+SELECT pk AS pk_doc_type
 ,
-    dt.name AS type
+    name AS type
 ,
     _
-(dt.name) AS l10n_type
+(name) AS l10n_type
 ,
     
 (NOT 
@@ -53364,7 +53364,7 @@ SELECT dt.pk AS pk_doc_type
      )
 ) AS is_in_use
 ,
-    dt.xmin AS xmin_doc_type
+    xmin AS xmin_doc_type
    
 FROM blobs.doc_type dt;</pre>
 
@@ -55324,14 +55324,14 @@ WHERE (d_n.active IS TRUE);</pre>
 <!-- View Definition -->
 
 <pre>
-SELECT b_vud.pk_patient
+SELECT pk_patient
 ,
     count
 (1) AS no_of_docs
    
 FROM blobs.v_unreviewed_docs b_vud
   
-GROUP BY b_vud.pk_patient;</pre>
+GROUP BY pk_patient;</pre>
 
 
 <!-- List off permissions -->
@@ -58820,55 +58820,55 @@ end;</pre>
 <!-- View Definition -->
 
 <pre>
-SELECT v_emr_journal.pk_patient
+SELECT pk_patient
 ,
-    v_emr_journal.modified_when
+    modified_when
 ,
-    v_emr_journal.clin_when
+    clin_when
 ,
-    v_emr_journal.modified_by
+    modified_by
 ,
-    v_emr_journal.soap_cat
+    soap_cat
 ,
-    v_emr_journal.narrative
+    narrative
 ,
-    v_emr_journal.pk_encounter
+    pk_encounter
 ,
-    v_emr_journal.pk_episode
+    pk_episode
 ,
-    v_emr_journal.pk_health_issue
+    pk_health_issue
 ,
-    v_emr_journal.src_pk
+    src_pk
 ,
-    v_emr_journal.src_table
+    src_table
 ,
-    v_emr_journal.row_version
+    row_version
 ,
-    v_emr_journal.health_issue
+    health_issue
 ,
-    v_emr_journal.issue_laterality
+    issue_laterality
 ,
-    v_emr_journal.issue_active
+    issue_active
 ,
-    v_emr_journal.issue_clinically_relevant
+    issue_clinically_relevant
 ,
-    v_emr_journal.issue_confidential
+    issue_confidential
 ,
-    v_emr_journal.episode
+    episode
 ,
-    v_emr_journal.episode_open
+    episode_open
 ,
-    v_emr_journal.encounter_started
+    encounter_started
 ,
-    v_emr_journal.encounter_last_affirmed
+    encounter_last_affirmed
 ,
-    v_emr_journal.encounter_type
+    encounter_type
 ,
-    v_emr_journal.encounter_l10n_type
+    encounter_l10n_type
    
 FROM clin.v_emr_journal
   
-WHERE (v_emr_journal.src_table <> 'clin.suppressed_hint'::text);</pre>
+WHERE (src_table <> 'clin.suppressed_hint'::text);</pre>
 
 
 <!-- List off permissions -->
@@ -74435,11 +74435,11 @@ WHERE (
 <!-- View Definition -->
 
 <pre>
-SELECT c_p.fk_identity AS pk_patient
+SELECT fk_identity AS pk_patient
 ,
-    c_p.modified_when
+    modified_when
 ,
-    c_p.modified_when AS clin_when
+    modified_when AS clin_when
 ,
     COALESCE
 (
@@ -74452,7 +74452,7 @@ SELECT c_p.fk_identity AS pk_patient
      )
      , (
            ('<'::text || 
-                 (c_p.modified_by)::text
+                 (modified_by)::text
            ) || '>'::text
      )
 ) AS modified_by
@@ -74463,7 +74463,7 @@ SELECT c_p.fk_identity AS pk_patient
 (_
      ('EDC'::text) || to_char
      (
-           (c_p.edc)::timestamp with time zone
+           (edc)::timestamp with time zone
            ,': YYYY Mon DD'::text
      )
 ) AS narrative
@@ -74484,11 +74484,11 @@ ORDER BY c_e.started DESC
 ,
     NULL::integer AS pk_health_issue
 ,
-    c_p.pk AS src_pk
+    pk AS src_pk
 ,
     'clin.patient'::text AS src_table
 ,
-    c_p.row_version
+    row_version
 ,
     NULL::text AS health_issue
 ,
@@ -74514,7 +74514,7 @@ ORDER BY c_e.started DESC
    
 FROM clin.patient c_p
   
-WHERE (c_p.edc IS NOT NULL);</pre>
+WHERE (edc IS NOT NULL);</pre>
 
 
 <!-- List off permissions -->
@@ -78800,35 +78800,35 @@ SELECT encounter.fk_patient
  WHERE (encounter.pk = c_hi.fk_encounter)
 ) AS pk_patient
 ,
-    c_hi.pk AS pk_health_issue
+    pk AS pk_health_issue
 ,
-    c_hi.description
+    description
 ,
-    c_hi.summary
+    summary
 ,
-    c_hi.laterality
+    laterality
 ,
-    c_hi.age_noted
+    age_noted
 ,
-    c_hi.is_active
+    is_active
 ,
-    c_hi.clinically_relevant
+    clinically_relevant
 ,
-    c_hi.is_confidential
+    is_confidential
 ,
-    c_hi.is_cause_of_death
+    is_cause_of_death
 ,
-    c_hi.fk_encounter AS pk_encounter
+    fk_encounter AS pk_encounter
 ,
-    c_hi.modified_when
+    modified_when
 ,
-    c_hi.modified_by
+    modified_by
 ,
-    c_hi.row_version
+    row_version
 ,
-    c_hi."grouping"
+    "grouping"
 ,
-    c_hi.diagnostic_certainty_classification
+    diagnostic_certainty_classification
 ,
     
 (EXISTS 
@@ -78858,7 +78858,7 @@ SELECT encounter.fk_patient
      , ARRAY[]::integer[]
 ) AS pk_generic_codes
 ,
-    c_hi.xmin AS xmin_health_issue
+    xmin AS xmin_health_issue
    
 FROM clin.health_issue c_hi;</pre>
 
@@ -83394,43 +83394,43 @@ WHERE (
 <!-- View Definition -->
 
 <pre>
-SELECT c_idu.pk AS pk_incoming_data_unmatched
+SELECT pk AS pk_incoming_data_unmatched
 ,
-    c_idu.fk_patient_candidates AS pk_patient_candidates
+    fk_patient_candidates AS pk_patient_candidates
 ,
-    c_idu.firstnames
+    firstnames
 ,
-    c_idu.lastnames
+    lastnames
 ,
-    c_idu.dob
+    dob
 ,
-    c_idu.gender
+    gender
 ,
-    c_idu.postcode
+    postcode
 ,
-    c_idu.other_info
+    other_info
 ,
-    c_idu.request_id
+    request_id
 ,
-    c_idu.requestor
+    requestor
 ,
-    c_idu.external_data_id
+    external_data_id
 ,
-    c_idu.comment
+    comment
 ,
-    c_idu.fk_identity_disambiguated AS pk_identity_disambiguated
+    fk_identity_disambiguated AS pk_identity_disambiguated
 ,
-    c_idu.fk_provider_disambiguated AS pk_provider_disambiguated
+    fk_provider_disambiguated AS pk_provider_disambiguated
 ,
-    c_idu.type AS data_type
+    type AS data_type
 ,
     md5
-(c_idu.data) AS md5_sum
+(data) AS md5_sum
 ,
     octet_length
-(c_idu.data) AS data_size
+(data) AS data_size
 ,
-    c_idu.xmin AS xmin_incoming_data_unmatched
+    xmin AS xmin_incoming_data_unmatched
    
 FROM clin.incoming_data_unmatched c_idu;</pre>
 
@@ -85790,7 +85790,7 @@ SELECT encounter.fk_patient
  WHERE (encounter.pk = a.fk_encounter)
 ) AS pk_patient
 ,
-    a.modified_when
+    modified_when
 ,
     COALESCE
 (
@@ -85803,22 +85803,22 @@ SELECT encounter.fk_patient
      )
      , (
            ('<'::text || 
-                 (a.modified_by)::text
+                 (modified_by)::text
            ) || '>'::text
      )
 ) AS modified_by
 ,
-    a.last_confirmed
+    last_confirmed
 ,
-    a.has_allergy
+    has_allergy
 ,
-    a.comment
+    comment
 ,
-    a.fk_encounter AS pk_encounter
+    fk_encounter AS pk_encounter
 ,
-    a.pk AS pk_allergy_state
+    pk AS pk_allergy_state
 ,
-    a.xmin AS xmin_allergy_state
+    xmin AS xmin_allergy_state
    
 FROM clin.allergy_state a;</pre>
 
@@ -96342,11 +96342,11 @@ SELECT pg_class.relname
  WHERE (pg_class.oid = rr.tableoid)
 ) AS src_table
 ,
-    rr.fk_reviewed_row AS pk_reviewed_row
+    fk_reviewed_row AS pk_reviewed_row
 ,
-    rr.is_technically_abnormal
+    is_technically_abnormal
 ,
-    rr.clinically_relevant
+    clinically_relevant
 ,
     
 (
@@ -96357,11 +96357,11 @@ SELECT staff.short_alias
  WHERE (staff.pk = rr.fk_reviewer)
 ) AS reviewer
 ,
-    rr.comment
+    comment
 ,
-    rr.pk AS pk_review_root
+    pk AS pk_review_root
 ,
-    rr.fk_reviewer AS pk_reviewer
+    fk_reviewer AS pk_reviewer
    
 FROM clin.review_root rr;</pre>
 
@@ -99972,15 +99972,15 @@ LEFT JOIN dem.org d_o
 <!-- View Definition -->
 
 <pre>
-SELECT c_tp.pk AS pk_test_panel
+SELECT pk AS pk_test_panel
 ,
-    c_tp.description
+    description
 ,
-    c_tp.comment
+    comment
 ,
-    c_tp.modified_when
+    modified_when
 ,
-    c_tp.modified_by
+    modified_by
 ,
     COALESCE
 (
@@ -100032,9 +100032,9 @@ SELECT row_to_json
      , ARRAY[]::integer[]
 ) AS pk_generic_codes
 ,
-    c_tp.row_version
+    row_version
 ,
-    c_tp.xmin AS xmin_test_panel
+    xmin AS xmin_test_panel
    
 FROM clin.test_panel c_tp;</pre>
 
@@ -113307,11 +113307,11 @@ not-quite-so-bad: occupation
 <!-- View Definition -->
 
 <pre>
-SELECT lnk_person_org_address.id_identity
+SELECT id_identity
 ,
-    lnk_person_org_address.id_address
+    id_address
 ,
-    lnk_person_org_address.id_type
+    id_type
    
 FROM dem.lnk_person_org_address;</pre>
 
@@ -117546,53 +117546,53 @@ FROM dem.lnk_person_org_address;</pre>
 <!-- View Definition -->
 
 <pre>
-SELECT d_vp.pk_identity
+SELECT pk_identity
 ,
-    d_vp.title
+    title
 ,
-    d_vp.firstnames
+    firstnames
 ,
-    d_vp.preferred
+    preferred
 ,
-    d_vp.lastnames
+    lastnames
 ,
-    d_vp.gender
+    gender
 ,
-    d_vp.l10n_gender
+    l10n_gender
 ,
-    d_vp.dob_only
+    dob_only
 ,
-    d_vp.dob
+    dob
 ,
-    d_vp.tob
+    tob
 ,
-    d_vp.deceased
+    deceased
 ,
-    d_vp.marital_status
+    marital_status
 ,
-    d_vp.l10n_marital_status
+    l10n_marital_status
 ,
-    d_vp.emergency_contact
+    emergency_contact
 ,
-    d_vp.comment
+    comment
 ,
-    d_vp.is_deleted
+    is_deleted
 ,
-    d_vp.pk_marital_status
+    pk_marital_status
 ,
-    d_vp.pk_active_name
+    pk_active_name
 ,
-    d_vp.pk_emergency_contact
+    pk_emergency_contact
 ,
-    d_vp.pk_primary_provider
+    pk_primary_provider
 ,
-    d_vp.xmin_identity
+    xmin_identity
 ,
-    d_vp.dob_is_estimated
+    dob_is_estimated
    
 FROM dem.v_all_persons d_vp
   
-WHERE (d_vp.is_deleted IS FALSE);</pre>
+WHERE (is_deleted IS FALSE);</pre>
 
 
 <!-- List off permissions -->
@@ -119351,53 +119351,53 @@ WHERE (
 <!-- View Definition -->
 
 <pre>
-SELECT d_vp.pk_identity
+SELECT pk_identity
 ,
-    d_vp.title
+    title
 ,
-    d_vp.firstnames
+    firstnames
 ,
-    d_vp.preferred
+    preferred
 ,
-    d_vp.lastnames
+    lastnames
 ,
-    d_vp.gender
+    gender
 ,
-    d_vp.l10n_gender
+    l10n_gender
 ,
-    d_vp.dob_only
+    dob_only
 ,
-    d_vp.dob
+    dob
 ,
-    d_vp.tob
+    tob
 ,
-    d_vp.deceased
+    deceased
 ,
-    d_vp.marital_status
+    marital_status
 ,
-    d_vp.l10n_marital_status
+    l10n_marital_status
 ,
-    d_vp.emergency_contact
+    emergency_contact
 ,
-    d_vp.comment
+    comment
 ,
-    d_vp.is_deleted
+    is_deleted
 ,
-    d_vp.pk_marital_status
+    pk_marital_status
 ,
-    d_vp.pk_active_name
+    pk_active_name
 ,
-    d_vp.pk_emergency_contact
+    pk_emergency_contact
 ,
-    d_vp.pk_primary_provider
+    pk_primary_provider
 ,
-    d_vp.xmin_identity
+    xmin_identity
 ,
-    d_vp.dob_is_estimated
+    dob_is_estimated
    
 FROM dem.v_all_persons d_vp
   
-WHERE (d_vp.is_deleted IS TRUE);</pre>
+WHERE (is_deleted IS TRUE);</pre>
 
 
 <!-- List off permissions -->
@@ -119933,21 +119933,21 @@ FROM (dem.lnk_org_unit2ext_id d_lou2ei
 <!-- View Definition -->
 
 <pre>
-SELECT gl.tag
+SELECT tag
 ,
     _
-(gl.tag) AS l10n_tag
+(tag) AS l10n_tag
 ,
-    gl.label
+    label
 ,
     _
-(gl.label) AS l10n_label
+(label) AS l10n_label
 ,
-    gl.comment
+    comment
 ,
-    gl.sort_weight
+    sort_weight
 ,
-    gl.pk AS pk_gender_label
+    pk AS pk_gender_label
    
 FROM dem.gender_label gl;</pre>
 
@@ -130160,6 +130160,26 @@ BEGIN
 	return true;
 END;</pre>
 
+<hr>
+<h2>Function:
+  <a href="gnumed-entire_schema.html#gm.schema">gm</a>.<a name="gm.function.user-needs-md5-2-scramsha256-pwd-switch-user-text">user_needs_md5_2_scramsha256_pwd_switch(_user text)</a>
+</h2>
+<h3>Returns: boolean</h3>
+<h3>Language: PLPGSQL</h3>
+<p>Check if a given user needs to renew the password for making the encryption method switch.</p>
+<pre>
+BEGIN
+	PERFORM 1 FROM pg_authid WHERE
+		rolname = _user
+			AND
+		rolpassword LIKE 'md5%';
+	IF NOT FOUND THEN
+		RETURN FALSE;
+	END IF;
+	RAISE NOTICE 'gm.user_needs_md5_2_scramsha256_pwd_switch: account [%] needs to re-set password for encryption method switch', _user;
+	RETURN TRUE;
+END;</pre>
+
 <hr>
 <h2>Function:
   <a href="gnumed-entire_schema.html#gm.schema">gm</a>.<a name="gm.function.xid2int-xid">xid2int(xid)</a>
@@ -140782,27 +140802,27 @@ FROM (ref.atc a
 <!-- View Definition -->
 
 <pre>
-SELECT auto_hint.pk AS pk_auto_hint
+SELECT pk AS pk_auto_hint
 ,
-    auto_hint.query
+    query
 ,
-    auto_hint.recommendation_query
+    recommendation_query
 ,
-    auto_hint.title
+    title
 ,
-    auto_hint.hint
+    hint
 ,
-    auto_hint.url
+    url
 ,
-    auto_hint.is_active
+    is_active
 ,
-    auto_hint.source
+    source
 ,
-    auto_hint.lang
+    lang
 ,
-    auto_hint.popup_type
+    popup_type
 ,
-    auto_hint.highlight_as_priority
+    highlight_as_priority
 ,
     NULL::text AS rationale4suppression
 ,
@@ -140814,28 +140834,28 @@ SELECT auto_hint.pk AS pk_auto_hint
            (
                  (
                        (COALESCE
-                             (auto_hint.query
+                             (query
                                    ,''::text
                              ) || COALESCE
-                             (auto_hint.recommendation_query
+                             (recommendation_query
                                    ,''::text
                              )
                        ) || COALESCE
-                       (auto_hint.title
+                       (title
                              ,''::text
                        )
                  ) || COALESCE
-                 (auto_hint.hint
+                 (hint
                        ,''::text
                  )
            ) || COALESCE
-           (auto_hint.url
+           (url
                  ,''::text
            )
      )
 ) AS md5_sum
 ,
-    auto_hint.xmin AS xmin_auto_hint
+    xmin AS xmin_auto_hint
    
 FROM ref.auto_hint;</pre>
 
@@ -142155,22 +142175,22 @@ FROM (
 <!-- View Definition -->
 
 <pre>
-SELECT r_dp.pk AS pk_drug_product
+SELECT pk AS pk_drug_product
 ,
-    r_dp.description AS product
+    description AS product
 ,
-    r_dp.preparation
+    preparation
 ,
     _
-(r_dp.preparation) AS l10n_preparation
+(preparation) AS l10n_preparation
 ,
-    r_dp.atc_code AS atc
+    atc_code AS atc
 ,
-    r_dp.external_code
+    external_code
 ,
-    r_dp.external_code_type
+    external_code_type
 ,
-    r_dp.is_fake AS is_fake_product
+    is_fake AS is_fake_product
 ,
     
 (EXISTS 
@@ -142221,9 +142241,9 @@ SELECT row_to_json
      ) component_row
 ) AS components
 ,
-    r_dp.fk_data_source AS pk_data_source
+    fk_data_source AS pk_data_source
 ,
-    r_dp.xmin AS xmin_drug_product
+    xmin AS xmin_drug_product
    
 FROM ref.drug_product r_dp;</pre>
 
@@ -143979,31 +143999,31 @@ FROM (
 <!-- View Definition -->
 
 <pre>
-SELECT r_ke.pk AS pk_expansion
+SELECT pk AS pk_expansion
 ,
-    r_ke.fk_staff AS pk_staff
+    fk_staff AS pk_staff
 ,
-    r_ke.keyword
+    keyword
 ,
-    r_ke.textual_data AS expansion
+    textual_data AS expansion
 ,
-    r_ke.encrypted AS is_encrypted
+    encrypted AS is_encrypted
 ,
     
-(r_ke.binary_data IS NULL) AS is_textual
+(binary_data IS NULL) AS is_textual
 ,
     octet_length
-(r_ke.binary_data) AS data_size
+(binary_data) AS data_size
 ,
     
-(r_ke.fk_staff IS NULL) AS public_expansion
+(fk_staff IS NULL) AS public_expansion
 ,
     
-(r_ke.fk_staff IS NOT NULL) AS private_expansion
+(fk_staff IS NOT NULL) AS private_expansion
 ,
-    r_ke.owner
+    owner
 ,
-    r_ke.xmin AS xmin_expansion
+    xmin AS xmin_expansion
    
 FROM ref.keyword_expansion r_ke;</pre>
 
@@ -144563,15 +144583,15 @@ FROM (ref.substance r_s
 <!-- View Definition -->
 
 <pre>
-SELECT r_pt.pk AS pk_paperwork_template
+SELECT pk AS pk_paperwork_template
 ,
-    r_pt.name_short
+    name_short
 ,
-    r_pt.name_long
+    name_long
 ,
-    r_pt.external_version
+    external_version
 ,
-    r_pt.gnumed_revision
+    gnumed_revision
 ,
     
 (
@@ -144593,7 +144613,7 @@ SELECT _
 ) AS l10n_template_type
 ,
     COALESCE
-(r_pt.instance_type
+(instance_type
      , (
       SELECT r_ft.name
            
@@ -144605,7 +144625,7 @@ SELECT _
 ,
     COALESCE
 (_
-     (r_pt.instance_type)
+     (instance_type)
      , (
       SELECT _
            (r_ft.name) AS _
@@ -144616,21 +144636,21 @@ SELECT _
      )
 ) AS l10n_instance_type
 ,
-    r_pt.engine
+    engine
 ,
-    r_pt.in_use
+    in_use
 ,
-    r_pt.edit_after_substitution
+    edit_after_substitution
 ,
-    r_pt.filename
+    filename
 ,
         CASE
             WHEN 
-(r_pt.data IS NOT NULL) THEN true
+(data IS NOT NULL) THEN true
             ELSE false
         END AS has_template_data
 ,
-    r_pt.modified_when AS last_modified
+    modified_when AS last_modified
 ,
     COALESCE
 (
@@ -144643,14 +144663,14 @@ SELECT _
      )
      , (
            ('<'::text || 
-                 (r_pt.modified_by)::text
+                 (modified_by)::text
            ) || '>'::text
      )
 ) AS modified_by
 ,
-    r_pt.fk_template_type AS pk_template_type
+    fk_template_type AS pk_template_type
 ,
-    r_pt.xmin AS xmin_paperwork_template
+    xmin AS xmin_paperwork_template
    
 FROM ref.paperwork_templates r_pt;</pre>
 
@@ -145044,13 +145064,13 @@ FROM (ref.dose r_d
 <!-- View Definition -->
 
 <pre>
-SELECT r_s.pk AS pk_substance
+SELECT pk AS pk_substance
 ,
-    r_s.description AS substance
+    description AS substance
 ,
-    r_s.intake_instructions
+    intake_instructions
 ,
-    r_s.atc
+    atc
 ,
     ARRAY
 (
@@ -145076,7 +145096,7 @@ SELECT row_to_json
      ) loinc_row
 ) AS loincs
 ,
-    r_s.xmin AS xmin_substance
+    xmin AS xmin_substance
    
 FROM ref.substance r_s;</pre>
 
@@ -145244,18 +145264,18 @@ FROM ref.substance r_s;</pre>
 <!-- View Definition -->
 
 <pre>
-SELECT rti.pk AS pk_tag_image
+SELECT pk AS pk_tag_image
 ,
-    rti.description
+    description
 ,
     _
-(rti.description) AS l10n_description
+(description) AS l10n_description
 ,
-    rti.filename
+    filename
 ,
     octet_length
 (COALESCE
-     (rti.image
+     (image
            ,'\x'::bytea
      )
 ) AS size
@@ -145272,7 +145292,7 @@ SELECT rti.pk AS pk_tag_image
      )
 ) AS is_in_use
 ,
-    rti.xmin AS xmin_tag_image
+    xmin AS xmin_tag_image
    
 FROM ref.tag_image rti;</pre>
 
@@ -145986,27 +146006,27 @@ public expansion of the same keyword.</p>
 
 <pre>
 SELECT DISTINCT 
-ON (union_result.keyword) union_result.pk_expansion
+ON (keyword) pk_expansion
 ,
-    union_result.pk_staff
+    pk_staff
 ,
-    union_result.keyword
+    keyword
 ,
-    union_result.expansion
+    expansion
 ,
-    union_result.is_encrypted
+    is_encrypted
 ,
-    union_result.is_textual
+    is_textual
 ,
-    union_result.data_size
+    data_size
 ,
-    union_result.public_expansion
+    public_expansion
 ,
-    union_result.private_expansion
+    private_expansion
 ,
-    union_result.owner
+    owner
 ,
-    union_result.xmin_expansion
+    xmin_expansion
    
 FROM (
 SELECT r_ke.pk AS pk_expansion


=====================================
client/gnumed.py
=====================================
@@ -97,7 +97,7 @@ against. Please run GNUmed as a non-root user.
 	sys.exit(1)
 
 #----------------------------------------------------------
-current_client_version = '1.8.23'
+current_client_version = '1.8.24'
 current_client_branch = '1.8'
 
 _log = None


=====================================
client/wxpython/gmDocumentWidgets.py
=====================================
@@ -1402,7 +1402,11 @@ class cScanIdxDocsPnl(wxgScanIdxPnl.wxgScanIdxPnl, gmPlugin.cPatientChange_Plugi
 	#--------------------------------------------------------
 	def _on_update_file_description(self, result):
 		status, description = result
-		fname, source = self._LCTRL_doc_pages.get_selected_item_data(only_one = True)
+		item_data = self._LCTRL_doc_pages.get_selected_item_data(only_one = True)
+		if not item_data:
+			return
+
+		fname, source = item_data
 		txt = _(
 			'Source: %s\n'
 			'File: %s\n'



View it on GitLab: https://salsa.debian.org/med-team/gnumed-client/-/commit/a1f305dc2e98380a910146f61dc8bc54a2ac2ea6

-- 
View it on GitLab: https://salsa.debian.org/med-team/gnumed-client/-/commit/a1f305dc2e98380a910146f61dc8bc54a2ac2ea6
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/20260416/46865306/attachment-0001.htm>


More information about the debian-med-commit mailing list