From b97e0a6ac0b645d5b2676281be9e5edda60a89af Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Mon, 22 Sep 2014 10:28:29 -0400 Subject: [PATCH] Add find_bibliographic_id to NCIP::ILS. Signed-off-by: Jason Stephenson --- lib/NCIP/ILS.pm | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/lib/NCIP/ILS.pm b/lib/NCIP/ILS.pm index 9eecfdc..f8d917a 100644 --- a/lib/NCIP/ILS.pm +++ b/lib/NCIP/ILS.pm @@ -23,6 +23,9 @@ use NCIP::Const; use NCIP::Header; use NCIP::Problem; use NCIP::Response; +# For find_bibliographic_id: +use NCIP::Item::BibliographicItemId; +use NCIP::Item::BibliographicRecordId; =head1 NAME @@ -390,4 +393,60 @@ sub find_item_barcode { return (wantarray) ? ($barcode, $field) : $barcode; } +=head2 find_bibliographic_id + + $biblio_id = $ils->find_bibliographic_id($request); + +Finds a BibliograpicId in the request message and returns either +NCIP::Item::BibliographicItemId or NCIP::Item::BibliographicRecordId +depending upon which is found in the request. If no BibliographicId is +found, then it returns undef. + +=cut + +sub find_bibliographic_id { + my $self = shift; + my $request = shift; + + # Our return variable, so set this if we find an id. + my $id; + + my $message = $self->parse_request_type($request); + + # Find the BibliographicId in the xml. + my $idxml; + if ($request->{$message}->{BibliographicDescription}) { + $idxml = $request->{$message}->{BibliographicDescription}->{BibliograhicId}; + } else { + $idxml = $request->{$message}->{BibliographicId}; + } + if ($idxml) { + if ($idxml->{BibliographicRecordId}) { + my ($identifier, $agencyid, $code); + $identifier = $idxml->{BibliographicRecordId}->{BibliographicRecordIdentifier}; + $code = $idxml->{BibliographicRecordId}->{BibliographicRecordIdentifierCode}; + $agencyid = $idxml->{BibliographicRecordId}->{AgencyId}; + $id = NCIP::Item::BibliographicRecordId->new( + { + BibliographicRecordIdentifier => $identifier, + BibliographicRecordIdentifierCode => $code, + AgencyId => $agencyid + } + ); + } else { + my ($identifier, $code); + $identifier = $idxml->{BibliographicItemId}->{BibliographicItemIdentifier}; + $code = $idxml->{BibliographicItemId}->{BibliographicItemIdentifierCode}; + $id = NCIP::Item::BibliographicItemId->new( + { + BibliographicItemIdentifier => $identifier, + BibliographicItemIdentifierCode => $code + } + ); + } + } + + return $id; +} + 1; -- 2.43.2