+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
package NCIP::Item;
-use base qw(Class::Accessor);
+use parent qw(Class::Accessor);
-# Make accessors for the ones that makes sense
-NCIP::Item->mk_accessors(qw(itemid ils));
+=head1 NAME
-# Call the apppropriate subroutine in the ILS specific code and get the data
+Item - Defined as ItemInformation in z39.83-1-2012
-sub itemdata {
- my $self = shift;
- my $ils = $self->ils;
- my ( $itemdata, $error ) = $ils->itemdata( $self->itemid );
+=head1 SYNOPSIS
-# add anything NCIP specific not handled by the ILS to the itemdata object at this point, if no error
- return $itemdata, $error;
-}
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 ItemId
+
+Optional NCIP::Item::Id object.
+
+=head2 RequestId
+
+Optional array of NCIP::RequestId objects.
+
+This field occurs only if Problem is not present in the same Item
+Information.
+
+=head2 CurrentBorrower
+
+Optional NCIP::User::Id object specifying the user to whom the item is
+currently charged.
+
+=head2 DateDue
+
+Optional date/time indicating the due date of the item.
+
+=head2 DateRecalled
+
+Optional date/time indicating the date and time of an item recall.
+
+=head2 HoldPickupDate
+
+Optional date/time indicating when a hold expires for the given item
+and user.
+
+=head2 ItemTransaction
+
+Not currently implemented.
+
+=head2 ItemOptionalFields
+
+Optional NCIP::Item::OptionalFields object.
+
+This field occurs only if Problem is not present in the same Item
+Information.
+
+=head2 ItemNote
+
+Text string that provides data additional to that provide in other
+data elements that comprise Item Information.
+
+Occurs 0 or 1 time but only if Problem is not present in the same Item
+Information.
+
+=head2 Problem
+
+Optional NCIP::Problem object to describe some problem with the item request.
+
+Occurs 0 or more times but only if Request Id, Current Borrower,
+Current Requester, Date Due, Date Recalled, Hold Pickup Date, Item
+Transaction, Item Optional Fields, and Item Note are not present in
+the same Item Information element.
+
+=cut
+
+NCIP::Item->mk_accessors(
+ qw(
+ ItemId
+ RequestId
+ CurrentBorrower
+ DateDue
+ DateRecalled
+ HoldPickupDate
+ ItemTransaction
+ ItemOptionalFields
+ ItemNote
+ Problem
+ )
+);
1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::BibliographicDescription;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+BibliographicDescription - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 Author
+
+Optional text string for the name of person or corporate body
+responsible for the intellectual or artistic content of an Item,
+including composers, creators, or originators of an Item.
+
+=head2 AuthorOfComponent
+
+Optional text string for the name of the author of a bibliographic
+item that is a component part of another item.
+
+=head2 BibliographicItemId
+
+Optional NCIP::Item::BibliographicItemId object.
+
+=head2 BibliographicRecordId
+
+Optional NCIP::Item::BibliographicRecordId object.
+
+=head2 ComponentId
+
+Optional NCIP::Item::ComponentId object.
+
+=head2 Edition
+
+Optional text string for the edition statement that identifies all the
+copies of an item produced from one master copy or substantially the
+same type image, having the same contents, and, in the case of
+non-book materials, issued by a particular publishing agency or group
+of such agencies.
+
+=head2 Pagination
+
+Optional text string that gives number of pages or leaves in an item
+or a component part of an item.
+
+=head2 PlaceOfPublication
+
+Optional text string that gives geographic location of the publisher,
+or failing this, of the printer, distributor, or manufacturer.
+
+=head2 PublicationDate
+
+Optional text string that gives date of issue of an item as designated
+by the publisher.
+
+=head2 PublicationDateOfComponent
+
+Optional text string that gives publication date assigned by the
+publisher to the component of an item.
+
+=head2 Publisher
+
+Optional text string to indicate the name of the publisher of an item.
+
+=head2 SeriesTitleNumber
+
+Optional text string representing the name given to a group of
+separate publications related to one another by the fact that each
+bears a collective title applying to the group or subgroup as a whole
+as well as its own title, and the number within that series assigned
+to one of the pieces.
+
+=head2 Title
+
+Optional text giving the title of the item.
+
+=head2 TitleOfComponent
+
+Optional text string for the title of an item that is a component part
+of another item, such as a chapter of a book, or a journal article,
+etc.
+
+=head2 BibliographicLevel
+
+Optional text string for the bibliographic description of the item:
+monograph, serial, collection.
+
+=head2 SponsoringBody
+
+Optional text string for the name of the body sponsoring the work.
+
+=head2 ElectronicDataFormatType
+
+Option text string identifying the format of electronic data: tiff,
+rtf, jpeg, mpeg, etc.
+
+=head2 Language
+
+Optional text string that identifies the language of the item.
+
+=head2 MediumType
+
+Optional text string for the medium on the item has been produced:
+audio tape, book, machine-readable computer file, compact disc, etc.
+
+=cut
+
+NCIP::Item::BibliographicDescription->mk_accessors(
+ qw(
+ Author
+ AuthorOfComponent
+ BibliographicItemId
+ BibliographicRecordId
+ ComponentId
+ Edition
+ Pagination
+ PlaceOfPublication
+ PublicationDate
+ PublicationDateOfComponent
+ Publisher
+ SeriesTitleNumber
+ Title
+ TitleOfComponent
+ BibliographicLevel
+ SponsoringBody
+ ElectronicDataFormatType
+ Language
+ MediumType
+ )
+);
+
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::BibliographicItemId;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+BibliographicItemId - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 BibliographicItemIdentifier
+
+Text string that provides a resource identifier for the bibliographic
+item.
+
+=head2 BibliographicItemIdentifierCode
+
+Optional text string that identifies the source of resource identifier
+associated with the bibliographic item: ISBN, ISSN, ISRC, ISMN, UPC,
+GTIN, Legal Deposit Number, Government Publication Number, etc.
+
+=cut
+
+NCIP::Item::BibliographicItemId->mk_accessors(
+ qw(
+ BibliographicItemIdentifier
+ BibliographicItemIdentifierCode
+ )
+);
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::BibliographicRecordId;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+BibliographicRecordId - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+Bibliographic Record Id consists of Bibliographic Record Identifier
+and a choice of either Bibliographic Record Identifier Code OR Agency
+Id.
+
+Occurs 0 or more times.
+
+None of these component elements are repeatable.
+
+=head1 FIELDS
+
+=head2 BibliographicRecordIdentifier
+
+Text string that identifies the machine-readable record that describes
+a bibliographic item.
+
+Occurs 1 and only 1 time.
+
+=head2 AgencyId
+
+In this context, identifies the Agency that is the source of the
+bibliographic record when that Agency is not listed explicitly as a
+value in the Bibliographic Record Identifier Code.
+
+Occurs 1 and only 1 time, but only if Bibliographic Record Identifier
+Code is not present.
+
+=head2 BibliographicRecordIdentifierCode
+
+Text string to identify the numbering scheme that uniquely identifies
+a bibliographic record. Code values are usually associated with
+national bibliographies or bibliographic utilities.
+
+Occurs 1 and only 1 time, but only if Agency Id is not present.
+
+Examples: ANBN (Australian National Bibliography Number), BNBN
+(British National Bibliography Number), LCCN (Library of Congress
+Control Number)
+
+=cut
+
+NCIP::Item::BibliographicRecordId->mk_accessors(
+ qw(
+ BibliographicRecordIdentifier
+ AgencyId
+ BibliographicRecordIdentifierCode
+ )
+);
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::ComponentId;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+ComponentId - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 ComponentIdentifierType
+
+Text string that identifies a component part of a bibliographic item.
+
+=head2 ComponentIdentifier
+
+Text string that identifies component part of another bibliographic
+item.
+
+=cut
+
+NCIP::Item::ComponentId->mk_accessors(
+ qw(
+ ComponentIdentifierType
+ ComponentIdentifier
+ )
+);
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::Description;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+Description - As described in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 CallNumber
+
+Optional text string for the call number of the item.
+
+=head2 CopyNumber
+
+Optional text string to identify the copy number of the item.
+
+=head2 ItemDescriptionLevel
+
+Optional text string to indicate the level at which the item is
+described, for example: work, copy or piece.
+
+=head2 HoldingsInformation
+
+This optional field is not supported by NCIPServer at this time. If
+you fill in any information for it, that information will be ignored.
+
+=head2 NumberOfPieces
+
+Optional integer to specify the number of pieces that comprise this
+item.
+
+=cut
+
+NCIP::Item::Description->mk_accessors(
+ qw(
+ CallNumber
+ CopyNumber
+ ItemDescriptionLevel
+ HoldingsInformation
+ NumberOfPieces
+ Ext
+ )
+);
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::OptionalFields;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+OptionalFields - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 BibliographicDescription
+
+Optional NCIP::Item::BibliographicDescription object.
+
+=head2 ItemUseRestrictionType
+
+Optional text string to indicate special usage rules or restrictions
+on the item.
+
+=head2 CirculationStatus
+
+Optional text string to indicate the current availability of a
+bibliographic item: available, on loan, lost, etc.
+
+=head2 HoldQueueLength
+
+Optional, non-negative integer for the number of user who currently
+have a hold on the item.
+
+=head2 DateDue
+
+Optional date value that specifies the time when the loan of an item
+will end.
+
+=head2 ItemDescription
+
+Optional NCIP::Item::Description object.
+
+=head2 Location
+
+Not currently implemented.
+
+=head2 PhysicalCondition
+
+Optional NCIP::Item::PhysicalCondition object.
+
+=head2 ElectronicResource
+
+Not currently implemented.
+
+=head2 SecurityMarker
+
+Optional text sting to specify the type of security used on an item.
+
+=head2 SensitizationFlag
+
+Set to 1 when the item should be desensitized or re-sensitized during
+check out and check in.
+
+=head2 Ext
+
+=cut
+
+NCIP::Item::OptionalFields->mk_accessors(
+ qw(
+ BibliographicDescription
+ ItemUseRestrictionType
+ CirculationStatus
+ HoldQueueLength
+ DateDue
+ ItemDescription
+ Location
+ PhysicalCondition
+ ElectronicResource
+ SecurityMarker
+ SensitizationFlag
+ Ext
+ )
+);
+
+1;
--- /dev/null
+# ---------------------------------------------------------------
+# Copyright © 2014 Jason J.A. Stephenson <jason@sigio.com>
+#
+# This file is part of NCIPServer.
+#
+# NCIPServer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# NCIPServer is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with NCIPServer. If not, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------
+package NCIP::Item::PhysicalCondition;
+
+use parent qw(Class::Accessor);
+
+=head1 NAME
+
+PhysicalCondition - As defined in z39.83-1-2012
+
+=head1 SYNOPSIS
+
+
+
+=head1 DESCRIPTION
+
+=head1 FIELDS
+
+=head2 PhysicalConditionType
+
+Required text string that describes the physical condition of the
+item.
+
+=head2 PhysicalConditionDetails
+
+Optional text string to provide more details about the physical
+condition of the item.
+
+=cut
+
+NCIP::Item::PhysicalCondition->mk_accessors(
+ qw(
+ PhysicalConditionType
+ PhysicalConditionDetails
+ )
+);
+
+1;