Uploaded image for project: 'mod-circulation'
  1. mod-circulation
  2. CIRC-828

Count active borrowers in calendar year



    • Vega


      As a member of library management, I need to get the number of users who have borrowed at least one item within a calendar year.

      More than 7000 German libraries count the number of active users (patrons with at least one loan in the reporting year) for Deutsche Bibliotheksstatistik (DBS) (German Library Statistics). DBS 2018 total numbers: https://service-wiki.hbz-nrw.de/download/attachments/99811335/dbs_gesamt_engl_2018.pdf?version=1&modificationDate=1564558387167&api=v2

      Loan record deletion, patron record deletion

      Many of them delete loan data when the item is returned or a few days or weeks after it is returned to comply with GDPR.

      In addition the Right to erasure (GDPR Article 17) requires them to remove a patron record on request if all loans have been returned and all fees have been paid. Some libraries automatically delete the patron record of students that have left the university.

      As some loan records and some patron records no longer exists at the end of the year the tenant's "active borrowers count" cannot be calculated at the end of the year, it has to be incremented when the loan is opened.

      Therefore the tenant's "active borrowers count" needs to be incremented the first time a patron loans something in a year; at least one of these in-app counting algorithms are needed:

      Active borrower flag algorithm

      Remove the "active borrower" flag from all patron records on January 1st.
      When opening a loan check the patron's "active borrower" flag.
      If not active: Set to active and increment the tenant's "active borrowers count" of the current year.
      If active: Do nothing.

      Last loan date algorithm

      The tenant can configure the "last loan date" granularity to be year, quarter or month.
      When opening a loan update the "last loan date" of the patron record. Use this date:
      If granularity is year use January 1st of the current year.
      If granularity is quarter use the first day of the current quarter (January 1st, April 1st, July 1st, or October 1st).
      If granularity is month use the first day of the current month.
      When updating check the previous "last loan date" in the patron record.
      If it is a date within the current year don't update the tenant's "active borrowers count". Otherwise (no "last loan date" or "last loan date" before the current year) increment the tenant's "active borrowers count" of the current year.
      Some libraries also use the "last loan date" to delete patron records without any activity (no loan, no login) within a configurable number of years, quarters or months. Therefore this algorithm has the advantage to use one field for both purposes and avoids the additional "active borrower flag" field.

      TestRail: Results


          Issue Links



                Unassigned Unassigned
                julianladisch Julian Ladisch
                0 Vote for this issue
                9 Start watching this issue



                  TestRail: Runs

                    TestRail: Cases