It's remarkably small too, about 1400 lines of Java and an XSL transform that lets me customize the way the WSDL is built. I spent about 15 of the 20 hours trying to figure out how to deal with the transmission infrastructure, before I gave up and punted.
The application uses the PubDB file created by the publishing facilitator for any given workgroup. Principally what it extracts from that database are relationships between the application roles and the interactions. These are then written to an XML document, which is finally transformed via an XSLT transform into the WSDL output.
There's probably a dozen places where I've done something wrong, have misunderstood the intent behind HL7 transmission infrastructure, the mapping between messages in HL7 Version 3, and elsewhere. However, I think its a useful start. Certainly it will save me some work in the future. Who knows, maybe someday this tool will actually be used during the build process of the HL7 Version 3 Standards to generate WSDLs automatically.
If you are interested, the complete project is in HL7V3WSDL.zip.
HL7V3WSDLGenerator is a rather simple software application that is designed to automatically generate WSDL files from HL7 Version 3 artifacts. To use this software you need only two more things:
- A copy of the publication database for the domain you want to build a WSDL for
- A Java Virtual Machine that supports Java 1.5 or later.
Installing the sofware is simple, just unzip the file to your hard drive. Running it is equally simple. From the folder where you installed the software, type in
Where PubDb.mdb is the location of a PubDB file. Don't have one? You can find the ones used for each ballot cycle here: http://www.hl7.org/v3ballot/html/ (Just click on Source Files for the appropriate cycle, then domains and finally download one of the database zip files you find there; see here for an example).
Source code and documentation are provided, however I must note that support is not:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
I'm planning on moving this into HL7 G-Forge or OHT in the future. I'm also going to update the stylesheet (actually provide an alternate) to support IHE style WSDL files using ITI Volume II Appendix V rules. If you understood that, you need to get out more often.