Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
563c376
Adjusted REDCap Mapping to show rules correctly
ywarnecke Apr 22, 2026
15bdb4a
Bumped version to 3.3.5
ywarnecke Apr 22, 2026
1037ea2
Merge branch 'v3.3.5' into 297-export-rules-for-numbers-are-not-saved…
ywarnecke Apr 22, 2026
b6b86d5
Merge pull request #302 from imi-ms/297-export-rules-for-numbers-are-…
ywarnecke Apr 23, 2026
a911e32
Updated dependencies:
ywarnecke Apr 23, 2026
7bae3ac
Reverted separate org.hl7.fhir version
ywarnecke Apr 23, 2026
f6da252
Made FHIR tests more robust by removing messages from validation
ywarnecke Apr 24, 2026
c41df41
Rollback HAPI library to 8.6.x as validation was broken
ywarnecke Apr 24, 2026
363ee51
WIP
aluapaula Apr 24, 2026
996cc70
Merge pull request #303 from imi-ms/v3.3.5
ywarnecke Apr 24, 2026
35917a1
Update HL7 FHIR version support in README
ywarnecke May 18, 2026
6fe7907
Refactoring of Method saveScheduledEncounter in class EncounterContro…
aluapaula May 21, 2026
a25a72c
Refactoring of Method saveScheduledEncounter in class EncounterContro…
aluapaula May 22, 2026
11482c9
Refactoring of Method saveScheduledEncounter in class EncounterContro…
aluapaula May 22, 2026
039854b
Refactoring of Method saveScheduledEncounter in class EncounterContro…
aluapaula May 22, 2026
5b1b0f3
Implemented SurveyService to make controller cleaner
ywarnecke May 26, 2026
87c21ff
Adjusted encounter methods in controller
ywarnecke May 26, 2026
04502f4
Adjusted scheduled bundle selection view
ywarnecke May 26, 2026
77f41a0
Bumped version to 3.3.6
ywarnecke May 26, 2026
260667f
Merge branch 'v3.3.6' into 307-fix-layout-of-language-selection-page-…
ywarnecke May 26, 2026
068afbb
Implemented method to delete reference between export template and en…
ywarnecke May 27, 2026
28be49e
Adjusted mappedBy reference to reflect the attribute name
ywarnecke May 27, 2026
5b770ae
Refactored method; Added safety check for encounterTemplates
ywarnecke May 27, 2026
78f2a3e
Extracted versions to dependencyManagement; Updated dependencies
ywarnecke May 27, 2026
8f049ca
Re-added caffeine dependency
ywarnecke May 27, 2026
1be7869
Removed que-7 validation for stu3 for now
ywarnecke May 27, 2026
9bddebe
Merge branch 'v3.3.6' into 307-fix-layout-of-language-selection-page-…
ywarnecke May 27, 2026
3c00a4b
Merge branch 'v3.3.6' into 306-fix-deletion-of-finished-scheduled-enc…
ywarnecke May 27, 2026
9030533
Merge pull request #308 from imi-ms/307-fix-layout-of-language-select…
ywarnecke May 27, 2026
bc5770d
Merge branch 'v3.3.6' into 306-fix-deletion-of-finished-scheduled-enc…
ywarnecke May 27, 2026
8fc51ff
Merge pull request #309 from imi-ms/306-fix-deletion-of-finished-sche…
ywarnecke May 27, 2026
440adb8
Add tests for Audit, EncounterScheduled, ImmediateMail and Mail servi…
aluapaula May 28, 2026
32473fe
Merge pull request #310 from imi-ms/v3.3.6
ywarnecke May 29, 2026
256e628
Merge branch '304-add-api-for-automated-scheduled-encounters' into v3…
aluapaula May 29, 2026
7d6551a
refactor of @EncounterExporterTemplateHL7v2: extract message building…
aluapaula Jul 6, 2026
070d392
refactor of @EncounterExporterTemplateHL7v2: extract message building…
aluapaula Jul 6, 2026
12ec57a
implement new endpoint in EncounterController for downlaod of encount…
aluapaula Jul 9, 2026
7bca3ee
implement new EncounterExportService, that allows to get ExportConten…
aluapaula Jul 9, 2026
119fdf0
Update ExportTemplateType to provide file name extensions based on Ex…
aluapaula Jul 9, 2026
e980b40
implement new methods, that allow the export of ExportContent as Stri…
aluapaula Jul 9, 2026
11548b8
add config-controlled manual download button for HL7v2 exports
aluapaula Jul 9, 2026
3caeef5
Add getExportContent() for FHIR/ODM/REDCap exporters, fix download re…
aluapaula Jul 10, 2026
de98ee4
Add EncounterControllerDownloadExportTest and EncounterExportServiceD…
aluapaula Jul 16, 2026
0a7548c
Add getExportContent() in EncounterExporterTemplateREDCap to enable e…
aluapaula Jul 16, 2026
98a158b
Improve Rest-point for downloadEncounterTemplate:
aluapaula Jul 16, 2026
4a06099
Merge branch 'v3.4.0' into 262-add-config-to-allow-download-of-export…
aluapaula Jul 16, 2026
6ad6888
merge
aluapaula Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ MoPat is a web-based platform designed to transform conventional paper-based que
Currently MoPat supports the automatic export to the following data formats or systems:

