The biblio module is designed to track references/citations. That is an extremely valuable feature set that I hope to leverage in a number of ways. The information below has been collected as part of the planning process for a new module (implementation has not yet started).
There are many different ways to reference a specific piece of content. Unifying all of the identifiers is challenging with the unregulated development of new schemas. Here are a few of the key identifiers for peer-reviewed medical content:
- DOI: The DOI uses the handle system, which is a distributed system for read access.
- PMID and PMCID: The PubMed (see Entrez) and PubMed Central systems both provide their own IDs.
Different Reference List Exports
- For CrossRef's cross-link program
- For PubMed Central's ref-list:
- For PubMed/Medline references:
Building a Biblio Reference List from Unstructured Citations
Starting with a bulleted list of citations, I want to end up with biblio nodes that are referenced using Node Reference (yes, I'm still in D6). My search of existing modules identified two potential modules: Node Reference Create, and Popups: Add and Reference. However, neither is quite there for this particular purpose. The ideal module would split the bullets (citations) into different field instances and then store the citations with the instance. Thus, each instance would either be a node reference or the details necessary for a user to create a node reference. The modules I found either auto-create a node (by setting the title) or just facilitate a user's manual creation of a node within the workflow of referencing the node. The trick with the new module implementation will be allowing the new field type to continue to leverage the existing Node Reference plugins for Views. The new module will need to follow a rough 4-step process:
Step 1: Split bullets into separate CCK field instances. This is primarily an interface change, although the splitting could happen on the server too. The individual references are now stored in a text column for each instance.
Step 2: Attempt to auto-convert the references into biblio nodes. There are three different sources that could reliably (with a margin of error) convert the reference code into an appropriate node reference:
- Examine past usage of the reference. Identical references should point at the same biblio nodes.
- Use CrossRef's web service to find a DOI based on a formatted citation. There is a free online version of the form for testing, but the module would need to rely on the web service version available via POST. Initial testing identified that a space must be inserted after semi-colons for the web service to ever return a successful matching result. There is an enhanced version via external service, but that enhanced version has usage limits and does not implement a web service interface.
Use PubMed Entrez to search for any indexed articles. Searching by journal name, year, volume, issue and page number (the last pieces of the citation) should always yield 0 or 1 result, and it that information can be reliably extracted from the end of an AMA-formatted citation.
Example link: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?
- Example extracted from: Matson JL, Neal D. Psychotropic medication use for challenging behaviors in persons with intellectual disabilities: an overview. Res Dev Disabil. 2009;30(3):572-86.
- Example link: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?
Step 3: Auto-create nodes when possible. In conjunction with other biblio enhancements, creating a biblio node from DOI or PMID or PMCID should be possible without human involvement.
Step 4: Allow user review of auto-creation and facilitate manual creation of biblio nodes for those citations that could not be automatically created.