-
Notifications
You must be signed in to change notification settings - Fork 2
Pre Release Notes
TriagePic Win Store has been developed mainly by Glenn Pearson, a contract software developer working at NLM. Glenn retired in January, 2014, but is still building this project part-time since then. The Notes below should be read in that context.
Also assisting at times are other contract software developers at NLM: Girish Lingappa, Tehseen Sabir, website/web-services developer Greg Miernicki, and tech support Joseph Chow, Kameil Natour, and Bill Neeriemer. These and other NLM people mentioned below are generally part of the Communications Engineering Branch (CEB), and specifically members of the Lost Person Finder (LPF) project, the FaceMatch offshoot project, or CEB technical support.
App has been released. Please see separate Store Release Notes and Developer Release Notes.
Pushed to GitHub from Glenn's PC Jan 26:
- More of the obsolete 8.0 code giving compiler warnings was updated with the newer approach from the "TriagePic-Win8.1" project. Specifically, TryUnsnap() was replaced by a message to the user.
- Local testing for Store App Certification was undertaken. Testing failed on a "hang & crash" test. Direct forensic diagnosis proved difficult (see "Testing for Store App Certification" in this wiki for more). Leading to eventual success was experimenting with alternative suspend-and-terminate/resume implementations, and bug fixes, of complex objects:
- the CurrentPatient report. Ultimately, it was serialized using JSON instead of a data contract, and an initialization bug corrected.
- the PatientGroups object, that holds the outbox and all-stations patient lists and their filtered/sorted variants. Saving PatientGroups during suspend-and-terminate was not working and causing problems. Further, it appears to be redundant and so unnecessary, given startup processing elsewhere.
- Additional wide (310x150) and big square (310x310) logo images were created and added to manifest. Also logo images versions created in promotional sizes: 414x180 and 414x468; these are not included in build but uploaded as part of submission
- An app package was pushed to WinStore Jan 26 as part of submission.
- The Store description was authored, existing screenshots marshaled, and logos in additional sizes prepared (e.g., for Store promotional purposes).
- Store submission was completed the evening of January 29th. Acceptance was faster than originally expected, just a hour.
Improvements to the public documentation (elsewhere in this wiki) include the following:
- In "Overview of Code Structure", addition of "Error Reporting" section;
- New "Testing for Store App Certification" page, updated several times;
- New "Retaining Local Data on Updating or Uninstalling then Reinstalling" page;
- In "User Guide to TriagePic from the Windows Store", addition of screenshots and other minor improvements;
- Updates to "How to Get TriageTrak Credentials" and "Contacts"
For TP8-WinStore, the following changes were made on the Surface 2 Pro, pushed to GitHub on December 10th, and then synchronized to Glenn's PC.
- The app major version number [for first release] is changed to "3" from "1", to align with TP7. Minor version numbers will not be aligned.
- When TP8 starts (but not for the first time), if the remembered password is now invalid (e.g., was changed at the server, or a different server is now the target), the startup wizard will re-run to solicit a fresh password from the user. Before, the app would continue with an empty token, and cascade errors.
- Debug checks for an empty token were added to other web service calls.
- On the Checklist page, beneath "Disaster Event:", there's now a subtitle "Only those open for reporting shown", above the event pick list. This is to clarify why a different set of events is shown compared to the TT website. The latter lists both open and closed events (without visually distinguishing).
- When attempting to change the server to which TP8 reports, it was found that the existing run-time mechanism (using a local XML override) was ineffective; there is a painful history here, and probably one should give up on run-time solutions [TO DO: Delete mechanism, change documentation]. Instead, the programmer must edit the Service Reference Configuration, do a Service Update, and then rebuild.
- Testing with PLUS web services v33 continues, with the assistance of Greg Miernicki, during which the above problems were detected and fixed. Additional problems were traced to the server:
- Patient reports that TP8 retrieved by the search function did not include those with no photo (no matter what value was used for the hasImage boolean filter).
- To help diagnosis this, TP8 was changed to point to NLM's internal TriageTrakStage (TTS) server, that has web service error logging. TTS initially had web service request caching as well; this was improved to include response caching.
- But the TP8 calls to TTS failed, with TP8 reporting [at lowest level] an "Unrecognized message version", referring to SOAP message version, not payload. This message was generated on the client-side by the MS proxy class.
- It was found that the responses to calls like the getUserToken call was ill-formed, including NuSoap PHP warning messages and lacking the SOAP envelop. Changing the warnings to go elsewhere than stdout fixed this.
- There were also minor improvements to namespace definitions in the generated v33 wsdl contract, to improve compatibility with MS clients.
- Once TP8 could talk reliably with TTS, the original problem with missing no-photo reports could be addressed. This was fixed [on TTS first, eventually TT] by correcting hasImage handling code and putting in a shim parameter now expected by SOLR but missing in the v33 search call. It is thought that v34 will not have this problem.
Subsequently, these additional changes were made to TP8-WinStore on Glenn's PC, and pushed to GitHub on Dec. 27 [but not yet pulled to Surface Pro.]
- The PLUS web services token is now persisted between sessions in the UserAndVersions.xml file. Like the TT username and password already there, the token string is encrypted then base64encoded. Internally, structures are changed to support that, as are the workings of the Startup Wizard and the Settings/My Credentials flyout.
- The token is now saved & restored during suspension (but more work needed for better security).
- There is now error handling/reporting if an attempt to fetch a photo from TT using the URI provided by TT fails.
- The expirePerson web service, heretofore used for requesting TT to delete a report, was found to be non-functional in v33, and will not be fixed because it is deprecated. The delete functionality is now expressed through the queued reReport service. In order to use that service for deletion, TP8's deletion UI and functionally were substantially changed.
- Specifically, the Discard button (within the lower app bar) is now available only on the Edit Report page. Before, it was also offered on the Outbox and search results pages (i.e., the split pages). This restriction is not too onerous, because when viewing a specific split-page record, a single tap on it jumps to the corresponding Edit Report page.)
- Similar to before, the Discard button brings up a popup menu (now win8.1 style) with choices:
- From outbox only
- From TriageTrak too
The first choice works much as before. The second choice, which previously brought up another popup box asking for a "Why delete" explanation, instead shows a banner message:
This record has been marked as 'Deleted', internally and in the 'Notes' field.
It is suggested you further edit 'Notes' to say why you deleted it.
Finally, hit 'Send' to tell TriageTrak to delete it.
- The Notes field is appended with:
Deletion requested from {DeviceName} by {UserWin8Account} at {Local Date and Time}
Because:
and the text insertion point set to right after that.
- When the user presses 'Send', the usual queuing and eventual sending occurs, after which the report is also deleted locally.
[changes to TP8-Win8.1 below are not yet pushed from Glenn's PC:]
- The Dec 10th pushed-code-changes above to support PLUS version 33, including the changes to the startup wizard, app launch, and web service calls, were selectively hand-copied from TP8-WinStore to TP8-Win8.1. Also copied were changes to the Checklist page (new checkmark, text that only events open for reporting are show), and app renumbering to "3".
[Additional TP8-WinStore changes (those pushed to GitHub Dec 27th) have not yet been selectively hand-copied into TP8-Win8.1]
- TriagePic-WinStore changes for v33 pushed here November 2. (See October for description.)
- TriagePic-Win8.1 changes for late July-October were pushed to the corresponding fork of github.com November 3. (See July-October for description.)
- In order to work on higher-priority update of PLUS web services to v32 to v33 (and eventually v 34), it was decided to fork the project temporarily, so that the PLUS work could be pursued in the context of a better-working UI. The two forks (which both contain a record of earlier commits, not further discussed here) are as follows, as of early October. An eventual remerge is planned.
- "TriagePic-Win8.1" has [in the Nov 3 commit] UI and other changes from mid-July to Sept 2014 (with some 8.0-->8.1 breakage still in October). These are the changes described as "not yet pushed" during August/September below. This fork on ice.
- "TriagePic-WinStore" is based on the version maintained on the Surface 2 Pro. That version had mainly only UI changes thru July 7th commit (which is first recompile of 8.0 code as 8.1), though it is possible it also got a bug fix or two. Then in October work, started on high-priority PLUS update v32 to v33.
- The October items below pertain to TriagePic-WinStore [and were pushed Nov 2]:
- All low-level v32 calls changed to v33... testing and probably additional changes planned.
- Exception handling was improved to more correctly report device banning by IP address. The server bans if too many bad password attempts over an extended period. (This is different from "lock".) If this occurs, the user is advised to ask the TriageTrak administrator to unban.
- The Startup Wizard was redesigned:
- v33 requires organization selection after username/password, not before. To support this, buttons are added and relabeled.
- The organization pick list is hidden until it's needed.
- Typing Enter key in text fields now is active, does expected behavior.
- The password field now has Win8.1 "eye" device to allow temporary plain-text reveal.
- On Home and Checklist page, Unicode checkmark used as page header glyph is changed, because some glyphs are now multicolored in 8.1. The original outline checkmark char was rendered in black (against a charcoal background) so hard to see. Replaced with a solid green char.
- [August and September changes not yet pushed; work in progress]
- If invalid hospital credentials were persisted, on subsequent startup the user would see a popup dialog complaining misleadingly about an empty disaster-event list retrieved from the web service. Fixed: the popup (and error log) would now indicate invalid credentials. [Details: During startup, a call to GetIncidentList in turn calls the disaster-event web service, which correctly reports an appropriate invalid-credentials error code and empty event list. Before the fix, GetIncidentList would ignore the error code (and associated error message) and misleadingly report only about the empty list.]
- A bug with first-run initialization of the file that remembers the current event and patient ID (OtherSettings.xml) was fixed.
- The Win 8.0 TryToUnsnap function, which programmatically enlarged app to full-screen, no longer works and has no replacement. Instead, user is asked to enlarge screen; this may occur during photo taking or viewing statistics.
- Win 8.0 App Bar controls are replaced with Win 8.1 Control Bars; there may be a few slight changes in appearance such as button spacing.
- Use of Win 8.0 Standard Style fonts are mostly replaced by Win 8.1 framework fonts.
- Testing and code-repair has begun in full-screen landscape mode. Split-screen pages, structurally revised with win 8.1 sample code, not yet working.
- [August changes here not yet pushed; work in progress] Restructuring is underway to remove win 8.0 deprecated functions, and replace with win 8.1 functions. This involves breakage and reassembly. Details follow.
- The Microsoft-provided but now deprecated "LayoutAwarePage", from which other pages inherited, is now replaced by a custom "BasicLayoutPage", suggested by a forum post, that in turn calls the new MS navigation helper.
- As part of this, the win 8.0 visualization manager enumeration (with categories "FullScreenPortrait", "FullScreenLandscape", "Snapped", and "Filled") is being replaced (in the DetermineVisualStates function) with a custom categorization that adds "Narrow" and "Half". ("Half" required additional research to implement, and will need further testing.) Eventually, particular page layouts that use the new categories were necessary will be developed. "Snapped", narrower than "Narrow", is retained for now since there are some current page layouts for it.
- The LoadPage and SavePage functions for the Suspension Manager have a new call signature. (Some problems still to overcome here.)
- Still trying to figure out:
- how to replace deprecated "TryToUnsnap" function, used in TP8 during picture taking.
- how to call the new version of the GoBack navigation function.
- The About flyout now shows an app version number. The ApplicationInfo file was changed to auto-increment the minor digits of the build number, as in Win7 TP. (However, this may not be sufficient; the manifest evidently has its own versioning, similar to Win7 publishing. To be worked out eventually.)
- A change to an organization name (from "NLM (testing)" to "NLM") on TriageTrak revealed a problem in TP8... the original org name had been hard-coded into "default" dummy data records, and these were still having an effect. Such data, useful during early app building, is now dropped throughout.
- During reading and writing of the xml files used for data persistence, a shared data buffer is used. To prevent problems during asynchronous read/writes, this buffer is now semaphore-protected.
- Related to the foregoing, if an xml file had a bad format (e.g., was entirely empty, without root xml), reading it caused an error, and the attempt to log that error (using the same buffer but to a different file) caused a app crash. The latter was fixed (and the app will generally go on to replace the bad data file with a good one later).
- The Callisto reference and superseded flyout settings files were removed (see May's item).
- The VS 2012 IDE was replaced by VS 2013 on the Surface Pro 2, and old TP8 there replaced by latest.
- Settings/My Credentials now saves changes.
- A hard-to-find bug, namely that choosing a different disaster event on the Checklist page would scramble the event list and cause duplicate values, was solved. Other related changes:
- The event-choice combobox was replaced by a listbox.
- When the event is changed, the “all stations” list of reports for the new event must be fetched from TriageTrak. This process is newly indicated to the user by a status message and Win8 progress bar (moving lights) immediately below the event listbox. The status message changes slighty as the process proceeds through its four steps.
- [Not pushed until July 7] Trying to edit a report found in All Stations or through search would cause problems if the report was not available in the Outbox. To avoid problems for now, this is now explicitly prevented, with the message: "Sorry, can't edit this report, or any report not in the Outbox list. Only reports that were created here (and not deleted from here) can be edited here. This is a temporary restriction of this release of TriagePic for Windows Store. For now, consider editing such reports at the TriageTrak web site."
- Recent off-line bug/feature notes were reviewed and consolidated, and reported here under "Issues". Some bugs already solved were closed, after confirmatory testing if necessary. "Issues" does not have exhaustive coverage; see also "Future Features" in the wiki.
- The bug where the startup wizard would fire every time, if the user didn't give apps permission to see the Windows user name, was fixed.
- As part of the migration from 8.0 to 8.1, the settings flyouts, which were previously implemented using the third-party Calisto library, were re-implemented using new 8.1 "SettingsFlyout" class. This included minor layout tweaks and content freshening. (Pushed May 20th; still includes Callisto reference and old, now-inactive settings files; these will be removed subsequently.)
- The development environment is now VS 2013 and Win 8.1 Update 1.
- Third-party libraries are updated, and the new name ambiguity of SettingsFlyout between Callisto.Controls and Windows.UI.Xaml.Controls resolved.
- Most critical code migration is done, except for a redo to replace Win 8.0's deprecated "snap" mode with a narrow window.
- The failed hard disk in March caused complications, and after recovery two separate sets of changes were inadvertently created, that subsequently were hand-merged (outside of GitHub).
- Testing of TP8 for a possible mid-April demo (which didn't happen for unrelated reasons) used the VS 2013 version with April changes (but not the February changes, e.g., it was pre-merge).
- The startup wizard uses a different technique to quit if credentials are bad. It returns to the technique first tried, since the alternative is now too disruptive in the VS2013 debugger. (Quitting will still need a waiver for Store Certification).
- On the Checklist page, the Pick button is relabeled and calls a newer (not-deprecated) function. The associated Roster field is made taller and multiline; this is still an interim design.
- The New Report fields, partially filled in, would sometimes not be restored after taking a photo; these are now explicitly saved/restored by the suspension manager.
- A failed hard disk, and bad backup image, caused a pause in development while systems were rebuilt and incrementally restored.
- TriagePic was exercised at a regional disaster drill at Suburban Hospital, Bethesda. The focus was on TP7, TP-Android, and TriageTrak; TP8 was available on a Surface Pro (running VS2012 debugger), and tested in advance, but not appreciably used.
[These changes by Glenn were not pushed to GitHub until April 29, with the above April changes.]
- If the user changed the choice of organization in Settings/My Organization, the result was a scramble of new and old organization. This would cause further problems (e.g., if the two organizations had different patient ID formats). Fixed.
- The foregoing improved code is also propagated to the startup wizard.
- The startup wizard's separate "Validate" (of credentials) and "Done" buttons are replaced by a single "Validate and Continue" button.
- The values of the adult/peds checkboxes are now properly restored (e.g., after momentarily leaving the page to take a webcam picture).
- The user may choose not to permit the Win8 account name to be known to apps, in PC Settings/Privacy. If so:
- an empty name string is now accepted (debug asserts are removed).
- TriagePic's Setting/My Credentials will show "[Login name not available to apps, due to your PC Settings/Privacy choice]", followed by just the device name.
- The new-install wizard now correctly appears just the first time TriagePic is run, instead of every time. (The problem arose because the Win8 account name is used as a key to retrieve the remembered, encrypted TriageTrak name and password; code is now changed to allow retrieval with an empty account name.)
- If a patient record on TriageTrak had a last name only, under some circumstances it would crash TP8 on retrieval. This is now fixed, and the functions that derive the given and family names from the record are rewritten and improved.
- In the TriagePic-WinStore wiki on github:
- “How to Get TriageTrak Credentials” (about 2 web pages long) and a “User Guide to TriagePic from the Windows Store” (about 7 pages) were authored. The suggestions for handling trademarks, credits, etc. became a separate page.
- “Pre-Release Notes” was updated with November’s and shortly December’s work.
- An “App and System Permissions, Privacy, and Security” page provides: the planned Win Store settings; cryptography and export control; and “Privacy and Security”. The latter content is now also in TP8’s Settings/Data Privacy flyout.
- The Home page now has a two “More Info…” lists of links to these and other pages, either “…for Everyone” or “…for Developers”.
- The project TriagePic-WinStore README file was improved.
- G. Lingappa and I (G. Pearson) coordinated further. He suggested a (partial?) fix to a tough problem with event selection, and some external libraries to prune. Also, a problematic All-Stations refresh-fetch timer was dropped. These changes were propagated.
- An install wizard (or more accurately, first-run wizard) was added. The preliminary one-step version collects organization, user name, and password. It shares some validation methodology with Settings/Credentials and Settings/MyOrg. At first, this wizard locked up the simple splash screen. So an “extended splash screen” (common in Win8) with progress ring was added, and the install wizard occurs during that. This unexpectedly broke the thread that does web service pinging; fixed.
- In Search, a “My Org Only” was checkbox added (as in Outbox and All Stations views), and subtitle adjusted. The Filter’s choices for events was corrected.
- Search results with a query might show a special “No results found” state (and message) if either search in Outbox or All Stations had zero records (when only if both were zero actually made sense). Further, this state lacks the subtitle group selector for Outbox and All Stations. As a quick fix, the “No results found” state is suppressed.
- Search report details are presented in a horizontal flip view. Indication of where you are among records, as a subtitle, e.g., “(12 in 73)” relied on a 3rd party library, MyToolkit. To reduce dependencies, this was re-instated with a native solution.
- In All Stations view, the “Current Event Only” checkbox was removed, since this functionality is not implemented in this release (current event only is always true).
- Visiting the All Stations view now triggers a fresh fetch of data, limited (due to typical memory constraints) to the most-recent 250 reports. Simple disk caching of All Stations reports is provided, which is consulted only if a live update is not possible. The cache data is for the current event; if the user changes events, the cache is flushed.
- Under Checklist, icons now denote test vs. real events, and the layout made better. The event-select bug fix was added. Staff roster names was minimally implemented.
- A Win 8 developers account and associated Win 8 Store account were setup. Within the latter, the TriagePic name was reserved, and aspects described, e.g., what markets.
- Good progress is being made with the Windows Cert Kit testing. A number of problems it found were overcome, and a successful test can be achieved. Specifically:
- The Release build was created, a pre-requisite. It was found that an updated release-build app must be manually uninstalled & reinstalled before each Cert test.
- Logo sizes were made conformant, and default generic logos replaced. The logo background color is now consistent across images, with M. Chung’s assistance. Image file names were changed to make them clearer, and unneeded ones removed.
- The “app application lifetime” handling of suspend/terminate/resume was improved, chiefly by saving and restoring global variables.
- For Cert testing to succeed, TriagePic needs to have run at least once before to get by the first-run wizard’s user entry. Otherwise, testing fails due to “hang”/“poor performance during startup”. This will be conveyed in the notes to Store testers.
- Provided 3 page “TriagePic for Windows Store”, as lead in for meeting with G. Lingappa, Mike G., S. Antari to discuss transition.
- On TP8 startup, the disaster event selected from a prior session is now remembered.
- On startup, if there is no cached Outbox data, instead of generating dummy data, real data from TriageTrak is fetched, restricted to reports from this device and person (e.g., Windows and TriageTrak login IDs). Dummy data generation is being suppressed.
- The “All Stations” (non-Outbox) view now displays and sorts real data fetched from TriageTrak, using the now-extended web service call developed with G. Miernicki. The results from the “SearchWithAuth” function are parsed via newly-developed helper hierarchical JSON data structures and field-mapping functions. This client-side mapping (from ReUnite to TriagePic fields) is substantial (and still being tweaked).
- Because practice mode is not supported in the first release of TP8, SearchWithAuth results are filtered for now to skip any TriageTrak “Practice” reports (sent in by TP7).
- Read/writes of cached patient report lists now always check for and remove empty reports, which can arise during debugging.
- In the Outbox and All Stations Views:
- The title heading now includes a parenthetical count of total records (as was already the case with Search view).
- Besides the existing filtering checkbox (“Current Event Only”) was added a “My Org Only” checkbox. The layouts and filtering were much-revised for this.
- A report’s detailed view now shows the reporting org name, as, e.g., “Yellow Zone at Suburban Hospital”. Reporting of datetime & send status were also improved.
- After selecting a previously sent report to edit from the Outbox, editing and sending it, then hitting back button, crashing is fixed.
- Crashes due to poor handling of datetime parsing are fixed.
- Edit Report page now shows the Message # if a report is edited and resent more than once. Also, the timezone is indicated.
- Sorting of reports by Mass Casualty ID can be lexical/alphabetic as before, but a new choice offers usually-preferable numeric sorting, ignoring any non-numeric prefix.
- For the Statistics page, since an effective snapped-view layout was not yet developed, as a quick workaround, the page is unsnapped (to “filled” size) when invoked.
- TP8 now has a somewhat fuller description in GitHub repository wiki.
- The impact of open-sourcing TP8 code on the security of credentials was considered.
- Edit-and-resend was further tested and debugged. After the send, the page fields are disabled (which is visually prominent) and a hint shown to navigate to another page.
- Missing web connectivity during startup no longer hangs the app when telling user that cached files are being used instead.
- When editing a fixed-width-format patient ID, calculator-style entry is better enforced.
- In the Outbox or All Stations view, tapping the big-photo location for a selected report goes to the View/Edit Report screen. This is quick alternative to using the App Bars.
- Returning from the web cam capture is now treated as “go back” navigation, to leave the page-navigation stack in expected shape when user navigates further. The choices after a capture and crop were renamed: {cancel, save image, capture new image} became {cancel, save image, retake} with go-back or go-forward icons.
- Progress was made on being able to delete a patient report:
- To delete an already-selected report, the user swipes up the lower app bar and hits the “Discard” (trash can) icon (instead of an ambiguous Clear icon).
- In response, a popup menu appears above the icon with choices “From outbox only” and “From TriageTrak too”. The first choice deletes the local record in the Outbox (to do: move it to archive instead). The second choice occurs by direct action rather than queuing. Consequently, ping results are first checked to see if web connectivity is good. If so, it next sees if the Patient ID is known to TriageTrak (for the given event); if not, deletion is cancelled and the user told. Otherwise, the user can give an optional explanation. The remote deletion (expiration, really) is followed by that in the Outbox.
- The forgoing required build-out of the client-side functions “Get UUID From Patient ID” and “Expire Person” that wrap the corresponding web services.
- The Discard control is available from the View/Edit Report page and Outbox and All Stations views. (Discard from All Stations or search results needs more work.)
- Filtering of search results is improved. It now heeds the new triage zone system, where hospitals may differ in the number of zones (up to 9 currently supported) and their names and colors. Specifically:
- For a given hospital, the color-coded zone checkboxes on the flyout Filters page now match zone buttons on the Report pages.
- The user selections on the Filters page (both of zones and other item checkboxes), together constitute a “filter profile”. There is now a separate filter profile for every hospital, to avoid problems due to different zone specifications across hospitals. When first generated, a hospital’s filter profile has all selected, e.g., no filtering.
- Filter profiles are now persisted to an XML file. (Unlike some other items, the filter selections are a local user option, neither fetched nor stored from TriageTrak.)
- Filtering by event name or group type (e.g., real vs. test, public vs. private) is much improved, though still with some limits. It took an upgrade of web service code to get the access list for each event: {public, hospital users, admins, researchers}.
- For Portrait mode, the subtitle of the search results page was shortened. This “sort descriptor” was condensed (e.g., from “by date & time descending” to “by arrival ▼”) to avoid overlap with other controls and make consistent with sort page nomenclature.
- Existing items that will not be fully implemented in the first release are hidden from user and marked as TO DO in code, specifically:
- “Practice mode” checkbox on New Report and View/Edit Report pages.
- On the Sort page, the “Show As” section: controlling what item is the title and what is the subtitle for each search result card.
- On the Filters page, the “Filter Profile” section (to allow multiple user-named profiles) and the “When Reported” section (selecting a date/time range).
- Experimental no-cost GitHub repositories (here) were created, configured, and manipulated, in preparation for possible use by various versions of TriagePic.
- To support testing of TriagePic Win 8, a public-facing instance of TriageTrak was requested. Testing with this site has just begun, and some bugs noted.
- For Windows Store submissions, a Win 8 developers email account was requested.
- “TriageTrak” is now the working name of the hospital-specific version of PL.
- Specifications for changes to PLUS web services were designed and scheduled, in consultation with G. Miernicki and others. Goals were to:
- Provide flexibility in the number and types of triage zones, per hospital policy;
- Retrieve search records from PL sufficiently complete to display in TriagePic;
- Replace search input parameters that hard-code hospital names;
- When reporting, get server time stamp back, to better manage updates.
- New functions for encrypting and decrypting PL username and password were implemented, using Win Store compatible classes. These are paired with the Win 8 login and persisted to the UsersAndVersion.xml file. They are exposed to the user (along with Win 8 login and device name) in the new Settings page “My Credentials”. Syntax checking and validation against a web service occurs.
- As with Win 7, the read-only PLUS web service endpoint address is shown to the user (in Settings/Other Settings Here), along with an indication if it has been customized and a note that the admin may customize it in OtherSettings.XML. There is also a toggle to artificially block web services for testing purposes.
- Recall that the Win 7 version has a send queue for reports, and is always “pinging” the server to analyze wireless latency to decide whether to attempt a send. The ping results are shown to the user by a “traffic light” icon. Correspondingly, for Win 8:
- The send queue was given a fresh implementation (using Win8’s async/await on the UI thread, instead of the .Net 4 technique of parallel lambda functions on a worker thread).
- Low-level “ping functions” were implemented.
- The traffic light is represented abstractly here by 3 stacked rectangles in New Report and View/Edit Report pages. Nearby is a count of the queued reports (a feature new to Win 8). Tool tips for these are invoked by press-and-hold in Win 8.
- The client now calls PLUS web services v31 instead of v29. Changes are minor, but v31 does include stub functionality for a variable number of zones.
- Specifically, the fetch of hospital policy from TriageTrak includes a JSON array with zone information. This is saved as-is in HospitalPolicy.xml, but persisted in more useful form as ZoneChoices.xml. Each zone button now gets its label, background color, and meaning (seen in a tooltip) from this data. (Full build-out and test of this will await scheduled TriageTrak work to move beyond just a fixed-response stub.)
- Confirmation dialogs were added for gender and age group checkboxes if uncommon choices was selected, e.g., user forgot to select.
- Proper handling and display of status codes in the send queue and sent lists was done.
- The full records now show the sent time in both local and UTC timezones.
- The Visual Studio project and its internal namespace were renamed from TP8_1 to TP8, to avoid confusion with Win 8.1.
- “Statistics” now only shows implemented charts, not sample charts.
- Work is underway on the edit-and-resend functionality using the new queue.
- Fleshing out a feature-comparison matrix of TriagePic versions (at least Win 7 versus Win 8) continues.
- In Visual Studio 2012, a “web reference” was added to PL’s PLUS web service, which generates C# “proxy” classes and functions to call. These proxy functions are similar to but different in detail from those generated by VS 2010 for Win 7 TriagePic. Thus my mid-layer functions that call these proxy functions and handle error recovery and reporting are being re-implemented, beginning with some simple, read-only services.
- All calls to web services this month use hard-coded PL credentials. Next month will see encrypted credential storage (using new Windows Store encryption classes).
- The list of disaster events was the first web service utilized and tied into the existing combo box on the Checklist page and local file cache.
- Subsequently, two new data source classes were added - a list of hospitals/ organizations known to PL, and contact details about a particular org - and enabled for web service calling and file caching. This is seen and manipulated (through a new combo box for the first list) through the Settings/My Organization screen.
- Similarly, the org’s policy (e.g., for patient ID format) is now fetched from the web service, cached, and seen in a read-only Settings page. The fetched ID format is active.
- Error detection and recovery for XML cache files was made more robust, and generation of missing files is now a runtime rather than a developer-initiated compile-time activity. There is now some error logging of problems during XML file I/O.
- The last patient ID and last disaster event is now recalled across sessions.
- Programmatic specification of color themes for flyout setting pages was researched. Flyout headers now sport the Modern UI default purple header background color.
- A new-in-Win8 feature, already prototyped with dummy data, is the ability to show reports from all stations, and search through them. However, the existing PLUS web services for search/retrieval, designed for ReUnite, are inadequate for TriagePic, e.g., there’s no way to retrieve zone info. Discussion has begun on overcoming this.
- In the Outbox and All Stations views, the background of tiles with individual patients now is colored (saddle brown), to better delineate screen regions as suggested by M. Gill. Also, the views now show and implement a “Sort” button and a “Current event only” checkbox (the latter being a minimal filter). There is also a “Sorted by…” subtitle in the header. Layouts of these elements differ in portrait vs. landscape mode.
- Similarly, the page header(s) for Search Results now show information about what sorting/filtering is in effect. Filtering here is much richer than for the Outbox and All Stations views, and build out of this functionality continues. To accommodate portrait mode, subheader font sizes are reduced and other controls moved closer together.
- Turning to patient arrivals, a filled-in “New Report” can now be successfully delivered to PL through a “writeable” web service. This required a substantial effort to redo several layers of code. The treatment of photos (both from the webcam and file-picked) was particularly troublesome, because WinRT uses much different libraries for bitmap display, SHA1 hashing, base64 encoding, and jpeg encode/decode.
- If user picks a pre-existing photo from the Pictures library, the caption now becomes “Original filename: ”. (TriagePic will suggest its own form of filename with patient ID when reporting image content to PL.)
- A bug when trying to edit a sent record, due to the new “No Photo” image, was fixed.
- Win RT ARM-based hardware to test TriagePic on a non-Intel platform was surveyed. Also researched: loading an app under development onto RT device (bypassing Store).
- A meeting with M. Gill, S. Antani, and G. Thoma examined aspects of delivering a Store-ready version of TriagePic in the 4th quarter.
- M. Chung provided combo-box icons in other resolutions, to incorporate next month.
- Work continues on fleshing out a feature-comparison matrix of TriagePic versions.
- The app externally is now called TriagePic, instead of TP8_1.
- One focus this month was build-out of photo handling:
- When taking a photo, there is now a Cancel choice.
- An image (e.g., of a patient) can now be retrieved from the Photo Library or elsewhere on disk, using a new “photos” button in the App Bar.
- Retention of form information when taking a photo is now more complete, e.g., photo caption is now implemented. Also, bugs due to asynchronous processing during image base64 encoding were fixed.
- Outbox and All Station listings, as well as Search Results, now show a photo thumbnail if available. Both the thumbnails and larger photo within the currently selected record have a colored border corresponding to zone color. If there’s no photo, a person silhouette (white outline on mustard-brown field) with “No Photo” is shown. This supercedes the prior treatment of a color swatch of the zone color.
- A photo is now shown in Edit mode, and can be replaced by another webcam shot.
- In search results, the sort order and presence of filtering is shown in the heading; this works well for landscape mode, but still needs more work for portrait mode.
- Improvements to the layouts of the New Report page were propagated to the View and Edit page, and build-out of edit functionality is underway. When the user makes a change to a text field, checkbox, or photo, the title color changes to red and gets a “*” appended. The Send button is not enabled until a change is made. By design, navigating away from the page abandons the edits… a confirmation is solicited first.
- The layout of Portrait mode for New Report and Edit pages is being improved.
- Work has started on improving data stability during transitions between view modes.
- Further implementation of the Patient ID (aka Mass Casualty ID) ensued:
- The organization’s policy for Patient ID format is now persistent in local storage; this will eventually be read from central web services.
- Within Settings, the “Settings Options At PL” page is renamed “Policy Options, Set Centrally”, and shows real content regarding patient ID format and triage zones.
- “+” and “-” buttons to increment and decrement patient ID number are now active, for New Report and Edit pages, including rollup/down when held.
- There is now some enforcement of the Patient ID format policy during editing.
- Work on hospital-defined triage zones is making good progress:
- The zone button with overlaid checkmark was made into a custom UI control, deployable in varying number. This required property & event mapping.
- Display of these buttons is now driven by a provisional internal data structure, letting the number of buttons and their titles and colors be determined by data.
- An algorithm to decide whether to use white or black font for each zone button, based on the luminance of the background color, was researched and implemented.
- Planning for associated local-storage persistent data structures has begun.
- A related change to the PL “hospital policies” web service call was proposed.
- For the charts of statistics of events reported through this station:
- Page 5, Arrivals by Day for the Current Event, now has better axes. Rendering of data points is suppressed, to show just the polyline.
- New Page 6 has Total Arrivals by Day for All Events, is similar.
- New Page 7 is similar, but with a separate colored line and datapoint set per event.
- The set of meaningful (as opposed to generic example) “Statistics” pages is enlarged:
- Page 1 – Arrival Count Pie Charts, All Events. This now shows 4 pie charts (instead of 2) for arrival totals for all disaster events, respectively by triage zone, gender, age group, and event. Layout was revised to put borders around each quadrant, improve pie-slice color consistency, and add counts to slice-key labels.
- Page 2 – Arrival Count Pie Charts, Current Event. A near-replicate of Page 1 with 4 pie charts, but for the current disaster event. One of the pies is by-date (replacing the not-relevant by-event pie).
- Page 3 – Arrival Count Bar Charts, All Events. This has 4 bar charts for all events, showing the same data as Page 1 in different form. Methods were researched (in the diffuse documentation) and deployed to colorize individual bars, suppress the legend, and adjust the sizes and placements of bars, labels, tic marks, and grid lines.
- Page 4 – Arrival Count Bar Charts, Current Event. This shows the Page 2 data in different form, that of Page-3-analogous bar charts for the current event.
- Page 5 – Arrival Rate. Work is starting on arrival-time charting.
- Further progress was made debugging the data model and its display as it persists to local storage. For example, all-stations data is now read and written to local disk. (Eventually, this will become caching for the web service call).
- The current event that is preselected on startup is now shown in the combo box. The list of events is now persisted to local storage.
- A photo taken with the webcam now appears on the New Record page. Once “sent”, it is persisted as base64-encoded jpeg in the internal data structures and external XML files. It will appear in the Outbox and All Stations views, and in the flip view of search results (though further work is needed on the latter’s thumbnails).
- A new “Edit Report” page was created, and works in a preliminary sense. It is invoked using the Edit charm when viewing a particular item in the outbox and all-stations sent lists, and the search results.
- The hard-coded dummy data is being replaced by I/O to local storage, a prerequisite for actual data and a waypoint towards persistence storage and caching of web service calls. Specifically, the Outbox data is now saved to and retrieved from disk.
- The “New Report” page now generates an actual data record that can subsequently be seen in the Outbox, in search results, and in local storage.
- Field verification is starting to be added to New Report. For instance, the Send button is not enabled if no zone has been chosen.
- During a Send, a Win 8 style progress bar (floating beads of light) now appears. (So far, a Send merely stores the data record locally, doesn’t actually send to PL. A fixed delay is added to mimic expected performance.)
- The Statistics set of flip pages is gradually being developed. The first page now shows 2 pie charts, arrivals by triage zone and by gender respectively. These now reflect outbox counts instead of random numbers. Other charts are in progress.
- Prototyping (as “TP8_1”) continued, as detailed next.
- Layout of the New Report page for Snapped and Portrait modes were optimized.
- The controls for sorting of search results (as well as outbox and all-stations lists) became active with a first, partial implementation of sorting by field and by direction (ascending/descending order).
- A “snapped view” of the sort controls page was added.
- The snapped view of search results has more compact buttons for sort and filter.
- A first implementation of a non-empty “Statistics” page was begun. This was based on an open-source charting library and sample code, that provides a flipview with multiple sample charts. The first chart, a pie chart, was mocked up to represent patient arrivals to various triage zones.
- Supportive of [NLM/CEB Branch Chief] G. Thoma’s desire to move towards separate systems for community-based and hospital-based disasters, L. Neve is setting up a separate “hospital” instance of PL. When running, TriagePic will report to it.
- Prototyping (as “TP8_1”) continued, as detailed next.
- Controls in the “Filters” flyout were rearranged in display properly on a minimal-screen-height device, and tied into underlying data variables.
- Many of those variables are now used in algorithms to affect search results, as well as the separate views of Outbox and All Stations. Eventually all variables will be active.
- For “snapped” mode (1/4 screen), a non-flyout version of Filters was developed.
- In the search results “flip view”, that shows details of each reported patient as a full page, a subtitle now shows where in the results list you are, as, e.g., “(3 of 17)”. This should have been trivial, but was not; the method to do so was posted for others.
- Layout of controls on the New Report page were made more flowable, so they work better in “Filled” (3/4 screen) mode. A first layout for snapped mode was done.
- Backup of the TP8_1 code, formerly limited to the local machine, now includes off-site, e.g., in Skydrive. (Because Win 8 machines aren’t yet allowed on NLM non-guest networks, NLM-standard backup techniques aren’t available.)
- At month’s end, the latest version was deployed on the Samsung Slate and demo’d to G. Thoma and S. Antani.
- Separately, libraries and samples for basic charts and graphs were assayed for possible use in the “Statistics” page.
##February, 2013
- Windows 8 developer tools were updated on my desktop and Samsung Slate.
- Prototyping of Win 8 TriagePic (as “TP_1”) continued, as detailed next.
- The first draft of the New Report form screen (at high pixel resolution) was completed in landscape and “snapped” modes; the layouts are quite different.
- A simple first design of the Checklist page (in both modes) includes a Disaster Event combo box (with symbol and text) and Roster field. Roster has a Pick button to choose people (e.g., hospital staff) from people-contact providers like Win8’s People app.
- The underlying data model is now more realistic (though still dummy data), with more effective mapping between triage data and standardized search-results display format.
- The top “navigation” App Bar was made more consistent across pages, and page-specific commands added to the bottom App Bar.
- The project, developed on a desktop with large touch monitor, was ported to the Samsung Slate and demo’d to the Feb. 27th LPF group meeting.
- The Win 7 and Win 8 Samsung Slates were thusly stickered, and given MS updates.
- Back-ordered Win 8 distribution on CD media was received.
- Discussions continue about the evolution and distribution of the PL and Vesuvius code bases. For further context, I and G. Miernicki reviewed recent history and likely short-term future. This was distilled into a “Genealogy of Vesuvius” slide set, & distributed.
- Non-trial versions of Windows 8 were installed on the Samsung Slate (by me [Glenn Pearson]) and on a new off-network desktop machine (by B. Neeriemer). The latter is off-LAN and uses a wireless dongle through the NIH guest network to reach the internet and Windows Store. Monitors were swapped so that Win 8 has the 3M touchscreen. The new machine takes the floor-space of old CEB-BEC, which has been moved to a rack for virtualization.
- Windows 8 developer tools and tutorials (Visual Studio 2012 Express, Blend, Window Store app samples) were (re)installed, and further explored.
- As a first TriagePic design mockup and implementation-alternatives testbed, a Windows Store app “TP8_1” was created. Pulling together various standard design templates, and an evolving dummy-data model, a navigable façade app has been built. The templates handle some aspects of screen rotation and sizing. There is no real data storage or web service calls yet. Photo images are largely represented by colored squares so far. Currently (and subject to change), this app has:
- A static launch tile and splash screen, and a main page made up of 5 static tiles: Checklist, New Report, Outbox, All Stations, and Statistics [to do].
- A navigation app bar with icons to Home and the pages of the 5 tiles.
- In the case of New Report, a basic form, with invocation of webcam photo-capture. The latter, based on sample code, allows manual image cropping and webcam-device settings adjustments.
- For Outbox and All Stations, use of a split-screen design, with a vertical scrolled card list to the left, and a closeup of the selected card to right.
- Integration with the Win 8 “Settings” charm. The stock flyout (from the right edge) has a “Privileges” link, whose child flyout specifies what the app needs (such as access to the webcam). Additional links and child flyouts were added for “About & Support”, “Options Set at PL”, “Options Set Here”, “My Organization”, and “Data Privacy”. Not much real content on these child flyouts yet.
- Integration with the Win 8 “Search” charm. When invoked, the search flyout allows entering a partial patient name or ID. Match suggestions are provided. The results page has a title, a choice of group (Outbox or From All Stations), then the results themselves as multirow items (like “cards”) with thumbnail and text. Clicking on a card goes over to a “flip view”, with closeup of a particular patient record and horizontal panning among search results closeups.
- For the search results page, there are additional “sort” and “filter” icons, which evoke separate flyouts. Exemplar controls on these flyouts aren’t yet wired up.
- For the hospital use case with LPF, there is now active discussion about refocusing toward hospital hosting, instead of NLM hosting. Open-sourcing seems a reasonable mechanism to promote this. I and G. Miernicki wrote a brief document considering short-term directions for PL and TriagePic in this regard.
- Home
- Support: Contacts
- How To Get TriageTrak Credentials
- User Guide to TriagePic from the Windows Store
- More about Mass Casualty IDs
- Using TriagePic with Windows 10
- Store Release Notes
- Retaining Local Data when Updating or Uninstalling then Reinstalling
- Privacy Policy: App and System Permissions, Privacy, and Security
- Operational Issues, including Device-Specific Notes
- TriageTrak, and TriagePic on other platforms: https://lpf.nlm.nih.gov