- [CDISC ODM v1.3.2](https://www.cdisc.org/standards/data-exchange/odm)
- [HL7 FHIR R3](https://hl7.org/fhir/) (R4B coming soon)
- [HL7 FHIR (STU3, R4B, R5)](https://hl7.org/fhir/)
- [HL7 v2.3](https://www.hl7.org/implement/standards/product_brief.cfm?product_id=185)
- [REDCap v14+](https://www.project-redcap.org/)

Expand Down
3 changes: 2 additions & 1 deletion db/installationInit.sql
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,8 @@ INSERT INTO `configuration` (`id`, `type`, `configuration_group_id`, `parent`, `
(90, 'GENERAL', 11, 87, 9, 'FHIRViaHL7v2SendingFacility', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7SendingFacility', NULL, NULL, '87e35940-97e2-4c3e-ae6c-b35ea65717e3', '', NULL),
(91, 'GENERAL', 11, 87, 10, 'FHIRViaHL7v2ReceivingApplication', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7ReceivingApplication', NULL, NULL, 'd500a3a1-c1ce-4091-ace9-4557481dba37', '', NULL),
(92, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2ReceivingFacility', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7ReceivingFacility', NULL, NULL, '613cc529-396e-4a06-b785-158c15629d02', '', NULL),
(93, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2OBRFillerOrderNumber', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7OBRFillerOrderNumber', NULL, NULL, 'e78a6310-b2b1-4ee7-aea0-378ab33c3f73', '', NULL);
(93, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2OBRFillerOrderNumber', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7OBRFillerOrderNumber', NULL, NULL, 'e78a6310-b2b1-4ee7-aea0-378ab33c3f73', '', NULL),
(96, 'GENERAL', 1, NULL, 19, 'enableEncounterTemplateDownload', 'BOOLEAN', 'configuration.label.enableEncounterTemplateDownload', 'GLOBAL', 'configuration.label.enableEncounterTemplateDownload', NULL, NULL,'d8219938-021c-49b9-838e-1880b04e7e2e', false, NULL);



Expand Down
3 changes: 2 additions & 1 deletion db/installationInitTest.sql
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ INSERT INTO `configuration` (`id`, `type`, `configuration_group_id`, `parent`, `
(90, 'GENERAL', 11, 87, 9, 'FHIRViaHL7v2SendingFacility', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7SendingFacility', NULL, NULL, '87e35940-97e2-4c3e-ae6c-b35ea65717e3', '', NULL),
(91, 'GENERAL', 11, 87, 10, 'FHIRViaHL7v2ReceivingApplication', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7ReceivingApplication', NULL, NULL, 'd500a3a1-c1ce-4091-ace9-4557481dba37', '', NULL),
(92, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2ReceivingFacility', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7ReceivingFacility', NULL, NULL, '613cc529-396e-4a06-b785-158c15629d02', '', NULL),
(93, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2OBRFillerOrderNumber', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7OBRFillerOrderNumber', NULL, NULL, 'e78a6310-b2b1-4ee7-aea0-378ab33c3f73', '', NULL);
(93, 'GENERAL', 11, 87, 11, 'FHIRViaHL7v2OBRFillerOrderNumber', 'STRING', NULL, 'de.imi.mopat.io.impl.EncounterExporterTemplateFHIR', 'configuration.label.ODMviaHL7OBRFillerOrderNumber', NULL, NULL, 'e78a6310-b2b1-4ee7-aea0-378ab33c3f73', '', NULL),
(96, 'GENERAL', 1, NULL, 19, 'enableEncounterTemplateDownload', 'BOOLEAN', 'configuration.label.enableEncounterTemplateDownload', 'GLOBAL', 'configuration.label.enableEncounterTemplateDownload', NULL, NULL,'d8219938-021c-49b9-838e-1880b04e7e2e', false, NULL);


CREATE TABLE IF NOT EXISTS `clinic_configuration` (
Expand Down
54 changes: 54 additions & 0 deletions db/update/v3.4.0.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
USE
`moPat`;

ALTER TABLE moPat.configuration MODIFY COLUMN value TEXT DEFAULT NULL NULL;

UPDATE export_template
SET export_template_type = REPLACE(export_template_type, 'FHIR', 'FHIR_DSTU3')
WHERE export_template_type LIKE 'FHIR';

UPDATE moPat.export_template
SET export_template_type = 'HL7v2'
WHERE export_template_type = 'ORBIS';

SELECT id
INTO @ORBIS_CONFIG_GROUP
FROM moPat.configuration_group
WHERE label_message_code = 'configurationGroup.label.ORBIS' LIMIT 1;

SELECT id
INTO @HL7v2_CONFIG_GROUP
FROM moPat.configuration_group
WHERE label_message_code = 'configurationGroup.label.HLSeven' LIMIT 1;

UPDATE moPat.export_template
SET configuration_group = @HL7v2_CONFIG_GROUP
WHERE configuration_group = @ORBIS_CONFIG_GROUP;

DELETE
FROM moPat.configuration
WHERE label_message_code = 'configuration.label.exportOrbisPath';
DELETE
FROM moPat.configuration_group
WHERE label_message_code = 'configurationGroup.label.ORBIS';

ALTER TABLE question
ADD COLUMN is_just_info TINYINT(1) NOT NULL DEFAULT 0;

SELECT MAX(id)
INTO @largest_id
FROM moPat.configuration;

-- Configuration may change with changing groups added. Please make sure this fits to your server config.
-- Adjust configuration_group_id to fit to your FHIR config group. Copy the values for all available FHIR configs on the server
-- You can find the ids with this query:
-- SELECT id FROM moPat.configuration_group WHERE configuration_group.label_message_code LIKE '%FHIR';
-- On a server with no additional config groups, the id should be 11
INSERT INTO moPat.configuration (`id`, `type`, `configuration_group_id`, `parent`, `position`,
`attribute`, `configuration_type`, `description_message_code`,
`class`, `label_message_code`, `test_method`, `update_method`,
`uuid`, `value`, `pattern`)
VALUES (@largest_id + 1, 'GENERAL', 1, NULL, 19, 'enableEncounterTemplateDownload', 'BOOLEAN',
'configuration.label.enableEncounterTemplateDownload', 'GLOBAL',
'configuration.label.enableEncounterTemplateDownload', NULL, NULL,
'd8219938-021c-49b9-838e-1880b04e7e2e', false, NULL);
10 changes: 2 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-caching-caffeine</artifactId>
Expand All @@ -178,16 +179,9 @@
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
</exclusion>
<exclusion>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-client</artifactId>
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/de/imi/mopat/config/AppConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import de.imi.mopat.helper.controller.ClinicPatientDataRetrieverFactoryBean;
import de.imi.mopat.helper.controller.MailSender;
import de.imi.mopat.helper.controller.PatientDataRetriever;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect;
import org.apache.commons.lang.LocaleUtils;
import org.springframework.cache.CacheManager;
Expand Down Expand Up @@ -52,7 +56,8 @@
@ComponentScan(basePackages = {"de.imi.mopat.auth", "de.imi.mopat.config",
"de.imi.mopat.controller", "de.imi.mopat.cron", "de.imi.mopat.dao", "de.imi.mopat.helper.model",
"de.imi.mopat.helper.controller", "de.imi.mopat.io", "de.imi.mopat.io.impl", "de.imi.mopat.io.importer",
"de.imi.mopat.io.importer.fhir", "de.imi.mopat.io.importer.odm", "de.imi.mopat.model", "de.imi.mopat.validator"})
"de.imi.mopat.io.importer.fhir", "de.imi.mopat.io.importer.odm", "de.imi.mopat.model",
"de.imi.mopat.validator","de.imi.mopat.service"})

@PropertySources({
@PropertySource("classpath:mopat.properties"),
Expand Down
10 changes: 2 additions & 8 deletions src/main/java/de/imi/mopat/controller/BundleController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,13 @@
import de.imi.mopat.dao.AnswerDao;
import de.imi.mopat.dao.BundleDao;
import de.imi.mopat.dao.ConditionDao;
import de.imi.mopat.dao.ExportTemplateDao;
import de.imi.mopat.dao.QuestionnaireDao;
import de.imi.mopat.dao.ScoreDao;
import de.imi.mopat.dao.user.AclClassDao;
import de.imi.mopat.dao.user.AclObjectIdentityDao;
import de.imi.mopat.helper.controller.AuthService;
import de.imi.mopat.helper.controller.BundleService;
import de.imi.mopat.service.BundleService;
import de.imi.mopat.helper.controller.LocaleHelper;
import de.imi.mopat.helper.controller.UserService;
import de.imi.mopat.helper.controller.ClinicService;
import de.imi.mopat.helper.model.BundleDTOMapper;
import de.imi.mopat.helper.model.QuestionnaireDTOMapper;
import de.imi.mopat.service.ClinicService;
import de.imi.mopat.model.Answer;
import de.imi.mopat.model.Bundle;
import de.imi.mopat.model.BundleClinic;
Expand All @@ -26,7 +21,6 @@
import de.imi.mopat.model.conditions.SelectAnswerCondition;
import de.imi.mopat.model.conditions.SliderAnswerThresholdCondition;
import de.imi.mopat.model.dto.BundleDTO;
import de.imi.mopat.model.dto.BundleQuestionnaireDTO;
import de.imi.mopat.model.dto.QuestionnaireDTO;
import de.imi.mopat.validator.BundleDTOValidator;

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/de/imi/mopat/controller/ClinicController.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
import de.imi.mopat.helper.model.BundleDTOMapper;
import de.imi.mopat.helper.model.ClinicConfigurationDTOMapper;
import de.imi.mopat.helper.model.ClinicDTOMapper;
import de.imi.mopat.helper.controller.UserService;
import de.imi.mopat.service.UserService;
import de.imi.mopat.model.Bundle;
import de.imi.mopat.model.BundleClinic;
import de.imi.mopat.model.Clinic;
import de.imi.mopat.helper.controller.ClinicConfigurationMappingService;
import de.imi.mopat.helper.controller.ClinicConfigurationService;
import de.imi.mopat.helper.controller.ClinicService;
import de.imi.mopat.helper.controller.ConfigurationService;
import de.imi.mopat.service.ClinicConfigurationMappingService;
import de.imi.mopat.service.ClinicConfigurationService;
import de.imi.mopat.service.ClinicService;
import de.imi.mopat.service.ConfigurationService;
import de.imi.mopat.model.*;
import de.imi.mopat.model.dto.*;
import de.imi.mopat.model.user.User;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import de.imi.mopat.dao.ConditionDao;
import de.imi.mopat.dao.QuestionDao;
import de.imi.mopat.dao.QuestionnaireDao;
import de.imi.mopat.helper.controller.ConditionService;
import de.imi.mopat.service.ConditionService;
import de.imi.mopat.helper.model.BundleDTOMapper;
import de.imi.mopat.helper.model.ConditionDTOMapper;
import de.imi.mopat.model.Answer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.mchange.v1.db.sql.UnsupportedTypeException;
import de.imi.mopat.dao.ConfigurationDao;
import de.imi.mopat.dao.ConfigurationGroupDao;
import de.imi.mopat.helper.controller.ConfigurationService;
import de.imi.mopat.service.ConfigurationService;
import de.imi.mopat.helper.controller.MailSender;
import de.imi.mopat.helper.controller.MultiPartFileUploadBean;
import de.imi.mopat.helper.controller.StringUtilities;
Expand Down
Loading
Loading