FOLIO inventory fields used by the Z39.50 server
Introduction
The FOLIO Z39.50 server fetches from mod-graphql a representation of an instance together with its holdings and their items. This is used in two ways: to generate the holdings part of OPAC XML records; and to furnish the data from which MARC holdings information is inserted into MARC records.
In both cases, the form of the data that is used is what's generated by the makeHoldingsRecords function in Net::Z3950::FOLIO::HoldingsRecords, so we can determine from that function (and its subfunctions) which fields from the GraphQL response are actually used.
Instance level
Notably, no fields at all from the instance record are used, since equivalent information is always included in the MARC record obtained from SRS and which is included as the bibliographicRecord part of OPAC records.
The makeHoldingsRecords function shows that the only relevant part of the instance record is the array of holdings objects:
| OPAC field | FOLIO instance field | Notes
| :--------------------- | :---------------------------- | :----
| (top level) | holdingsRecords2 | See below
Holdings level
The _makeSingleHoldingsRecord function (and its subfunctions) show that the following fields from the FOLIO holdings record are used (as well as information extracted from the MARC leader):
| OPAC field | FOLIO holdings field | Notes
| :--------------------- | :---------------------------- | :----
| nucCode | location->institution->name | May be temporary or permanent location
| localLocation | location->library->name | May be temporary or permanent location
| shelvingLocation | location->name | May be temporary or permanent location
| _callNumberPrefix | callNumberPrefix
| callNumber | callNumber
| _callNumberSuffix | callNumberSuffix
| shelvingData | shelvingTitle
| copyNumber | copyNumber
| publicNote | notes->holdingsNoteType->name,notes->note
| reproductionNote | notes->holdingsNoteType->name,notes->note
| circulations | bareHoldingsItems | See below
Item level
The _makeSingleItemRecord function (and its subfunctions) show that the following fields from the FOLIO item record are used (as well as location fields from the holdings record):
| OPAC field | FOLIO item field | Notes |
| :--------------------- | :---------------------------- | :---- |
| availableNow | discoverySuppress, status->name
| availableThru | materialType->name
| restrictions | status->name
| itemId | barcode
| _enumeration | enumeration
| _chronology | chronology
| enumAndChron | enumeration, chronology
| temporaryLocation | See note 1 | May be temporary or permanent location
| _permanentLocation | See note 1 | Based on permanentLocation only
| callNumber | effectiveCallNumberComponents->callNumber
| _callNumberPrefix | effectiveCallNumberComponents->prefix
| _callNumberSuffix | effectiveCallNumberComponents->suffix
| _volume | volume
| _yearCaption | yearCaption
| _accessionNumber | accessionNumber
| _copyNumber | copyNumber
| _descriptionOfPieces | descriptionOfPieces
| _discoverySuppress | discoverySuppress
| _hrid | hrid
| _id | id
| _itemIdentifier | itemIdentifier
Note 1.
Location calculation is complex. It uses location->name when that exists, and otherwise uses and or all of
location->institution->name,
location->campus->name,
location->library->name,
and
location->primaryServicePointObject->name.
Summary
The following FOLIO-inventory fields are used in creating the Z39.50 holdings information for the OPAC record and MARC holdings:
holdingsRecords2
temporaryLocation
institution
name
library
name
permanentLocation
institution
name
library
name
name
callNumberPrefix
callNumber
callNumberSuffix
shelvingTitle
copyNumber
notes
holdingsNoteType
name
note
bareHoldingsItems
discoverySuppress
status
name
materialType
name
barcode
enumeration
chronology
temporaryLocation
name
institution
name
campus
name
library
name
primaryServicePointObject
name
permanentLocation
name
institution
name
campus
name
library
name
primaryServicePointObject
name
effectiveCallNumberComponents
callNumber
prefix
suffix
volume
yearCaption
accessionNumber
copyNumber
descriptionOfPieces
hrid
id
itemIdentifier
Caveat
The whole GraphQL response is included in records requested with syntax json nd (in transliterated form) with syntax xml and element-set raw. So fields not used in OPAC or MARC holdings may conceivable be in use by client code that uses these record syntaxes.