The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Biblio::ILL::ISO::StatusOrErrorReport - Perl extension for handling ISO 10161 interlibrary loan Status-Or-Error-Report messages

VERSION

Version 0.01

DESCRIPTION

Biblio::ILL::ISO::StatusOrErrorReport is a derivation of the abstract Biblio::ILL::ISO::ISO object, and handles the Status-Or-Error-Report message type.

EXPORT

None.

ERROR HANDLING

Each of the set_() methods will croak on missing or invalid parameters.

FROM THE ASN DEFINITION

 Status-Or-Error-Report ::= [APPLICATION 19] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER, -- {
				-- version-1 (1),
				-- version-2 (2)
				-- },
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	reason-no-report	[43]	IMPLICIT Reason-No-Report OPTIONAL,
		-- mandatory if no report is present;
		-- not present otherwise
	status-report	[44]	IMPLICIT Status-Report OPTIONAL,
	error-report	[45]	IMPLICIT Error-Report OPTIONAL,
	note	[46]	ILL-String OPTIONAL,
	status-or-error-report-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

CONSTRUCTORS

new()

Base constructor for the class. It just returns a completely empty message object, which you'll need to populate with the various set_() methods, or use the read() method to read a Status-Or-Error-Report message from a file (followed by a call to from_asn() to turn the read's returned hash into a proper StatusOrErrorReport message.

The constructor also initializes the Convert::ASN1 if it hasn't been initialized.

METHODS

For any example code, assume the following: my $msg = new Biblio::ILL::ISO::StatusOrErrorReport;

from_asn($href)

To read a message from a file, use the following:

my $href = $msg->read("msg_18.status-or-error-report.ber");
$msg = $msg->from_asn($href);

The from_asn() method turns the hash returned from read() into a proper message-type object.

set_protocol_version_num($pvn)

Sets the protocol version number.
Acceptable parameter values are the strings:
   version-1
   version-2

set_transaction_id($tid)

 Sets the message's transaction-id.  
 Expects a valid Biblio::ILL::ISO::TransactionId.

    my $tid = new Biblio::ILL::ISO::TransactionId("PLS","001","", 
					          new Biblio::ILL::ISO::SystemId("MWPL"));
    $msg->set_transaction_id($tid);

 This is a mandatory field.

set_service_date_time($sdt)

Sets the message's service-date-time.  
Expects a valid Biblio::ILL::ISO::ServiceDateTime.

   my $dt_this = new Biblio::ILL::ISO::DateTime("20030623","114400");
   my $dt_orig = new Biblio::ILL::ISO::DateTime("20030623","114015")
   my $sdt = new Biblio::ILL::ISO::ServiceDateTime( $dt_this, $dt_orig);
   $msg->set_service_date_time($sdt);

This is a mandatory field.

set_requester_id($reqid)

Sets the message's requester-id.  
Expects a valid Biblio::ILL::ISO::SystemId.

   my $reqid = new Biblio::ILL::ISO::SystemId();
   $reqid->set_person_name("David A. Christensen");
   $msg->set_requester_id($reqid);

This is an optional field.

set_responder_id($resid)

Sets the message's responder-id.  
Expects a valid Biblio::ILL::ISO::SystemId.

   my $resid = new Biblio::ILL::ISO::SystemId("MWPL");
   $msg->set_responder_id($resid);

This is an optional field.

set_reason_no_report($rnr)

Sets the message's reason-no-report.
Acceptable parameter values are the strings:
   temporary
   permanent

This is an optional field.

set_status_report($sr)

 Sets the message's status-report.
 Expects a valid Biblio::ILL::ISO::StatusReport.

    my $cs = new Biblio::ILL::ISO::CurrentState("sHIPPED");
    my $hr = new Biblio::ILL::ISO::HistoryReport("20030811",
	    				         "fORWARD",
					         "20030813",
                                                 new Biblio::ILL::ISO::SystemId("MBOM"),
					         "20030815",
					         "Anne Author",
					         "A Title",
					         "",
					         "",
					         "loan",
					         new Biblio::ILL::ISO::TransactionResults("will-supply"),
					         "This is a history report."
					         );
    my $sr = new Biblio::ILL::ISO::StatusReport($hr, $cs);
    $msg->set_status_report($sr);

 This is an optional field.

set_error_report($er)

 Sets the message's error-report.
 Expects a valid Biblio::ILL::ISO::ErrorReport.

    my $tip = new Biblio::ILL::ISO::TransactionIdProblem("duplicate-transaction-id");
    my $per = new Biblio::ILL::ISO::ProviderErrorReport( $tip );
    my $er  = new Biblio::ILL::ISO::ErrorReport("Some correlation information",
		 			        "provider",
						$per,
						);
    $msg->set_error_report($er);

 This is an optional field.

set_note($note)

Sets the message's note.
Expects a valid Biblio::ILL::ISO::ILLString or a simple text string.

   $msg->set_note("This is a note");

This is an optional field.

RELATED MODULES

Biblio::ILL::ISO::ISO
Biblio::ILL::ISO::Request
Biblio::ILL::ISO::ForwardNotification
Biblio::ILL::ISO::Shipped
Biblio::ILL::ISO::Answer
Biblio::ILL::ISO::ConditionalReply
Biblio::ILL::ISO::Cancel
Biblio::ILL::ISO::CancelReply
Biblio::ILL::ISO::Received
Biblio::ILL::ISO::Recall
Biblio::ILL::ISO::Returned
Biblio::ILL::ISO::CheckedIn
Biblio::ILL::ISO::Overdue
Biblio::ILL::ISO::Renew
Biblio::ILL::ISO::RenewAnswer
Biblio::ILL::ISO::Lost
Biblio::ILL::ISO::Damaged
Biblio::ILL::ISO::Message
Biblio::ILL::ISO::StatusQuery
Biblio::ILL::ISO::StatusOrErrorReport
Biblio::ILL::ISO::Expired

SEE ALSO

See the README for system design notes.

For more information on Interlibrary Loan standards (ISO 10160/10161), a good place to start is:

http://www.nlc-bnc.ca/iso/ill/main.htm

AUTHOR

David Christensen, <DChristensenSPAMLESS@westman.wave.ca>

COPYRIGHT AND LICENSE

Copyright 2003 by David Christensen

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.