Re: [Koha-devel] Availability in Koha Was: Re: [Koha-patches] [PATCH 2/2] Fixes bug 4481: Limit to Available filters out many available items.
On Mon, May 24, 2010 at 12:56 PM, Liz Rea <lrea@nekls.org> wrote:
While I agree with you that the 952$q as a measure of availability is legitimate, I still think Koha *does* need one place for external applications (like Autographics) to look for availability.
You say this as though "availability" were one thing. If it were, then I would agree it would make sense. For your purposes, I think maybe we are talking specifically about a new availability-for-ILL-checkout? Not holds? Not renewals? This is different than the other kinds of availability we listed, closest to "available for transfer-for-checkout", but afaik not otherwise represented in Koha. BTW, I forgot to add "available-for-renewal" in the availability matrix also. One question is whether ILL availability is always computable from other existing statuses. I.E, would a "virtual" field suffice? Previous implementation suggests that users desire individual manual control (i.e. notforloan, notforhold... in this case "notforILL") that lives at the data row level and is toggleable "actual" data. This makes transactions more of a pain, but hey, it's what users seem to want.
Our statewide system ties into at least 7 different kinds of automation systems, and according to information given to us by the statewide ILL team, Koha is the only one that doesn't give authoritative availability information in a single field. Whether that's correct or not I admit I don't have first hand data to support the assertion.
Any code or documentation we might use as a reference implementation?
Shortcomings of that system aside, in my mind a complex system like statewide ILL *should* only have to look at one field, instead of compute availability from 20 different places.
An ILL system might very well build logic that determines effective availability (and priority!) from it's own rules, involving geography, branch "system" affiliation, transfer costs, patron type/status, number of remaining copies (i.e., allow ILL as long as there is another copy on the shelf), balance of overall ILL transactions between branches or systems, round robin, age of the title since publication, age of the item since addition, etc. That is, in large part, the point of a separate ILL control system. If you want each discrete ILS to give one binary status, then the ILL system is not a controlling mechanism and it loses the ability to build more sophisticated rules.
Place the onus of computing availability on the client ILS, instead of on the ILL system. Why shouldn't we make it simple to interconnect these systems, especially since most (if not all) of the other ILS's do?
It is already possible (though arguably not "simple") to integrate disparate systems for resource sharing via SIP2. OCLC uses SIP2 extensively to fetch real-time item availability info, and that standard still differentiates between: - circ status - checkout/access fee type - checkout/access fee amount - hold queue length - date due - recall date - hold pickup date - other item properties (size, weight, etc) ILL systems can and should care about different things. And it's very nice to hear from you, Joe. :)
You too, Liz. --Joe
Hey Liz -- It sounds like you would be trying to code AutoGraphics logic into Koha. Another user group might prefer the granularity that currently exists, or use software that requires it. Broadly speaking, we can imagine "availability" many different ways:
available for checkout available for hold available for in house use available for pickup (on hold) available for transfer-for-checkout available for transfer-for-hold available for transfer-for-in-house-use available for recall available for electronic viewing available for electronic download
Then matrix out all those possibilities with available-for-free, available-for-fee, and available-to-certain-patron-types, etc. In my opinion, it is not logical or desirable for a system to compress all those values into one MARC subfield, for any purpose. Arguably the best standards-exposed item availability information is from the SIP2 Item Information (17/18) message pair, and that does not compress hold, checkout, recall and fine info. If you still want to pursue representation in MARC, it should not override the 952$q that for Koha otherwise just means date due. That info is still quite valuable in a distinct form. Ian, I agree with some of your premises, but I don't see how adding a sometimes-user-configurable status with partial overlap of other statuses and undefined interaction properties under undefined permissions controls would make things "clearer". Think about it this way: if AutoGraphics were another open source project, I'm pretty sure we would be talking about patching it, not Koha. Since it is not, and since it is in the company's financial interest and expertise to do so, I think this one is on them. --joe 2010/5/19 Liz Rea <lrea@nekls.org>
While we're talking about availability, thought I'd put this out there. Our statewide ILL system would really appreciate a single field for availability on items: a "yes, you can have that for ILL" or "No, I'm
sorry,
that item is lost, checked out, out for repair, local use only, In
or any one of the plethora of other reasons why this item isn't available." The statewide system currently uses AutoGraphics, which can only check one field. We are currently having them check the 952$q. Here's a brief rundown from the coordinator of the statewide ILL: "Since Koha puts status information into different subfields (rather
putting different statuses in the same subfield), we had to pick on subfield to look at. The KEGGr group decided that the best subfield to use was
On Mon, May 24, 2010 at 10:19 AM, Joe Atzberger <ohiocore@gmail.com> wrote: transit, than the
952$q. When an item is checked out, the date due appears in that subfield and AGent marks it as Not Available; if the $q is missing, the item is presumed available. My understanding is that other statuses such as Lost or In Transit appear in different subfields.
Other Z target catalogs use a single subfield for status information, so when we look in the 852$s (for example), we might see On Shelf, or Checked Out, or Lost, or Mending, etc. Since there's just a single place to look, we can determine all of the different statuses and route requests accordingly." I wanted to make sure that an authoritative availability field is added if availability is revamped. It would make our life a whole lot easier. Liz Rea NEKLS On May 19, 2010, at 7:53 AM, Ian Walls wrote:
Thanks! I was sure there was an explanation for why the code was originally commented out, and a more comprehensive system for determining 'availability' is definitely called for. I had some complaints from folks on our end that the link wasn't working at all, and the functionality I get by adding those lines back in is better for them that otherwise.
I'll temporarily make use of my patch for these folks until a better one is ready. Thanks for the update!
-Ian
On Tue, May 18, 2010 at 7:08 PM, LAURENT Henri-Damien <henridamien.laurent@biblibre.com> wrote:
Le 19/05/2010 00:04, Ian Walls a écrit :
From: Ian Walls <Ian.Walls@med.nyu.edu>
--- C4/Search.pm | 25 ++++++++++++------------- 1 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/C4/Search.pm b/C4/Search.pm index 229ee40..e7c9c76 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -1256,21 +1256,20 @@ sub buildQuery { my $group_OR_limits; my $availability_limit; foreach my $this_limit (@limits) { -# if ( $this_limit =~ /available/ ) { -# -## 'available' is defined as (items.onloan is NULL) and (items.itemlost = 0) -## In English: -## all records not indexed in the onloan register (zebra) and all records with a value of lost equal to 0 -# $availability_limit .= -#"( ( allrecords,AlwaysMatches='' not onloan,AlwaysMatches='') and (lost,st-numeric=0) )"; #or ( allrecords,AlwaysMatches='' not lost,AlwaysMatches='')) )"; -# $limit_cgi .= "&limit=available"; -# $limit_desc .= ""; -# } -# + if ( $this_limit =~ /available/ ) { + +# 'available' is defined as (items.onloan is NULL) and
(items.itemlost
= 0) +# In English: +# all records not indexed in the onloan register (zebra) and all records with a value of lost equal to 0 + $availability_limit .= +"( ( allrecords,AlwaysMatches='' not onloan,AlwaysMatches='') and (lost,st-numeric=0) )"; #or ( allrecords,AlwaysMatches='' not lost,AlwaysMatches='')) )"; + $limit_cgi .= "&limit=available"; + $limit_desc .= ""; + } + # group_OR_limits, prefixed by mc- # OR every member of the group -# elsif ( $this_limit =~ /mc/ ) { - if ( $this_limit =~ /mc/ ) { + elsif ( $this_limit =~ /mc/ ) { $group_OR_limits .= " or " if $group_OR_limits; $limit_desc .= " or " if $group_OR_limits; $group_OR_limits .= "$this_limit"; Hi Ian. Nahuel will work on a real fix for availability. Since at the moment customers are complaining (quite fairly) that availability cannot be at biblio level but should rather be at item level. And they are correct. But When indexing elements only at biblio level, we cannot provide them with the best accurate information. So Nahuel already did some work on that. But it need some improvement, which he will do soon.
participants (1)
-
Joe Atzberger