Bug 23173 - ILL should be able to search third party sources prior to request creation
Summary: ILL should be able to search third party sources prior to request creation
Status: Needs Signoff
Alias: None
Product: Koha
Classification: Unclassified
Component: ILL (show other bugs)
Version: master
Hardware: All All
: P5 - low enhancement (vote)
Assignee: Andrew Isherwood
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-06-21 07:55 UTC by Andrew Isherwood
Modified: 2019-11-11 14:47 UTC (History)
7 users (show)

See Also:
Change sponsored?: Sponsored
Patch complexity: ---
Who signed the patch off:
Text to go in the release notes:
Version(s) released in:


Attachments
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-07-11 13:24 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (33.06 KB, patch)
2019-07-11 13:25 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-08-09 08:58 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (33.12 KB, patch)
2019-08-09 08:58 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-03 09:40 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (41.20 KB, patch)
2019-09-03 09:40 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-03 13:55 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (41.42 KB, patch)
2019-09-03 13:55 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-06 12:39 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (41.50 KB, patch)
2019-09-06 12:39 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-10 15:33 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (43.11 KB, patch)
2019-09-10 15:33 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add unit tests (2.02 KB, patch)
2019-09-10 15:33 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-12 11:32 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (43.49 KB, patch)
2019-09-12 11:32 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add unit tests (2.02 KB, patch)
2019-09-12 11:32 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.47 KB, patch)
2019-09-25 09:55 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (44.68 KB, patch)
2019-09-25 09:55 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add unit tests (2.02 KB, patch)
2019-09-25 09:55 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.50 KB, patch)
2019-10-09 10:26 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (44.68 KB, patch)
2019-10-09 10:26 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add unit tests (2.02 KB, patch)
2019-10-09 10:26 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add ILLCheckAvailability syspref (3.50 KB, patch)
2019-11-11 14:46 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Provide core infrastructure (44.61 KB, patch)
2019-11-11 14:46 UTC, Andrew Isherwood
Details | Diff | Splinter Review
Bug 23173: Add unit tests (2.02 KB, patch)
2019-11-11 14:46 UTC, Andrew Isherwood
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Isherwood 2019-06-21 07:55:55 UTC
Currently, there is no integrated way of knowing if an item being requested is already available.

If a user creating a request wants to know if the item they are requesting is already available, it is necessary to search the, possibly, multiple sources the library has available (catalogue, discovery interface, open access provider etc.) first. The problem is further compounded if the institution has the unmediated ILL workflow enabled where a request can be placed with no oversight, even though the institution may already have access to it.

I propose a mechanism by which, during request creation, one or more "sources" are searched with the provided metadata to try and determine if the item being requested is already available and, if so, links to that item are provided. This behaviour will be optional, via a syspref.

"Sources" will be provided as Koha plugins and will provide the ability to accept metadata conforming to the established ILL schema, search the source with which they're concerned, and return results in a prescribed format. This will be performed via an API common to all "source" plugins. All plugins performing this task will be in a common plugin category and therefore enumerable.

The workflow for two backends:

Freeform:
- User fills in Freeform form, clicks submit button
- User is taken to an "Availability" page
- ILL enumerates source plugins that can service this type of request (mostly determined by material type) and makes search requests to each using provided metadata
- Displays results from each source, with links to matching items
- User can then either choose a result and be taken to it, or choose none and continue with the request as normal

BLDSS:
- Identical to above except the user will choose a BLDSS result rather than filling in the Freeform form

As part of this work, a source plugin, which will serve as a reference, will be provided.
Comment 1 Andrew Isherwood 2019-06-21 08:08:27 UTC
Just to clarify, in the above workflows, at the stage:

- User can then either choose a result and be taken to it, or choose none and continue with the request as normal

If no sources return any results, then the user would continue with the request as normal
Comment 2 Andrew Isherwood 2019-07-11 13:24:59 UTC
Created attachment 91464 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 3 Andrew Isherwood 2019-07-11 13:25:03 UTC
Created attachment 91465 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently two availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 4 Andrew Isherwood 2019-08-07 09:11:10 UTC
Test plan:

- Apply bug
- Enable the "ILLCheckAvailability" syspref
- Install the Unpaywall plugin and configure using your email addresss
- Ensure you have a work ILL setup with the FreeForm backend
- Create an article FreeForm request containing a valid DOI (ideally one that you know Unpaywall is aware of)
- Click "Submit" on the FreeForm request form
=> TEST: Observe that ILL now displays the availability of the requested item at Unpaywall
=> TEST: If an item is displayed, observe that clicking the item link takes you directly to the item
- Click the "continue creating your request" button
=> TEST: Observe that the request continues as normal
Comment 5 Andrew Isherwood 2019-08-09 08:58:36 UTC
Created attachment 92107 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 6 Andrew Isherwood 2019-08-09 08:58:40 UTC
Created attachment 92108 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently two availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 7 Andrew Isherwood 2019-08-09 08:59:05 UTC
Rebased on top of latest master and merge conflicts resolved
Comment 8 Andrew Isherwood 2019-09-03 09:40:56 UTC
Created attachment 92539 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 9 Andrew Isherwood 2019-09-03 09:40:59 UTC
Created attachment 92540 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently two availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 10 Andrew Isherwood 2019-09-03 13:55:29 UTC
Created attachment 92550 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 11 Andrew Isherwood 2019-09-03 13:55:33 UTC
Created attachment 92551 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently two availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 12 Andrew Isherwood 2019-09-06 12:39:50 UTC
Created attachment 92640 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 13 Andrew Isherwood 2019-09-06 12:39:53 UTC
Created attachment 92641 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 14 Andrew Isherwood 2019-09-09 12:33:07 UTC
Updated test plan:

