Presentation is loading. Please wait.

Presentation is loading. Please wait.

Using ATL/EMFTVM for import/export of medical data 8-Oct-2014, Dennis Wagelaar.

Similar presentations


Presentation on theme: "Using ATL/EMFTVM for import/export of medical data 8-Oct-2014, Dennis Wagelaar."— Presentation transcript:

1 Using ATL/EMFTVM for import/export of medical data 8-Oct-2014, Dennis Wagelaar

2 2

3

4 Import/export a common programming scenario SuMEHR GPSMF PMF Corilus XML SuMEHR GPSMF PMF Corilus XML 4

5 Corilus XML as pivot model SuMEHR GPSMF PMF Corilus XML 5

6 Corilus XML as pivot model SuMEHR GPSMF PMF Corilus XML 6

7 Import/export simplified Corilus XML 7

8 Why ATL? (ATL Transformation Language) Domain-specific language for transformation More expressive than mapping frameworks embedded in Java, e.g. Dozer Less verbose for transformations than general- purpose languages Uses OCL standard for expressions Uses EMF for data representation Closely related to plain Java objects Enriched with additional concepts, e.g. containment and associated properties 8

9 Why EMFTVM? (EMF Transformation Virtual Machine) Enhanced for “online” use (performance) Reuse pre-loaded transformations for multiple executions JIT compiler translates to Java bytecode Adaptive matching algorithm adds performance Improved modularity Supports multiple rule inheritance across different modules Supports module import across different source languages 9

10 Why EMFTVM? (EMF Transformation Virtual Machine) 10 https://wiki.eclipse.org/ATL/EMFTVM

11 EMF vs. POJOs Uses EMF Models Plain Old Java Objects (JPA) 11

12 EMF vs. POJOs This is what we have... (JPA) Uses Plain Old Java Objects 12

13 From POJOs to EMF MoDisco and EMiFy Java ModelReverse EngineerPlain Old Java Objects 13

14 From POJOs to EMF MoDisco and EMiFy Java Model Ecore Model EMiFy.atl 14

15 From POJOs to EMF MoDisco and EMiFy Ecore Model Generate Model EMF Java Objects 15

16 From POJOs to EMF MoDisco and EMiFy Java Model Ecore Model EMiFy.atl Reverse Engineer Generate Model EMF Java Objects 16

17 Using ATL 17

18 Using ATL 18

19 Using ATL Implicit tracing 19

20 Using ATL Implicit tracing 20

21 Using ATL Collaboration 21.NET developerJava developer Common: 178 lines of ATL code Import: 7283 lines of ATL code Export: 4617 lines of ATL code 4906 lines of Java import/export code

22 Runtime performance 22 03-10-2014 | 13:57:19,223 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.rs.ImportResource | Import partial document 504 03-10-2014 | 13:57:19,307 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Start full import for... 03-10-2014 | 13:57:20,006 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Starting transformation... 03-10-2014 | 13:57:21,099 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.emftvm.impl.AbstractEMFTVMTransformer | Timing data: Loading finished at 0,000036 seconds (duration: 0,000036 seconds) Matching finished at 0,285989 seconds (duration: 0,285953 seconds) Applying finished at 1,091511 seconds (duration: 0,805522 seconds) Post-applying finished at 1,091712 seconds (duration: 0,000201 seconds) Recursive stage finished at 1,091751 seconds (duration: 0,000039 seconds) Execution finished at 1,091915 seconds (duration: 0,000203 seconds) 03-10-2014 | 13:57:21,118 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 1 Patient instances 03-10-2014 | 13:57:21,155 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 3 ExternalUser instances 03-10-2014 | 13:57:21,156 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 1 HealthInsurance instances 03-10-2014 | 13:57:21,161 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 138 Contact instances 03-10-2014 | 13:57:21,282 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 33 Episode instances 03-10-2014 | 13:57:21,316 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 33 HealthApproach instances 03-10-2014 | 13:57:21,349 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 553 SubContact instances 03-10-2014 | 13:57:21,925 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 2 ContactPerson instances 03-10-2014 | 13:57:23,240 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 1 Vaccination instances 03-10-2014 | 13:57:23,255 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 134 NormalMedicationEntry instances 03-10-2014 | 13:57:23,649 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 4 MagistralMedicationEntry instances 03-10-2014 | 13:57:23,673 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 138 FreeTextPosology instances 03-10-2014 | 13:57:24,041 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 224 SOEPRule instances 03-10-2014 | 13:57:24,473 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 78 Letter instances 03-10-2014 | 13:57:25,416 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 30 LabResult instances 03-10-2014 | 13:57:25,495 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 776 LabResultEntry instances 03-10-2014 | 13:57:28,533 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 51 ParameterGroup instances 03-10-2014 | 13:57:28,657 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 72 ParameterGroupEntry instances 03-10-2014 | 13:57:28,992 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 3 SickLeave instances 03-10-2014 | 13:57:29,023 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.services.impl.CorilusXMLImportServiceImpl | Processing 2 Note instances 03-10-2014 | 13:57:33,992 | INFO | http-0.0.0.0-8080-4 | be.healthconnect.emr.server.rs.ImportResource | Finished import partial document 504 in 14.768414891 XML loading 0,7 sec Transformation 1,1 sec Hibernate storage 12,9 sec Medium-large patient file (2277 record entries)

23 Conclusion We tackled a complex and common programming scenario such as import/export by breaking it up in three ways: 23 Use specialised language for translating between domain model and pivot model Use regular Java to handle file I/O and database interaction Use pivot model for import/ export => only support a single import/export format XML

24 24 Questions? http://www.healthconnect.be/ http://www.corilus.be/ http://www.careconnect.be/ Questions ?


Download ppt "Using ATL/EMFTVM for import/export of medical data 8-Oct-2014, Dennis Wagelaar."

Similar presentations


Ads by Google