sheltermanager / asm3 Goto Github PK
View Code? Open in Web Editor NEWAnimal Shelter Manager
License: GNU General Public License v3.0
Animal Shelter Manager
License: GNU General Public License v3.0
In the same way as we create pages for animal types and species, we could create pages for animal flags. It means people could separate their courtesy listings, have a featured flag for adoption events, etc.
If the status of a newly created regimen is completed, the system pre-gives any created treatment. Some users would find it very useful if the system pre-generated all the treatments in this scenario and gave them (the example is a user who does when giving medications to an animal in foster care).
This is more complex than it first sounds since treatments are created on demand and it means looping through until no more can be created.
It would be useful to allow other users to comment/reply on/to messages on the message board. For this to work, clicking a message board message would expand it in a dialog that shows replies and allows adding one.
This expansion could be done from the existing More link instead of the less toggle.
A new table would be needed for messagescomments, ID, MessageID, UserName, DateTime, Comment
Using the same subreport technique as aspca, we could make a live asilomar report. We'd only need one of them then as you could run it for any date range. It saves overnight batch processing and means we can dump the asilomar tables.
It would be pretty neat if we could export animal data to a file for loading into another ASM database.
We could reuse our import CSV functionality (otherwise the whole issue of what to do with lookups, ID remappings and person records is a NIGHTMARE) and have an export CSV menu item on the Settings menu.
One or more animal records are selected and passed into the export function, which spits out a CSV to the best ability of our spec. We may have to improve some bits of it (there's no medical info import so we can't export it and that's one of the more useful reasons for wanting to export and import records).
Some users would like to record the person who returned an animal as sometimes one is adopted out, the new owner gives it away or it strays and it is returned to the shelter.
Add adoption.ReturnedByOwnerID and show it in movement.js with the other return fields.
We can set PDF paper size and orientation, but there's no way to set the margins. Add comment tokens for margins too.
Extra slider to show all incidents an animal is linked to.
One user requested a report to show shelter animals with how many reservations they have. Online forms create reservations via applications so this makes a lot of sense.
Cat shelters would find it useful if not only on-shelter animals, but cats recently released to wild were included in the lost/found matching.
On the accounts overview screen, the totals aren't right aligned. I think this could be done in tableform - anything using tableform.format_currency should be right aligned.
Could the audit slider on top level records show changes to satellite records that belong to them? In particular movements for people/animals would be very useful.
For users with large monitors, the accordions are an annoyance. Could we show them expanded for large monitors or offer a user option to show them expanded?
The system doesn't match lost area to the original owner address on the match report/data. Instead it shows "On Shelter". At least one shelter would find it helpful if it showed the original owner address as well as on shelter.
Another service call that works like animal_view, except it returns js that outputs all adoptable animals to a known target div #animalviewadoptable
It doesn't use templates and returns js that does the work.
It only supports a single image per animal, by linking to animal_image and getting a thumbnail (does it support this?)
It links to animal_view for each animal.
It allows some filtering with dropdowns based on sex, age and species
Styles are hard set in style attributes to avoid the need for separate css. However they are only ever for position and some classes will be applied to allow people to style things if they want (it's just going to be a thumbnail and name after all)
Use inline-block layout on divs just like littlebox with a target="_blank" for the animal_view links
There are various ways to read the EXIF orientation of an image now so that a rotation can be applied to a canvas in js.
When generating PDFs from documents, links are not clickable. The report is for any link in a document when turned into a PDF - wkhtmltopdf seems to flatten anchor tags.
New publisher selection for include animals who are not altered(neutered/spayed GB/AU). It should be set to Yes by default.
There's no way to add labels to the axis (not the tick labels, an overall X and Y label). Perhaps they could be added as comments or extra pre processor tokens in the SQL. A similar scheme could allow colours to be chosen.
As summary, have a payments column in movements.js that shows the receipt numbers and payments linked to that movement.
There are a few issues with the syntax checker:
Some shelters would find it useful to be able to apply one or more roles to an online form. The roles would prevent users without one of those roles from seeing submissions of that type of form in the incoming screen.
For example, one online form might be surrender info that staff don't want volunteers to see, and another might be adoption applications that volunteers need to process.
Requires onlineformrole table.
An interface for users working in a shelter's clinic
Menu options:
New tables:
clinicappointment
ID
For (username)
AnimalID (optional)
OwnerID (optional)
DateTime?
Status
ArrivedDateTime?
WithVetDateTime?
CompletedDateTime?
ReasonForAppointment?
Comments
Amount
IsVAT
VatRate?
VatAmount?
clinicinvoiceitem
ID
ClinicAppointmentID
Description
Amount
Screens:
Waiting Room
large table with a filter that allows status to be chosen from dropdown
shows all appointments today, ordered by time
buttons to change status of selected appointment
timed polls to update every 30-60 seconds
statuses are: Invoice Only, Canceled, Not Arrived, Waiting, With Vet, Complete
has the receipt document and buttons of clinic tab
Vet View
lot like waiting room, but shows everyone waiting by default
button to call someone in (takes status to with vet)
Clinic Calendar
calendar view, shows clinic appointments
Clinic Tab (Person/Animal?)
allows creation of appointments, shows all appointments
has receipt document button using appointment wordkeys
has receive invoice payment button that marks an invoice paid and prompts for the payment method and type and creates a payment record
The clinic tab, vet view and waiting room could all be handled by a single screen. It's a big table with a dialog to edit the appointment. Handling of the invoice is a separate screen. Clicking an invoice button in the edit dialog of an appointment takes you to a new screen where you can add invoice items to a list. This screen also has an option to create a due payment record for the whole invoice on the person record so it can be recorded as paid later via the payment book section.
There needs to be a vat/rate tickbox on the appointment itself.
A future enhancement could be to allow invoice items to deduct from stock as drugs are given to people.
I've found a few bugs, I think, in the way you produce the receipts:
It'd be nice to have wordkeys to access vouchers in the same way as medical/donations
A purchase ordering module would be really handy.
purchaseorder
ID
Name
Description
UnitName?
Quantity
Total
OrderDate?
OrderNumber?
SupplierOwnerID
ExpectedDate?
ReceivedDate?
This would allow purchases to be logged and tracked. The expecteddate could be used to drive alerts on the front screen.
We'd need a built in supplier flag and a filter for personchooser.
New fields:
adoption.AdoptionSourceID
lookup: adoptionsource ( ID, SourceName )
defaults: AdoptAPet.com, Facebook, Newspaper, PetFinder, Word of mouth
This allows shelters to track how the adopter of this animal found out about it. Add a new report "Adoptions by Source" similar to addresses. Needs adding to the Move->Adopt screen and Movements.js (only for trial/adoptions).
Some shelters would like to record new intake history every time an animal comes in, while still retaining the existing history.
Add a new table animalentry
ID
AnimalID
ShelterCode
ShortCode
EntryDate
AdoptionCoordinatorID
BroughtInByOwnerID
OriginalOwnerID
EntryReasonID
AsilomarIntakeCategory
JurisdictionID
IsTransfer
AsilomarIsTransferExternal
IsPickup
PickupLocationID
PickupAddress
ReasonNO
ReasonForEntry
The details toolbar should have a button to record new entry details "New Entry" (is this better on the Entry slider itself? Try both).
Clicking it saves the existing entry fields to the animalentry table and then clears the fields ready for entry. Copy the original owner from the owner on the latest returned movement, and copy the returning person to broughtinby and returned reason to entry category.
The "New Entry" button only appears if the animal is on shelter and has at least one movement with a return on file - this is important because that movement return date is going to be shown as the current date brought in and it won't be editable (MostRecentEntryDate).
The entry date field for the newly created record either needs to be datebroughtin or the return date from the previous movement (not the current one) if one exists.
A new slider for Entry History shows the historic entries from animalentry in a read only manner, which appears if there are any entries.
Historically, everything has treated DateBroughtIn as the first time the animal ever entered the shelter. It would break far too much existing functionality and reports to change this and there's no need.
In the UI, once there is at least one entry history record, show a read-only version of MostRecentEntryDate in place of the editable DateBroughtIn. This can be set by the latest movement return date and showing this read only will force things to stay in sync as it stops people entering entry dates that differ from movement dates.
We could also put this functionality behind an option as many people do not really want or need it. "Allow multiple intake histories to be stored".
There's no way to search the logs, which would be very useful for some people. If the normal search could do it, it could return a new record type of log, which links to the log tab in situ of the record where it appears.
Record emails that are sent to people in their log. We should be able to use the email address as a unique identifier to find their person record. Have an option on bulk emails to attach to log that is off by default.
Some people want to be able to add comments when taking a payment in the widget. This is really inconvenient as we're tight on space. Maybe an expander to drop it on the line below is the way to go. There are other fields now, such as quantity, cheque number and unit price
When someone creates a person record from the embedded person widget, if a filter has been assigned to the widget, that implies a particular flag that we could set automatically. For example, the adoption coordinator flag for any coordinator field, the vet flag for vets, acos, etc.
Some users have reported confusion with ending medical treatments. In particular, if you have something like 1 treatment every 10 days and you want it to end after 3 treatments.
At the moment, you have to put in "ends after 3 days", despite the gap being 10 days. It doesn't read very well and is confusing to users. Find a better alternative. Maybe ends after should always be the total number of treatments irrespective of period.
We already have residence address fields, add optional mailing address fields to onlineform.
System option for "separate residence and mailing addresses" (off by default)
MailingOwnerAddress, MailingOwnerTown, MailingOwnerCounty, MailingOwnerPostcode
Wordkeys to access them
onlineform fields to store data in them
Include them in searches
This was raised by a customer in Guam, where most people cannot receive mail at their residential address and instead have to rent a po box.
One user was complaining that they saw Internal Server Error when trying to view an animal outside their location filter from find animal results. They were using IE11 and not seeing the validation message. This could possibly be happening with newer versions of Chrome.
sh0628 has reported a few bugs, see their example chart "CATS All Adoptions by Month".
bar chart: bars overlap rather than stand side by side (you already know).
selecting type LINE chart for my report, which was previously BAR chart, reverts to BAR chart the next time i look at it.
the LINE chart is hopelessly screwed up. always possible something wrong in my minimal code but doubtful since bar seems to work.
i added an ORDER BY theyear, themonth at the end and it seems to do nothing to order the years enumeration. this could very well be because i am not sure what is going on (this is very high level - details a mystery) however, there is a definite glitch in the line plotting.
in the bar chart, if the datapoint is (x,0), the bar chart correctly does not show any data for that month, ie 0. in the line chart using the same data, the line should dip to 0 and then on up to the next month. if you look at the dataset with view page source, it does not even plot the (x,0) case and connects the neighboring datapoints. (the bar chart gets away with it by its nature)
As subject. When emailing media from the media tab, there should be an entry in the log made to show who sent the email, the recipient of the email, the media file sent and any message,
Quite a few shelters it seems accidentally double-chip animals. Have a second pair of fields that appear below the first two to the right of the identichipped box:
box date number [mfr]
date number [mfr]
animal.IdentichipNumber2 and animal.IdentichipDate2
Include these fields in simple and advanced find animal searches.
Update get_microchip_data to find all rows in the results with populated identichipnumber2 and clone them, copying identichipnumber/date2 to the first so no change to the registration code is needed.
Now that the callout widget is with us, find more appropriate places for its use.
Suggestions:
Add new fields - animal.Weight1 and animal.Weight2, which store the previous two values of the weight field (for a total of 3 quick to read samples).
When Weight1 is non-null and lower than Weight, show an alert for "X animals are losing weight" on the front screen - needs matching search.
Do we still have a configured cats species under defaults? If so, use it to determine whether or not to hide the FIV/L and declawed fields. Similarly, heartworm only applies to dogs.
Similar to the payment book, it would be good to have a voucher book under the Financial menu along with a "new voucher" quicklink.
Like licenses, it could filter by recent issued and expires soon.
It might be good to have a presented date as well so that vouchers can be marked used?
Also, an optional animal link would be desired.
... and a user editable voucher code that defaults to an 8 digit padded version of the ID
When the user types in the vaccination batch number field, it should autocomplete against a list of unexpired batch numbers from the database. The list is shown as:
batch: manufacturer (expiry)
choosing an item completes those fields on the record.
Special HTML comment could be used to specify the notify email address in the document template so that when the document is signed, the system could look for one of those and notify that address. Otherwise, it falls back to a global setting for notify email under Settings->Documents
This could be done with an icon or text token - preferably both so the icon is a visual indicator and the text token can be filtered. Include a status "adoptable", "case", etc in the view shelter animals list.
It has a new listMonth mode that is quite good. In fact, this may have already been available in the older version we're using, investigate.
Many users would like to record the vet that neutered/spayed an animal. This would be another vet field on the health and identification slider with the vet filter applied.
Make importing CSV asynchronous so that browser and gateway timeouts don't prevent the final report with errors being displayed.
Some people would like
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.