- Apply bug
- Rebuild CSS
- Enable the "ILLCheckAvailability" syspref
- Ensure you have a working ILL setup with the FreeForm backend
- Ensure you have at least one ILL request partner set up. By default, this is patrons in the ILLLIBS category, who have a primary email defined.
- Install the Unpaywall availability plugin (https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall) and configure using your email addresss
- Install the z39.50 availability plugin (https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950) and configure at least one target. Ensure you specify the ID of at least one of your request partners, this creates a mapping between that target and the request partner

== Main availability searching
- Create an article FreeForm request containing a valid DOI (ideally one that you know Unpaywall is aware of)
- Click "Submit" on the FreeForm request form
=> TEST: Observe that ILL now displays the availability of the requested item at Unpaywall
=> TEST: If an item is displayed, observe that clicking the item link takes you directly to the item
- Click the "continue creating your request" button
=> TEST: Observe that the request continues as normal

== Request from partners availability searching
- On a request's "Manage request" screen, select "Place request with partners"
- On the "Place request with partners" screen, select at least one of the partners with which you associated a Z target in the plugin config
=> TEST: Observe that when a partner is selected, the "Search selected partners" button appears
- Click "Search selected partners"
=> TEST: Observe that the "Search partners" modal appears and upon the search completing, displays matching results for each all partners who are attached to a Z target.
Comment 15 Andrew Isherwood 2019-09-10 15:33:44 UTC
Created attachment 92693 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 16 Andrew Isherwood 2019-09-10 15:33:48 UTC
Created attachment 92694 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 17 Andrew Isherwood 2019-09-10 15:33:51 UTC
Created attachment 92695 [details] [review]
Bug 23173: Add unit tests

Test Koha::Illrequests::Availability
Comment 18 Andrew Isherwood 2019-09-12 11:32:38 UTC
Created attachment 92715 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 19 Andrew Isherwood 2019-09-12 11:32:42 UTC
Created attachment 92716 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 20 Andrew Isherwood 2019-09-12 11:32:45 UTC
Created attachment 92717 [details] [review]
Bug 23173: Add unit tests

Test Koha::Illrequests::Availability
Comment 21 Andrew Isherwood 2019-09-25 09:55:05 UTC
Created attachment 93146 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"
Comment 22 Andrew Isherwood 2019-09-25 09:55:08 UTC
Created attachment 93147 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 23 Andrew Isherwood 2019-09-25 09:55:11 UTC
Created attachment 93148 [details] [review]
Bug 23173: Add unit tests

Test Koha::Illrequests::Availability
Comment 24 Andrew Isherwood 2019-10-09 10:26:17 UTC
Created attachment 93909 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"

Sponsored-by: Public Health England
Comment 25 Andrew Isherwood 2019-10-09 10:26:20 UTC
Created attachment 93910 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 26 Andrew Isherwood 2019-10-09 10:26:23 UTC
Created attachment 93911 [details] [review]
Bug 23173: Add unit tests

Test Koha::Illrequests::Availability
Comment 27 Andrew Isherwood 2019-11-11 14:46:47 UTC
Created attachment 95268 [details] [review]
Bug 23173: Add ILLCheckAvailability syspref

This patch adds the new syspref "ILLCheckAvailability"

Sponsored-by: Public Health England
Comment 28 Andrew Isherwood 2019-11-11 14:46:53 UTC
Created attachment 95269 [details] [review]
Bug 23173: Provide core infrastructure

This patch adds the required infrastructure to enable ILL availability
plugins to intercept the request creation process and, using the
supplied metadata, search for and display possible relevant items from
whichever availability plugins are installed.

Currently three availability plugins exist:

z39.50 - Searches any number of the Koha instance's configured Z targets
https://github.com/PTFS-Europe/koha-plugin-ill-avail-z3950

EDS - Searches the EBSCO Discovery Service
https://github.com/PTFS-Europe/koha-plugin-ill-avail-eds

Unpaywall - Searches the Unpaywall API for possible open access versions
of the requested item
https://github.com/PTFS-Europe/koha-plugin-ill-avail-unpaywall

The Unpaywall plugin is intended to serve as a "reference" plugin as the
API it deals with is extremely simple
Comment 29 Andrew Isherwood 2019-11-11 14:46:59 UTC
Created attachment 95270 [details] [review]
Bug 23173: Add unit tests

Test Koha::Illrequests::Availability
Comment 30 Andrew Isherwood 2019-11-11 14:47:35 UTC
Needed a rebase