Download presentation
Presentation is loading. Please wait.
Published byAyanna Muscott Modified over 9 years ago
1
Using ATL/EMFTVM for import/export of medical data 8-Oct-2014, Dennis Wagelaar
2
2
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 ?
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.