1. Metadata Sharing Module
for OpenMRS
Google Summer of Code 2010
Metadata Sharing Module - Rafał Korytkowski - 2010
2. Team
• Mentors: Darius Jazayeri & Jeremy Keiper
• Student: Rafał Korytkowski
Metadata Sharing Module - Rafał Korytkowski - 2010
3. What is it all about?
„In OpenMRS, we distinguish between data and metadata within our data
model. Metadata represent system and descriptive data such as data types -
a relationship type or encounter type. Metadata are generally referenced by
clinical data but don't represent patient-specific data themselves. This
provides a default abstract implementation of the OpenmrsMetadata
interface.” [src: org.openmrs.OpenmrsMetadata, javadoc]
• Metadata examples: locations, roles, order types,
forms, reports, etc.
• Most of them implement OpenmrsMetadata interface
(except concepts)
• Sharing use case: User A has defined 100 locations in
Kenya and User B needs them as well, but does not
have resources to define them himself. A way to
export & import locations is needed.
Metadata Sharing Module - Rafał Korytkowski - 2010
4. Our goals
• First release goals (GSoC „must have”):
• Export a package of metadata as a file
• Import a packaged file
• Second release goals:
• Publish a packaged file
• Subscribe to a published package
• Check for updates on subscribed packages
(Possible integration with Remote Data
Transfer Module by Kenny MacDonald)
Metadata Sharing Module - Rafał Korytkowski - 2010
5. Progress 1/2
• First release goals (GSoC „must have”):
• Export a package of metadata as a file
• Scan the classpath for metadata [done]
• Serialize metadata to XML [done]
• Indetify dependencies
• Referenced objects [done]
• Custom dependencies (e.g. defined in an XML
field in html forms) [not done]
• Package metadata in a zip file [done]
• Store packages in the DB and allow for downloads
[done]
Metadata Sharing Module - Rafał Korytkowski - 2010
6. Progress 2/2
• Import a packaged file
• Upload packaged matadata [done]
• Process metadata before import [not done]
• Choose items to import [not done]
• Merge imported metadata with existing items
[not done]
• Identify conflicts [not done]
• Deserialize metadata [done]
• Persist metadata in the database using proper
OpenMRS services [done]
Metadata Sharing Module - Rafał Korytkowski - 2010