Tales from the Tech Side: A look at Doctor or Doctress from our developer
-by guest blogger Chris Clement, Library Applications Developer, Drexel University Libraries
Doctor or Doctress is a digital history project that enables students to to understand and interpret history through the eyes of early women physicians by using primary sources. While much has been said about the content, the development and underlying technologies of the site have not been discussed.
Doctor or Doctress is built on top of a piece of software called Islandora, which provides a user-friendly interface that allows the addition of content to the underlying repository software, Fedora. The content in Doctor or Doctress is broken down into stories, which are comprised of a timeline, a set of documents (images, books, audio, and video), and textual/narrative information. Each story and document in Islandora is a Fedora object that has a unique persistent identifier (PID) and a set of datastreams, which store the content of the uploaded document and any additional data associated with that object. The largest technical challenges of building this site were getting multiple types of content to display on a single page, integrating a timeline into each story, and tying everything together through administrative interfaces.
When I first started work on Doctor or Doctress, displaying multiple types of content on a single page in Islandora was not something I had seen done. Every object in Islandora has a content type associated with it (PDF, large image, video, etc.) To handle the unique display requirements, I created a new “story” content type. Story objects have additional custom datastreams that specify the IDs of related documents, story- and document-level metadata, and timeline data. I also created custom layouts for stories and documents to allow the display of images, video/audio players, and book readers on the same page. These layouts were loosely based on default layouts for individual content types.
Similar to displaying multiple content types on a single page, timeline integration and display was another feature I had failed to find on any other Islandora site. After reviewing the features and capabilities of various timeline tools and libraries with the Legacy Center staff, we settled on Timeglider, a Javascript-based tool for creating timelines. To integrate Timeglider with Islandora, I implemented a mechanism to transform timeline data associated with a story into JSON, a format understandable by Timeglider. This mechanism took into account special timeline events that were associated with a story document, displaying that document’s thumbnail along the top of the timeline above the corresponding event. Additionally, I wrote a custom event handler to define a custom popup window to appear when users click story document events.
Designing a way to allow administrators to create new stories, associate documents, and populate timelines was not trivial. Islandora provides a tool for building web forms for gathering data from users and populating whole datastreams when adding an object. For story creation and document association, I created a standard story-level metadata form, as well as a document-level metadata form, and set them up to populate custom datastreams on the story object. I designed an interface for populating the timeline for a story as well, allowing administrators to manage events, specifying a number of parameters such as start date, end date, title, description, and an option to link a story document to an event.
Working on Doctor or Doctress was very rewarding. The unique nature of the site, combined with the underlying technologies, provided a set of interesting challenges to overcome. Tough decisions had to be made, but I think the end result speaks for itself. I am proud to have been a part of this project, and look forward to seeing it continue to grow.
Check out Doctor or Doctress here! You can follow Chris on Twitter @Null_is_Null