Metadata Sharing Server Project
Assigned to: @SriHarsha Pamu
Mentor: @raff
Metadata Sharing Server has been renamed to Metadata Repository.
Background
The Metadata Sharing Module lets an administrator export a set of metadata (concepts, forms, locations, etc.) and publish it to a URL so that other OpenMRS implementations can import it and subsribe to future updates. In this model each OpenMRS server acts like a subscription server for clients. Clients download and import metadata from the given URL on the subscription server.
Purpose
The goal of this project is to create a central repository of metadata where OpenMRS installations can publish their metadata. The Metadata Sharing Server will store metadata from different OpenMRS servers and expose them to clients. Clients will be able to search through metadata packages and choose some to import and subscribe. In this model the Metadata Sharing Server will act as a central subscription server for clients.
Objectives
Implement the Metadata Sharing Server.
Allow for uploading metadata packages from a file and the Metadata Sharing Module.
List and search for metadata packages (based on indexed package headers).
Gather usage statistics and suggest the most popular packages first.
Authenticate OpenMRS installations while uploading packages and verify package publishing server information.
Modify the Metadata Sharing Module.
Allow for uploading metadata packages to the Metadata Sharing Server.
Add information about a publishing server (where it comes from) to a package.
Allow to import a selected version of a metadata package.
Search for metadata packages on the Metadata Sharing Server.
Contacts
@raff
@Darius Jazayeri
Do not hesitate to contact us, if you are interested in the project.
Requirements
Technologies
It should be possible to easily deploy the MDS server application on both Linux or Windows. The JVM is a preferred deployment environment, but it is not strictly required. Technologies used must be free and preferably open-source. The goal is to be able to deploy the MDS Server under mds.openmrs.org or any other server.Authentication
Each OpenMRS server has a unique implementation ID that should be used together with a password for the authentication process. We will only authenticate servers that want to upload metadata to the central repository. Importing should be possible for everyone without additional authentication. The authentication is thought as a way to confirm that the package comes from the given server so that someone who imports it can be sure that it is from a trusted source. We might allow for uploading a package without authentication, but it should be marked as not trusted. The authentication of subscribers is not planned in the first phase.Versioning
It should be possible to upload new versions of a package. A new version can be published only by someone who originally uploaded a package. It should be possible to import any version of the given package. Publishers should be able to unpublish any version of a package that was once published.
Scenarios
Using the web interface
Starting assumption
User with a web browser and an internet connection.
Exporting
The user has a metadata package zip file. The user navigates the browser to a valid metadata sharing server address. From the main page the user selects the option to upload a metadata package from file. The user is prompted for and enters their implementation ID and exporting password. If the impID password combination is accepted proceed to the next step otherwise re-prompt up to three times before proceeding to an error page. The user is then given a file upload dialog to select the package they want to upload. The package header is parsed for the package information and it is displayed to the user for confirmation. If the package header is corrupted the user is directed to an error page. If there is a namespace collision the user is notified that the upload failed because a package with the same name was already on the server. If the upload is successful the user is shown a confirmation message. From all cases the user is then returned to the main page.Importing
The user navigates the browser to a valid metadata sharing server address. From the main page the user selects the option to browse metadata packages available for download. The user is shown a tabbed list of available metadata packages. There are all, most popular, recent, and search tabs. These tabs contain tables showing the names of packages as well as their version number, labels, date uploaded, and number of times downloaded. Clicking on the package name will bring up a display including all the information parsed from the package header such as the package description. There will be a download link next to the package names which will download the corresponding package. When a package download is complete the user will be notified and returned to the main page.
Using the metadata sharing module
Starting assumption
User with a properly functioning OpenMRS implementation with an internet connection and the metadata sharing module installed. The metadata sharing module has been configured with the address of a valid metadata sharing server.
Exporting
The user accesses the metadata sharing module through the OpenMRS admin panel. The