Improvements & Fixes
Rising Risk
- Improved Rising Risk response handling for more reliable recommendations
- Better support for different response formats from the risk analysis service
- Recommended services can still be shown if optional candidate data cannot be parsed
- Added automatic retries to reduce failures from temporary timeouts
- Improved diagnostic events so support teams can identify response parsing issues faster
Note: This version improves Rising Risk reliability and resilience when external services return unexpected data.
Download v1.1.26Improvements & Fixes
Clinical System Reconnect
- Improved reconnect reliability when EMIS is closed and reopened while JoyConnect remains open
- Patient loading now recovers more reliably once EMIS is available again
- Batch processing is handled more reliably during reconnect and patient loading flows
Rising Risk & Services
- Moved Rising Risk evaluation to phase 3 for improved analysis
- Removed apps from the Saved Services tab so apps only appear in the Apps tab
Note: This version focuses on EMIS reconnect stability and cleaner service/app separation.
Download v1.1.25New Features
Clinical System Auto-Switch
- JoyConnect can now automatically switch between EMIS and SystmOne during startup when the selected system is unavailable and the other system is detected
- Auto-switching can be enabled or disabled by environment and organization settings
- A cooldown setting prevents repeated rapid switching between clinical systems
User Interface
- Added close buttons to JoyNotes and the main window
Improvements & Fixes
Reliability
- Improved signposting SNOMED code caching reliability
- Patient location is now set correctly from filters
- Improved reliability when fetching organization settings
- Added more telemetry for auto-switching decisions and outcomes
Performance
- Improved marketplace search reliability
- Improved activity list rendering performance for large activity lists
Note: This version adds smarter startup behavior when multiple clinical systems are available.
Download v1.1.24New Features
Proactive Alerts
- Added more tracking across the proactive alert flow to improve visibility into why alerts are shown or skipped
- Dismissal events now include a reason such as no time, patient declined, or incorrect service
- Added tracking when daily alert limits are successfully recorded
Improvements & Fixes
Daily Alert Limits
- Fixed daily limit checks firing twice for repeat patient triggers
- Daily limits now only apply in release builds and do not block debug or staging builds
- Dismissing or closing a proactive alert now correctly records completion for the day
Database Migration
- Improved database migration resilience when older schemas are missing expected columns
- Reduced file-in-use migration failures by closing database connections and retrying lock conflicts
Marketplace
- Improved marketplace search reliability when handling unsuccessful responses
Note: This version improves proactive alert gating and database migration stability.
Download v1.1.21Improvements & Fixes
Proactive Care
- Fixed the proactive care pathways data flow
- Improved data seeding to support a clearer migration path
Marketplace & Activities
- Marketplace listings without email addresses are now hidden to prevent WhatsApp flows breaking
- WhatsApp signposts are removed from the activities endpoint so only email signposts and referrals are shown where expected
Note: This version fixes proactive care flow issues and improves marketplace activity handling.
Download v1.1.20New Features
Pebble & WhatsApp Signposting
- Added Pebble and WhatsApp Signposting banners to the activity pane
- Banners now show conversation counts for each feature
- Conversation summaries can be opened to view generated summaries, SNOMED codes, and the full conversation
External Referrals
- Added the ability to adjust the zoom level in external referral WebView pages
Improvements & Fixes
Error Messages
- Improved feedback when no auth token is found instead of showing a generic no patient selected message
Note: This version adds better visibility for Pebble and WhatsApp Signposting conversations.
Download v1.1.18New Features
Rising Risk
- Added new Rising Risk WebView screens
- Updated dependency injection and startup setup for Rising Risk
- Removed older WPF Rising Risk views in favour of the updated WebView approach
Fileback Queue
- Added a new Fileback Queue view
Improvements & Fixes
- Prevented WhatsApp messages being sent to landline numbers
- Set the UK dialing code as the default selected dialing code
Fileback
- Improved broker updates after filebacks succeed
Note: This version updates Rising Risk screens and improves WhatsApp number handling.
Download v1.1.17Improvements & Fixes
Intercom & Chat
- Improved Intercom loading reliability by checking navigation success before opening chat
- Added retry attempts to give Intercom more time to initialize before showing
Clinical System Stability
- Improved SystmOne socket handling when the connection is disconnected
- Reduced repeated SystmOne connection error logs when disconnected
- EMIS force loading no longer loads clinical events unnecessarily
Performance & Memory
- Improved cleanup for view models to reduce memory leaks
- Updated API calls to handle failures more gracefully
- Added drag support improvements and reset widget position support
- Added clearer empty activity messaging and tooltips
Note: This version focuses on connection stability, memory cleanup, and smoother window handling.
Download v1.1.16Improvements & Fixes
Health Check
- Occupation selection now uses the SNOMED search window instead of a simple dropdown
- QRisk helper image now displays the correct QRisk version based on feature flags
Activities & JoyChat
- AILW statuses now match the server response more accurately
- Activity and JoyChat details now display the updated AILW statuses
- JoyChat activity status messages are cleaned up by removing HTML
Reliability
- Activities now return an empty list instead of failing when no activities are found
- Patient reload now works for EMIS as well as SystmOne
- Health Check activities are no longer checked when the clinical system is SystmOne
- Added authorization handling for Joy API calls
Note: This version improves Health Check inputs, activity display, and patient reload reliability.
Download v1.1.15New Features
QRisk3
- Added new QRisk3 calculator functionality using the Endeavour API
- Added an organization feature flag to control QRisk3 availability
Improvements & Fixes
Saved Services
- Saved services now use the online call when the app is online
Memory & Cleanup
- Improved window and signposting cleanup to reduce memory leaks
- Navigation now disposes view models where supported
- Removed SVG usage from the signposting form to avoid retained references
Health Check
- Fixed spelling mistakes in Health Check JSON headers
Note: This version adds QRisk3 support and improves resource cleanup.
Download v1.1.14New Features
Health Checks
- Added offline mode for Health Checks
Service Reliability
- Added kill switch functionality for Joy API and FileBack services
Improvements & Fixes
Settings & Filters
- Country code selection now remembers the previously selected code more reliably
- Filter loading and saving has been improved for JoyConnect and JoyConnect Universal
- Filter changes are now saved through the right storage path for each app
Patient & Activities
- Activities refresh when the patient changes and the activity pane is open
- WhatsApp signpost activity status text now displays correctly
- Improved handling for WhatsApp signpost activity mapping
Reliability
- Fixed Health Check image binding issues
- Improved window cleanup and owner handling to reduce null reference issues
- Improved patient change tracking and reduced unnecessary event noise
- Improved EMIS patient reload behavior after fileback and from the client details UI
Note: This version adds Health Check offline support and improves filter, patient, and activity handling.
Download v1.1.13Improvements & Fixes
Configuration
- Updated JoyBroker release flags for release and internal builds
- Turned off Rising Risk patient information gathering
Note: This version updates release configuration and Rising Risk data gathering behavior.
Download v1.1.12New Features
Saved Services
- Marketplace listings can now be saved to a user's local Saved Services tab
- Added local storage and service handling for saved marketplace listings
Improvements & Fixes
Proactive Insights
- Proactive insights now receive full patient records once per patient load
Activities & Signposting
- Activity details are cleaner and hide empty UI sections
- Activity pane loading animation now better matches the app look and feel
- Updated signposting messages and fileback text
Settings
- Improved saving of filter and service preferences in local settings
- Added support for saved service categories and preferences
- Improved organization settings retrieval to reduce excessive calls
Note: This version adds saved marketplace services and improves activity and settings handling.
Download v1.1.11New Features
Patient Search
- Added a background service for scanning clinical systems
- Added SystmOne patient search by postcode and gender
- Added configurable search intervals for patient search
JoyBroker Messages
- Added support for HTTP push messages from JoyBroker
- Push messages can now be displayed through the message dialog
Improvements & Fixes
SystmOne
- SystmOne requests now include the JoyConnect build number for audit trail tracking
Diagnostics
- Improved Rollbar fingerprinting to reduce duplicate error reports
Note: This version adds patient search foundations and JoyBroker push message support.
Download v1.1.10New Features
JoyBroker Heartbeat
- Added a background heartbeat service for JoyBroker communication
- Added broker request and response models for heartbeat communication
- Added Windows version and clinical system details to broker-compatible messages
Improvements & Fixes
Settings & Stability
- Settings file checks now run before system settings are loaded
- Added safeguards against runtime null reference exceptions
Note: This version adds JoyBroker heartbeat support and improves startup safety.
Download v1.1.9Improvements & Fixes
Signposting
- Signposting now shows the error screen when submission fails so users can retry
- Improved handling when the client record is missing during signposting
Note: This version improves signposting failure handling.
Download v1.1.8Improvements & Fixes
Sync & Connections
- Added a delay to syncing so required data is ready before sync begins
- Improved WebSocket connection and disconnection handling
- Added retry handling when checking whether the EMIS process is active
Signposting & Tracking
- Fixed WhatsApp signpost validation when a patient does not have an email address
- Removed unnecessary Rollbar calls from activity tracking
Note: This version improves sync timing, WebSocket stability, and WhatsApp validation.
Download v1.1.7Improvements & Fixes
WhatsApp Signposting
- Added WhatsApp signpost activities to the activity list
- Updated default WhatsApp signposting messages for single and multiple services
- Improved signposting initialization and cleaned up unused code
Note: This version improves WhatsApp signposting support and activity display.
Download v1.1.6New Features
Health Check
- View patient's previous Health Check history for better continuity of care
Marketplace Search (Feature Preview)
- Switch between your saved services and marketplace services in one place
- New filter and search options help you find services faster
- Clear filters and search with dedicated buttons
- Services load automatically as you scroll for smoother browsing
- Edit location settings directly from the search interface
Offline Support
- Activity tracking now works even when you're offline - events sync automatically when you reconnect
Improvements & Fixes
Referrals & Signposting
- Quick Fill for referrals now includes safety checks to ensure relevance and accuracy
- WhatsApp numbers can now be included when signposting patients
- Improved data storage for patient problems, events, and examination codes
- Online users always get the latest information when creating referrals or signposting
Alerts & Notifications
- Proactive alerts now always appear on top of other windows so you don't miss important messages
- Better error handling when displaying notification banners
Connection & Performance
- Fixed SystmOne connection issues that could cause intermittent connectivity problems
- Improved EMIS connection stability and session validation
- Better handling of concurrent operations for smoother performance
- Optimized background synchronization with smarter timing (5-7 minute delay on startup)
- Added cache freshness checks (6-hour refresh) for up-to-date information
- Improved rate limiting to prevent system overload
User Interface
- Fixed scrollbar behavior in service details
- Updated signposting form with better visibility controls
- Streamlined navigation to make room for new search features
- Custom placeholder text in searchable dropdowns
Settings & Configuration
- Improved how settings are loaded and saved for better reliability
- Filter and search preferences now properly tied to your user account and organization
- Enhanced context handling for database operations
Note: This version includes marketplace search capabilities (behind a feature flag), improved offline support, and enhanced connection stability.
Download v1.1.5New Features
Letter Templates
- New Joy Patient Template added to your referral letter templates
- Template section renamed from "Referral Letters" to "Letter Templates" for clarity
Major Performance Improvements
SystmOne Integration Rebuilt
- Dramatically reduced network load - Background checks now happen every 10 minutes instead of every 5 seconds
- Faster patient updates - When you switch back to JoyConnect, patient information refreshes within 2 seconds
- More reliable connections - Connections are now reused efficiently instead of creating new ones each time
- Automatic error recovery - If connections fail, the system automatically retries and recovers
- Better handling of busy periods - Circuit breaker prevents system overload during high-volume times
Data Handling
- Fixed issues with patient names containing special characters (like <, >, &, quotes)
- Improved processing of dates and optional fields from SystmOne
- Better handling of organization name lookups
Reliability & Stability
- Fixed connection blocking issues that could cause SystmOne communication failures during busy periods
- Optimized resource usage for better overall performance
- Enhanced error handling with detailed diagnostics for troubleshooting
- Settings now refresh properly when switching between clinical systems
User Interface
- Simplified app navigation by streamlining the details view
Note: This version includes a complete rebuild of the SystmOne integration system with 37 automated tests ensuring reliability. You should notice significantly faster performance and fewer connection issues.
Download v1.1.4Improvements & Fixes
Connectivity
- Fixed connection check to Joy API for more accurate status reporting
Note: This is a hotfix release addressing connectivity status detection.
Download v1.1.3Improvements & Fixes
SystmOne Filing
- Fixed issue where notes were being filed twice when working offline then coming back online
- SystmOne now correctly handles its own offline caching without duplication
Note: This version fixes a filing duplication issue with SystmOne's offline mode.
Download v1.1.1New Features
Connectivity Indicator
- New visual indicator shows your connection status at a glance
- See when you're online, offline, or experiencing connection issues
QRISK Calculator
- Built-in cardiovascular disease risk calculator (QRISK3)
- Calculates 10-year CVD risk with comprehensive risk factor analysis
- Includes Heart Age calculations
- Supports ethnicity mapping and medication detection
Health Check Enhancements
- File Health Checks back to clinical systems
- Change Health Check status to "In Progress"
- Updated completion screen now shows referral listing options
- Physical activity calculations now follow GPPAQ guidance
Intercom Support
- Get help directly through the app with integrated Intercom support
- Shows availability status and helpful tooltips
Improvements & Fixes
Performance & Reliability
- Organization settings now cached for faster loading
- Improved auto-update process with dedicated update service
- Better handling of connection issues with SystmOne
- Enhanced error recovery during high-load scenarios
- More efficient event handling to prevent duplicate operations
- Reduced excessive error logging for cleaner diagnostics
JoyChat
- Phone number dropdown now searchable for easier selection
- Improved performance with large contact lists
User Interface
- Service details now hide empty sections for a cleaner look
- Fixed display issues with listings when benefits information isn't available
- SNOMED code selector only appears when codes are available
- Better logging and error messages for external referrals
Transcription
- Now tracking how long transcriptions take to generate for quality monitoring
- Improved tracking of Quick Fill feature usage
Code Quality
- Centralized package management for more consistent updates
- Updated core framework packages for improved stability
- Added code style consistency rules
- Hot reload now works properly for faster development
Note: This is a major update with new features, significant performance improvements, and enhanced offline capabilities.
Download v1.1.0New Features
- Add health check functionality to JoyApiService and JSON serialization methods for health check models.
- Added loading, success and error states when saving as draft or completing a HealthCheck.
- Added EMIS fileback functionality for HealthCheck.
- Added contributing users to Health Check item.
Updated
- JoyApiService now fires off anonymous events when a call to
TrackEventfails for some reason - user role added to AmplitudeItem.cs
- Added correct format for S1 date of birth which now leads to the DateOfBirthWithAge property to create the correct strings for both EMIS and S1
StartServerinS1ResilienceService.csupdated to run whilst the websocket is not null, this occurs when switching between S1 and EMIS- Added Health Check banner in activity panel.
- Added HealtchCheckActivityVm and HealtchCheckAvtivityDetails user control
- Added DummyDataHelper in core for use when needing dummy data
- Tag and Activity classes moved into JoyConnect.Core.Models so we can use them in JoyConnect.Providers
- Added health_check_icon.svg and health_check_banner.png
Changed
- Update load user and organisation in EMIS api service so when we poll we dont overwrite if there are no differences.
- Changed Health Check Activities API formatting.
- Added
Xclose button to Health Checks. - Added message box to closing, saving and completing Health Checks.
- Added assigned date to SNOMED codes so fielback to EMIS is correct.
- Fixed missing componenets and propertychanged events.
- Reformatted styling on all windows in Health Checks.
- Changed
Save as Draftto beSaveand doesnt close the window. - Updated typography, colors, and brushes for UI consistency
- Replaced hardcoded styles with reusable resource dictionary references
- Enhanced visual states across controls for better user feedback
- Updated all UserControls to include missing elements from EMIS templates.
- Update SNOMED Code to have descriptive text for filebacks.
Added
- Centralized resource dictionaries for ComboBox, CheckBox, TextBox, and DatePicker styles to standardize UI components
- Material Design Icons font (
materialdesignicons-webfont.ttf) with integrated icon support across controls MaterialDesignIconsclass providing Unicode constants for icon referencesNumericTextBoxBehaviorfor numeric input validationDisplayMemberPathConverterfor improved data bindingTextTruncateConverterfor consistent text handlingJoyDatePickerstyle with validation, focus, and disabled states- Reusable icon styles in
IconFonts.xamlsupporting scalable icon sizes - Tooltips for improved accessibility
Improved
- Consistent look and feel across all UI controls
- Accessibility through enhanced tooltips and visual states
Updated
- Updated JoyChat UI to include consent checkbox, information text on what JoyChat is and new combobox to choose numbers from patient record
- Fixed some exceptions where encountered
- Fixed frozen OLE data object exception on CountryCodeBehavior and TelephoneBehavior when pasting text
- Updated project structure with a new test project (
JoyConnect.Services.Tests) and documented test coverage, utilities, and execution inREADME.md. - Reminder window, viewmodel added
- EF migration added for 2 timestamps which got added to UserDataSettings
- Calling UserDataSettings.LoadSettings() in constructor of SystemSettingsVM
- DeleteReferralTemplate in SystemSettingsVM now also deletes the relevant template from the database
- SystemSetting.xaml cleaned and design time datacontext added
New Features
- Created Health Check models and ViewModels based on EMIS templates.
- Added welcome page and page navigation to Health Check
- Added InverseBooleanConverter to resources library
- Added HealthCheck Usercontrol and functionality for Invites
- Added HealthCheck Usercontrol and functionality for Information
- Added HealthCheck Usercontrol and functionality for Examination
- Added HealthCheck Usercontrol and functionality for Management
- Added HealthCheck Final screen and "Complete and Save" button plus page count.
Added
- Adding interfaces required for Offline Mode feature (JOY2-817)
- Adding data models for Offline Mode feature (JOY2-817)
- Adding services required for Offline Mode feature (JOY2-817)
Fixed
- Fixed the language version for AutoUpdater (JOY2-817)
- Add offline mode services with caching and tests
- Added comprehensive unit tests for all services using xUnit, FluentAssertions, and NSubstitute. Created test utilities (
TestDbContextFactory,TestDataBuilder) for isolated testing. - Introduced fallback mechanisms, error handling, and transactional operations for robust offline functionality.
- Implemented offline mode functionality with new services:
- Added
ConnectivityService,JoyIdCacheService,ListingsCacheService,PendingReferralService,ReferralFormCacheService, andSnomedCacheServicefor caching, synchronization, and offline data management. - Enhanced
JoyConnectDbContextwithDisableAutomaticTimestampsfor testing. - Updated dependency injection to register new services.
Changed
- Fixed bug where config file feature flag for JoyChat wasn't enabling joychat
Updated
- added an explicit check to always trigger proactive alerts on a test user
Fixed
- Fixed the local folder structure for JoyConnect.AudioService
- Fixed the project reference to JoyConnect.AudioService after folder clean up
- Fixed the JoyConnect.ConsultationService's reference to JoyConnect.AudioService
- Added the JoyConnect.Services project which holds the offline mode implementation
- JC log a fault updated to first check for a logged-in user before posting logs which led to an exception
- JC log a fault updated to not pass through the parent window as this can be null when accessing the context menu with the widget not shown,this too led to a exception
- Fixed a directory concern where the AutoUpdater is trying to be downloaded to the system32 directory
Fixed Memory Leaks and Resource Cleanup When Switching Clinical Systems
- S1ResilienceService: Now properly closes WebSocket connections, cancels ongoing operations, and disposes resources when stopped
- EmisApiService: Added COM object release using
Marshal.ReleaseComObject()to prevent memory leaks - S1ApiService: Enhanced service stopping to ensure resilience service is properly shut down
- System Switching: Added explicit S1ResilienceService shutdown when switching from SystmOne to EMIS
Implemented CircuitBreaker in S1Connector and S1ResilienceService
- S1Connector: Added circuit breakers for socket operations and device ID retrieval with configurable thresholds
- S1ResilienceService: Added circuit breaker for message processing to prevent cascading failures
- Configuration: Circuit breaker settings (failure thresholds, timeout durations) are now configurable via App.config
- Event Notifications: Circuit breaker state changes are logged and published via event service for monitoring
- Graceful Degradation: When circuit is open, operations fail fast with clear error messages instead of hanging
Changed
- Adjust Ad window to fix white background and sizing.
- Changed changelog script to calculate the correct version header.
Changed
- Improved exception handling and automated recovery actions: added RecoveryAction strategies and self-healing for common UI/service/network problems.
- Exceptions are now tracked with thresholds to prevent infinite loops; user-friendly recovery dialogs are shown as needed.
- Application restart and crash recovery mechanisms enhanced for reliability; previous crashes are detected on startup.
- Telemetry and logging updated to include recovery tracking and uptime.
- AutoUpdater updated to 1.0.21; verbose S1GetResponse flag added for log spam control.
- Refactored "Log a Fault" to LogCaptureService and removed unused CheckLogRequests.
- Jester AI calls include new X headers; AzureAIService removed and related methods cleaned up.
- Fixed case sensitive search and "enter" on referrals.
New Features
- Added Health checker organisation setting and moved organisation settings and feature flag classes to core library.
- Create Health Check pop up window and implement viewmodel template.
- Added Health Check button in details window to open health check.
- Added more Amplitude tracking to help catch app crashes.
Updated
- Added SystemOne.BufferSize in config, this allows us te increase/decrease the size without having to rebuild the application
- Profiled and addressed some pieces of code in S1Connector.cs to reduce its memory footprint
- Change S1 resilience start up logic to only run when S1 is selected as the clinical system.
New Features
- Added the ability to edit and save referral letter templates for consultations in JoyNotes.
- Added a new EF migration and table for referral letters.
- Added the ability to regenerate referral letters.
- Added a button to failed consultation summary generation that allows users to retry summary generation.
- Added amplitude tracking in more places to record user clicks and better understand discrepancies between referral/signposting opened and sent
Changed
- Removed June event methods and renamed all occurances of June to be Amplitude.
- Changed the error form for signposting to have a try feature and updated the text to say unsuccessful
- Changed all amplitude event strings to be stored in one place for easier tracking
Added
- Added the new WixSharp-based installer
- Added the ability to set the clinical system on startup
Updated
- Update Wix installers to sit under a solution folder to separate
Fixed
- Fixed the JCU pipeline to remove the *.x86 suffix
- Fixed the JC pipeline in release to change the output to Slack
Added
- Added email notification feature when a fault is successfully logged
- Added new tables to manage the offline mode feature
- Moved to entity configuration classes for all local tables
- Cleaned up the OnModelCreating method to use reflection-based harvesting
- Telemetry to Application Insights has been added
- Currently being blocked to
Releaseonly - Added a new settings tab to allow users to toggle off file backs
- Toggle is enabled by default and only accessible by Systm1 users
Changed
- Added missing start button to JoyNotes window
- Fixed log a fault where it would report it succeeded when it actually failed.
- Clean up EMIS and Circuit breaker to reduce unwanted logging and rollbar calls.
- Changed messagebox open logic to be more conistant.
- Fix S1 no patient log spamming the log files
- Update transcription summary and regenerate summary timeouts to be 90 seconds and included new amplitude events for fails.
- Added a check and delete process for files in the AppData folders that are older than 30 days.
- Change App.xaml.cs rollbar logging of some calls to be warnings instead of criticals.
- We've removed the ability for the user to select categories and made notes optional.
- Fix App tab text alignment to the left
- Removed unwanted rollbar calls in mainwindow and EMIS
Fixed
- Fixed unhandled exceptions causing the application to crash in the mainwindow
- Fixed JC saved searches coming back with null referral type and categories
New Features
- Added new context menu option to reset Joy key for API calls
Updated
- Updated the AutoUpdater to fix the correct registry keys for modification with privilege
- Added an MSI product validator to check the validaty of an installed product
- Added a check to manage both Norfolk and JoyConnect standard WiX installers
New Features
- Added UI changes for JoyNotes recording to include audio level bar while recording.
- Added added ability to pause and resume recording.
- Added information messages for audio quality problems.
- Added new method for fixing window position if the window size changes.
- Added closing event to stop recording when JoyNotes is closed via the microhpone button.
Changed
- Adjust window service to handle window size changes instead of seperate call.
- Adjust the API service status to be stored in the main window so that we can use it to update the message box when the widget buttons are pressed.
- Change the way we determine if S1 is running by checking out connection to the socket.
- Changed GetResponseFromSystmOne to return null if an exception is thrown so we can determine if we get an empty response to reset patient and user information.
- Update URL of the JoyChat n8n service.
- Altered No patient selected message to not always say JoyNotes
Added
- PNG icons in SharedAssets
- Added Device Labelling Tab in both JC and JCU
Fixed
- Added json output example of family history qualifiers in EMIS prompt to allow for derserialisation
Updated
- Update the path in JoyConnect to use the executable path, rather than the hard coded
ProgramData - Minor updates to the way the AutoUpdater handles shortcuts
New Features
- Added JoyChat functionality with new listing to refer to and the ability to view the status in the activities tab.
- Added functionality to the resume and discard buttons in the JoyNotes recording done window.
- Added more extensive amplitude logging in the JoyNotes flow.
- Implemented the discard button in the GeneratingTranscriptionReadyWindow
Changed
- Reworked the way we open windows allowing us more control of where windows open and added logic so the windows don't open off screen.
Updated
- Added unloaded event for ClientDetailsPane, closing ChatWindow
- Added come comments in ClientDetailsPane.xaml.cs
- intercom.html updated to reflect active user correctly
- IntercomHelper class added to generate JWT
- Removed mouse left button handler from ChatWindow
Added
- Added the ability for JoyConnect to self-correct EMIS authentication issues.
- Added additional Rollbar logging to capture situations where no data is returned from Jester to JoyConnect.
New Features
- Add verbosity levels to the consultation summary prompt
- Add selection for verbosity level in settings window
- Added the ability to regenerate transcription summary in transcription summary window.
Changed
- Added cancellation token timeouts when generating summary for consultations to stop freezing when API endpoint doesn't return.
- Swapped widget appearance default so that JoyConnect stays open without patient.
Fixed
- DUCE wpf memory problem with application startup Window handle and fixed memory leaks from story animations in mainwindow.
- Add dispatcher around registerdialog method to render UI when FetchOrgSettings tick occurs
- Adjusted the EMIS message boxes to be more suitable to the error reason.
- Fixed a problem where we would popup multiple error message dialogs, now we just have one at a time.
- Fixed the EMIS interop to move back to 4.2
Added
- JoyConnect.SessionManager unit test project
- Relevant tests for all classes in the JoyConnect.SessionManager namespace
- Changelog
Removed
- Removed the intended logging when patient is selected in clinical system
- Removed a few Info logs into Rollbar
Updated
- S1Connector to use ArrayPool over pure StringBuilder
Added
- Empty string checking and return early when no patient selected for EMIS
- Added additional Amplitude tracking for successful and failing Filebacks in EMIS and S1
Updated
- Updated the build pipeline to include static analyis
Added
- Created new SessionManager service to centralize session information management across the application
- Added centralized user, organization, and patient state management with event-driven architecture
- Implemented patient freeze/unfreeze functionality to prevent patient switching during critical operations
- Added session validation methods to ensure proper state before operations
- Created ISessionManager interface with comprehensive session management capabilities
- Added dependency injection support for SessionManager services
- Integrated SessionManager with existing ViewModels and services for consistent state management
- Added a circuit breaker pattern to wrap specific calls to the clinical system, improving resilience and performance.
Changed
- Moved APIManager to new interface called ClinicalManager
- Refactored application to use centralized SessionManager instead of scattered session state management
- Updated ViewModels, ConsultationManager and MainWindow to subscribe to SessionManager events for patient and user changes
- Updated EMIS service to break large complexities into smaller, more manageable methods.
- Added circuit breaker to specific large calls
Fixed
- Improved session state consistency across the application by centralizing session management
- Enhanced patient switching reliability through proper session validation
- Fixed potential race conditions in patient state management through centralized event handling
- Fixed copy on the loading screen for JoyNotes
Fixed
- Joy API refer bug where it doesn't return null on failure.
Updated
- Added more metrics for amplitude event tracking.
Added
- Added a new tracing service to help diagnose issues related to system memory usage.
- DUCE tracing is now enabled by default to assist in debugging memory-related problems.
Updated
- Updated unit tests to include scenarios that simulate low memory conditions, ensuring better coverage for memory management issues.
- Added a back button to the JoyConnect app, allowing users to navigate back to the previous screen easily.
- Added a new Rollbar provider to JoyConnect
Change
- Update tracking events to use new amplitude endpoint and add object to manage body object.
Fixed
- AuthToken not updates current record instead of adding new record to DB that is not used.
- Adding exception handling when scraping questions from user form due to semaphore timeout.
Updated
- Changed how we notify the user of errors with EMIS, now the messages are more specific to each scenario that happens.
- Adjusted MessageBox dialog to allow the user of hyper links for better support to the user.
Updated
- Added the ability to "freeze" the patient record when
Referis clicked - Added the ability for the refer pane to be notified of clinical system changes
- Changed the error window so we now have a button to retry the referral ensuring we dont lose data.
Fixed
- Fixed the submission of referrals to be blocked if clinical system change is detected
Updated
- Updated summarisation outcome to cater for CTV3 codes
- Updated the summary view to show CTV3 if availbale otherwise default to SNOMED
- Updated the UpdatePatientRecord for SystmOne to file back CTV3 over SNOMED
Updated
- Updated methods to log warnings, over errors, especially when something is expected.
- Added additional fields to the logging, include
machine_nameandjoyconnect_versionfor easier tracing - Added a more agressive policy for deleting the batch file
- Returned the
PatientChangedevent
Added
- Added a new event to MainWindow shown
Fixed
- Stop JC restarting everytime the AuthToken failed, instead we pop up the message but reset the AuthToken to try fix the problem.
- When empty patient and doctor information is passed through to the LLM for QuickFill we no longer try to answer questions with made up information.
- Update SuccessfulSavedNotes listings to properly show External referral listings.
- Duplicate listing objects changed to single usage.
- Remove unnecessary june logging.
Changed
- Added error pop up for when a user hasn't filled in all required fields and clicks submit.
- Removed old prompt for generating the consultation.
- Adjust prompt to favour using the Doctors details when duplicate questions are asking for Firstname, lastname, etc.
- Altered the mapping logic to use the target_id of the html element instead of the quesiton in the quick fill logic.
New Features
- Improve quick fill speed for long referral forms by batch processing the questions.
- Added the ability to flush rollbar logs in updater.
New Features
- Swapped SNOMED searching to use our new Jester endpoint instead of the SNOMED CT http request
- External referral now scrapes users answers in the referral form.
- Updated question formatting in QuickFill prompt to improve question answering.
- Added the ability for a clinical system to define the SNOMED term services to use
Changed
- Added prompt change for consultations to mention dictation of who is present during consultation.
- Button and message box text for closing external referral forms.
Fixed
- Streamlined Rollbar logging configuration in Application.cs.
- Adjusted command line arguments in launchSettings.json for AutoUpdater.
- Refactored AutoUpdater class: improved error handling, added DownloadArchive and ExtractAndRestartJoyConnect methods for better clarity and maintainability.
- Updated documentation to reflect recent fixes related to updater resilience.
- Updated the support link on the FAQs link in both JC and JCU to the new support site.
- Add tooltip for listings when listing names are text wrapped
- Fixed a bug around authentication and token access.
- The ability to switch patients in clinical systems have been simplified
- An additional set of logging has been added to the application to trace more nuanced scenarios
- File back error handling has been corrected by adding a UI indication when an error does occur
- A collection of stability issues have been addressed as well
- Fixed disposal of WebView when window is closed
- Updated SNOMED CT API version
- Stability with json serialisation from quick fill response
New Features
- Added external referral window for filling in external referral forms.
- Added user information to prompt and changed patient information into json serialisation instead of xml.
- Added web scraper js to resource to use in external referral window.
- Added quick referral button to referral forms to answers required questions.
- Added Jester prompt to answer questions from the referral form.
- Added WebViewLoader to wix installer.
- Added logging for external referral window and changed WebViewer to be create in external referral view model.
- Added patient examination value gathering for SystmOne.
- Added x64 build process to the pipeline for staging.
- A new installer has been developed to drive the installation of JoyConnect, going forward
- Added pop up window when closing external referral window
Changed
- Changed SystmOne authentication timeout to be two minute instead of 3 seconds.
- Changed the UI surrounding the display of the output devices available on user's machine.
- Changed the way that output devices are being inferred.
New Features
- Added June tracking for microhpone AD window, recording starting and recording stopping.
- Added local logging for the opening and closing of windows.
- Added Rollbar logging for consultation recording errors.
- Added gathering for medication and active problems for S1 and EMIS
- Added medication and active problems to letter generation
- Added user information to referral letter
- Added copied message when copying referral letters
- Added information badge to let users know the letter won't be filebacked
Changed
- Await in consultations now run at the same time instead of one at a time
- Decreased the settings timer to 1 second so we can get the S1 clinical events when patient loads
- Changed all configs to use JesterAIService
Fixed
- Added
App.configto.gitignore. - Improved clarity in
App.xaml.csby renaming a variable. - Reduced timeout for
CheckLogCaptureRequestsinMainWindow.xaml.cs. - Enhanced checks for
_apiServiceand_specificNudgevisibility. - Updated
_updateAvailablehandling inMainWindow.xaml.cs. - Added
qaarchfield inApplicationclass and updated command-line argument handling. - Bumped version in
AutoUpdater.csprojfrom1.0.9to1.0.12. - Changed optimization settings for
Stagingconfiguration toFalse. - Introduced new profile for
AutoUpdaterinlaunchSettings.json. - Improved logging and update logic in
AutoUpdater.cs. - Modified
ConfigurationServiceto adjust executable path and addQARequestproperty. - Enhanced update necessity logic in
ConfigurationServiceto includeQARequest.
New Features
- Added letters to transcription summary window
- Formatted the transcription summary window to match Figma for name and dates
- Added focusing for richtextbox in transcription summary window so it indicates to the user which richtextbox is focused
- Added the ability to add multiple problems to the EMIS consultation.
- Added a max count of codes for problems (3) and other categories (10) in the transcription summary window. Button now shows as disabled when max codes added.
- Added a nax count of code selections in search snomed selection window.
Changed
- Show and Hide widget now affects other open windows so they're not hanging around when the main widget dissapears.
- Moved MessageBoxDialog window into SharePlatformLibrary.
- Clicking grey microphone now opens AD windows for JoyNotes.
Fixed
- Silenced unnecessary Rollbar issue logs in the AutoUpdater
- Major update to the PR pipeline file
- Building both
x86andx64versions of the PR apps - Fixed the building of a patch based on new WiX changes
- Dependency injection
- Fixed S1 referral and signpost message for filebacks (had removed title and date strings by accident)
- Implemented an event-driven architecture with
IEventServiceto enable seamless communication between components. - Enhanced patient switching performance by leveraging event-driven updates and updating ViewModels to dynamically respond to
PatientChangeMessageevents. - Refactored
ConsultationRecorderServicefor better resource management and error handling. - Updated dependency injection to register
IEventServiceas a singleton and integrated it into relevant services and ViewModels. - Added new models (
EventMessage,PatientChangeMessage) to standardize event communication. Improved logging, removed deprecated code, and optimized error handling across the codebase. - Documented changes and fixes in
bug--joy2-3-faster-patient-switching.md.
Updated
- Updated the EMISApiService to try...catch rather than failing through
- Updated the ProcessExit handler to handle ExitCode > 0 as 0 is a false positive
New Features
- Create S1 Constultation Objects.
- Update SNOMED CT API version to fix SNOMED CT search.
- Change SNOMED code checking to use term rather than code as its more reliable.
- Implemented S1 fileback with formatting, currently a little hacky as we are pushing using a bug to push the consultation even if we have an invalid SNOMED code in our list of codes. We also haven't got confirmation on how to push the text back into the corrent categories yet. So this is a version 1 and will need to improved.
- Added Consultation Manager to manage consultation transcriptions, summary, codes and summary formatting to consultation object strucutre.
- Removed AWS usage for summary creation.
- Changed summary window to allow users to edit the text fields in each category.
- Adjust EMIS fileback ordering.
- Removed duplicate codes in consultations.
- Add the ability to hit the Jester AI end-points
- Add Azure prompt for getting the Wider Determines of Health reasons
- Added the ability for users to add and delete SNOMED codes in the transcription summary.
- Updated SNOMED code selector to have the consultation header as a parameter
- Removed the check for JesterAI when disposing of the SpeechRecognizer
- Added summaries for social and family history when filebacking to EMIS
- Added hover affect to turn the button red when deleting SNOMED codes in the transcription summary
- Updated the WDoH prompt and added to the Jester AI service
Fixed
- Fixed empty social category codes causing transcription to fail.
Changed
- Changed Ad Window 'X' close button to be white
Fixed
- Fixed fileback for EMIS referrals by adding in a bool to know if we need to format for consultations or leave as previous implementation with the comments e.g. referrals and signposting
Fixed
- Added
SKIP_PATCHenvironment variable to control patch creation. - Improved baseline version logic to support milestone-based baselines.
- Enhanced JOY-ID extraction from branch names for installer naming.
- Refactored installer archive creation for consistency and reliability.
- Introduced patch creation workflow with WiX and certificate handling.
- Updated S3 sync logic to conditionally upload patch files.
- Added a startup folder shortcut for auto-launch functionality.
- Removed deprecated permissions and cleanup logic for folders.
- Updated WiX package configuration with new GUIDs and upgrade logic.
- Improved shortcut removal logic in
Program.cs. - Enhanced Rollbar configuration to include server hostname.
- Added
patch.wxsfor patch file configuration and validation. - Fixed uninstaller bugs and improved file cleanup during uninstall.
- Updated documentation for uninstaller fixes.
- Miscellaneous fixes: XML namespace corrections, formatting updates.
New Features
- Created AI Service Library to better manage AI service calls
- Moved SNOMED objects to Core library to make them more accessible
- Implemented transcription and mp3 file overrides for JoyNotes to make testing easier.
- Fixed transciption summary parsing bug.
- Added log to show org ID when fetching orgnisation settings.
New Features
- Added information about the Ad to
UserDataSettingsto control when the Ad is able to pop up. - Implement Ad window to pop up with widget load to get awarness for JoyNotes.
- Fixed
PositionWindowWithinParentmaths inWindowServiceto be more central to parent. - Adjust Notes welcome page roles list.
- Added microphone button and animations for accessing joy notes
- Added
WindowCountandAddClosingEventto WindowService class - Changed widget layout to be more dynamic and use grid column definitons so that it auto sizes on content and will making adding more feautres easier in the future
- Created Dropdown box user control for displaying a list of strings
- Updated
SuccessfullySavedNoteswindow to display dropbox for wider determinantes of health reasons, changed listings display items layout and implemented scroll view for entire window - Added wider determinantes of health list to clinical message
- Fixed bug with transcription summary where snomed codes weren't saved from AI response
Fixed
- Updated YAML deployment files to comment out
CustomActionsbuild and release verification steps. - Removed
OutDirproperty fromCustomActions.vcxprojand deletedCustomActions.dllbinary. - Incremented
AutoUpdaterversion to 1.0.9 inAutoUpdater.csprojand updatedAssemblyVersion/FileVersion. - Enhanced
AutoUpdater.cswith improved logging,Regex-based QA URL logic, and updatedKillProcess/RetrieveAndUnpackmethods for restart support. - Updated
Application.cswith new version detection logic, Rollbar logging, and dependency injection improvements. - Added
launchSettings.jsonforAutoUpdaterdebugging and a placeholder markdown file for documentation.
Fixed
- Make
CancellationTokenSource,SpeechRecognizer, andConversationTranscriberfields nullable and non-readonly inConsultationRecorderService.cs. - Add
InitializeandEnsureDirectoriesmethods toConsultationRecorderService.cs. - Move
OnTranscribedmethod and removeOnSpeechRecognizedmethod inConsultationRecorderService.cs. - Update
StopRecordingAsyncto callInitializeafter exception. - Add try-catch blocks to
Writemethods inAudioFileWriter.csandAudioStreamWriter.cs. - Update bug documentation to indicate fix for transcription issue.
Fixed
- Auto-updater uses configuration from solution
- Auto-updater now has a mini-CLI for IT administrators
- Few minor tweaks and logging added
- All update *.json* files have now been baselined
Fixed
- Removed SMTP from AutoUpdater
- Added the ability for the decryption of the dat file to self-correct
New Features
- Adjust the way we open the DetailWindow so it now is managed through the Window service.
- Added the ability for selected snomed codes in the search snomed code window to appear selected when you open it again.
- Choosing snowmed codes during a transcription summary will result in the chosen snomed codes being selected by default
- Changed edit snomed codes in referral and signposting windows to utilise the search snomed codes window in the transcription review.
- Fixed Window service bug where child window wouldn't follow parent window.
- Updated feature--joy2-69-when-making-a-referral-hitting-edit-on-the-select-snomed a "Feature" section.
Fixed
- Downgraded
AssemblyVersionandFileVersioninJoyConnect.csprojfrom1.0.60to1.0.59. - MSI Patch flow is failing, fixing this at the Staging level so we can push this up into Release, code-base is unaffected.
Fixed
- Reordered using directives in App.xaml.cs for better organization.
- Removed unnecessary using directive in MainWindow.xaml.cs.
- Enhanced error handling and logging in MainWindow.xaml.cs:
- Wrapped ManageWidgetAppearance and related operations in try block.
- Moved Authenticate call inside conditional check.
- Added detailed logging with _logger.LogError and RollbarLocator.
- Improved CreateOrganisation method with better error handling.
- Updated S1ApiService.cs for robust XML parsing and processing:
- Added request string for patient coded record XML.
- Ensured events have elements before processing.
- Refactored SnomedCode extraction to handle null values safely.
- Streamlined ClinicalEvent creation inside events loop.
Changed
- Changed initial polling interval for org settings (unauthenticated user) from 1s to 5s
- Changed authenticad user polling interval for org settings from 30s to 30 minutes
Fixed
- Refactored SaveNotesViewModel to use IMainWindow interface, reducing redundant casts and improving maintainability.
- Added ClinicalSystem property to IMainWindow and implemented it in MainWindow.xaml.cs.
- Updated ExecuteSavePatientRecordCommand to use the new window field and log exceptions with more detail.
- Reverted retry time in EmisApiService.cs to 4 hours.
- Introduced async methods for SNOMED code validation in
ConsultationRecorderService.cs. - Added new classes in
SnomedItem.csfor handling extended SNOMED details. - Updated
SearchSnomedViewModel.csto use configurable SNOMED API version. - Enhanced
WindowService.cswith awindowFactoryfor improved window management. - Registered
IWindowFactoryin DI container and createdIWindowFactoryinterface. - Added
WindowFactoryclass inJoyConnect.SharedPlatformLibraryfor creating and configuring WPF windows.
New Features
- Added new welcome page for joy notes that introduces joy notes and allows users to select role to improve prompt writing.
- Added user data settings static class to manage user data better. Includes user selected role from welcome page
- Adjusted consultation prompt to include choosen role.
- Adjusted "record consultation" to show welcome window if user hasn't selected a role.
- Updated feature--joy2-9-role-selection-on-feature-activation.md with a "Feature" section.
Fixed
- Update .gitignore to exclude JoyConnect project files
- The .gitignore file has been updated to include the following paths:
- JoyConnect.Installer/DLLs/CustomActions.exp
- JoyConnect.Installer/DLLs/CustomActions.lib
- JoyConnect/App.config
- JoyConnectUniversal/App.config
- JoyConnect/joy-connect/Staging
- These changes ensure that specific DLLs, configuration files, and the staging directory are not tracked in the version control system.
- Update deployment scripts, build process, and logging
- Ensure DLLs directory exists before building custom actions in multiple deployment YAML files.
- Modify build command for
CustomActions.vcxprojand adjust output directory. - Verify existence of
CustomActions.dllpost-build in deployment YAML files. - Update installer version and prepare certificates in staging deployment YAML.
- Increment version in
AutoUpdater.csprojfrom1.0.4to1.0.5. - Change logging in
Program.csto use local app data folder. - Update MSI installation command to log to local app data folder.
- Remove log file creation in current directory in
Program.cs. - Update
.gitignoreto include new directory path. - Reformat
JoyConnect.Installer.wixprojand removeCustomActions.dll. - Add
LUASettingproperty inJoyConnectPackage.wxs. - Include digital certificate in
patch.wxs. - Make binary changes to
CustomActions.dll. - Add placeholder step for Azure Key Vault secrets in staging deployment YAML.
Fixed
- Improved readability and maintainability in
deploy-installer-testing.ymlby breaking longmsbuildcommands into multiple lines. - Removed
<Folder Include="bin\" />fromAutoUpdater.csproj. - Modified
CustomActions.dllbinary file. - Changed installation directory in
Folders.wxsfromProgramFilesFoldertoCommonAppDataFolderand addedLogsdirectory. - Consolidated XML namespace declarations in
JoyConnectComponents.wxsandJoyConnectPackage.wxs. - Updated
CreateFolderelement permissions and addedLogsFoldercomponent inJoyConnectComponents.wxs. - Reformatted
Packageelement attributes, addedIconelement, and improvedCustomActionreadability inJoyConnectPackage.wxs.
Fixed
- Added necessary using directives for System.Globalization and Exception alias.
- Wrapped _emis.GetOrganisation call in a try-catch block to handle exceptions.
- Initialized variables with default values before the try block.
- Added logging for exceptions, excluding specific "actively refused" message.
- Implemented a foreach loop to set locationTypeDescription.
- Ensured early return after setting CurrentOrganization on success.
- Explicitly set CurrentOrganization to null on failure.
- Refactored
WindowServiceto simplify window positioning logic: RelativePositionnow usesmainWindow'sLeftandTopdirectly.- Updated
PositionWindowRelativeToElementto setwindow'sTopandLeftbased onwidget's position and size. - Commented out code for position adjustments within the working area.
UpdateWindowPositionnow callsPositionWindowRelativeToElement.- In
MainWindow.xaml.cs: - Commented out code fetching
OrganizationSettingsand determiningenableRecordingbased onFeatureFlags. - Hardcoded
enableRecordingtotrue.
Fixed
- Modified
AutoUpdater.csprojto add new configurations and removeBaseOutputPath. - Enhanced logging and error handling in
Program.csandConsultationRecorderService.cs. - Updated
SnomedItem.csto implementINotifyPropertyChanged. - Added
CurrentUserNameproperty toIMainWindow.cs. - Added
CloseSnomedCodesCommandtoSearchSnomedViewModel.cs. - Introduced
DownloadSummaryCommandandAddAllCodesCommandinTranscriptionSummaryReviewViewModel. - Improved UI in
SearchSnomedWindow.xamlandTranscriptionSummaryReviewWindow.xaml. - Cleaned up code and added
CurrentUserNameproperty inMainWindow.xaml.cs. - Removed unused
usingdirectives inOrganizationSettings.cs.
Changed
- Removed two more rollbars due to volume of rollbar reports
Added
- when available, send EMIS organization ID with the anonymous events
Added
- Integration with server side file back request verification. When file back request is captured in S1ResilienceService:
- call JoyAPI to log the fileback request
- check if previous successful request exists (based on JoyAPI response)
- if not, allow file back to proceed, otherwise - block and log the blocked fileback to JoyAPI
- when file back goes ahead, but errors - send a log of failed file back to JoyAPI, including error message and the s1 function called
- when file back succeeds (based on the immediate s1 response) - log success, which will prevent further file back retries
Added
- DISABLED: Fileback rate limiting: when a fileback is issued, a timeout of 20 minutes will kick in and block all subsequent fileback retries for the same client record id
- DISABLED: Fileback rate limiting can be toggled via feature flag (flipper)
- Added feature flags handling. Feature flags are fetched along with organization level settings.
- Added logging of accepted and blocked fileback requests (both client side and inside Joy API)
Fixed
- Comment out message dialogs for connection issues in JoyConnect and JoyConnectUniversal namespaces.
- Modify SystemSettingsAppearance.PatientSelection to conditionally show the main window only if the system is ready.
- Shift towards using return statements for graceful handling of certain conditions.
Changed
- changed listing images to stretch to fill while maintaining the original ratio
Added
- referral and signpost events will now include the NHS Numbers
- Refactored S1ResillienceService to S1ResilienceService, added retry logic, and introduced IsValidResponse method.
- Updated internal visibility for testing. Commented out specific tests in VoiceRecorderControlTests.cs.
- Updated and added package references in JoyConnect.Tests.csproj.
- Removed unused namespaces in MainWindowTest.cs.
- Added new test class S1ResilienceServiceTests in S1ResilienceServiceTests.cs.
- Modified CustomActions.dll binary.
Fixed
- Removed the non functional searchbar in the snomed code dropdown visible in signpost and referral forms.
Added
- sync patient record scanning settings with organization level settings (every 30s)
- ability to set a custom default per organization (users can change it later)
- ability to disable scanning behaviour settings UI
Added
- Removed unused using directives from SystemSettingsData.cs.
- Added directory existence check before creating settings file.
- Commented out retry logic in S1ResillienceService.cs.
- Added retry logic for get the organisation name
- Ensured that directory exists before attempting to create SystemSettings file
- Added validation to prevent exception.
Added
- Added package references for Serilog.Sinks.File, Rollbar.PlugIns.Serilog, and Serilog.Sinks.Console.
- Added FileLifecycleHook.cs for custom Serilog lifecycle handling.
Changed
- Refactored App.xaml.cs:
- Removed and reordered using directives.
- Added using Rollbar.PlugIns.Serilog.
- Changed ServiceProvider and _logger to nullable types.
- Simplified App_OnStartup and moved service configuration to ConfigureServices.
- Added TakeOwnershipIfAlreadyRunning method.
- Updated ConfigureServices for Serilog and Rollbar.
- Added logging for application exit and exception handlers.
Added
- Added new dependencies and references in
App.xaml.csforJoyConnect.SharedLibraryandJoyConnect.SharedPlatformLibrary. - Registered new services in the DI container for
IWaveFileWriter,IWaveFileWriterFactory,IWaveInEvent, andIVoiceRecorder. - Updated
ClientDetailsPane.xamlto include a new XML namespace and addedVoiceRecorderControlto the UI. - Cleaned up and added necessary using directives in
ClientDetailsPane.xaml.csand initializedVoiceRecorderControlwith a service instance ofIVoiceRecorder. - Updated
JoyConnect.csprojto include project references toJoyConnect.SharedLibraryandJoyConnect.SharedPlatformLibrary. - Created new test projects
JoyConnect.SharedLibrary.Tests.csprojandJoyConnect.SharedPlatformLibrary.Tests.csprojwith necessary dependencies and references for unit testing. - Implemented unit tests in
VoiceRecorderTests.csandVoiceRecorderControlTests.cs. - Created new projects
JoyConnect.SharedLibrary.csprojandJoyConnect.SharedPlatformLibrary.csprojwith implementations forRecorderFileWriter,RecorderFileWriterFactory,RecorderWaveInEvent,VoiceRecorder, andVoiceRecorderControl. - Defined interfaces
IVoiceRecorder,IWaveFileWriter,IWaveFileWriterFactory, andIWaveInEventinJoyConnect.SharedLibrary.Interfaces. - Added assembly information in
AssemblyInfo.csfor theme-specific resource dictionaries. - Defined the UI for
VoiceRecorderControlinVoiceRecorderControl.xamland implemented the logic inVoiceRecorderControl.xaml.cs.
Fixed
- Updated WixToolset packages in
CustomActions.vcxproj,packages.config,JoyConnect.Installer.wixproj, andJoyConnectUniversal.Installer.wixproj. - Updated test-related packages in
JoyConnect.SharedLibrary.Tests.csproj,JoyConnect.SharedPlatformLibrary.Tests.csproj, andJoyConnect.Tests.csproj. - Updated utility packages in
JoyConnect.csprojandJoyConnectUniversal.csproj. - Replaced
IsNullOrEmptyextension method withstring.IsNullOrEmptyinDetailsWindowVM.cs.
Added
- check every 30s if a log capture request has been made and upload most recent logs to s3
Added
- Added referral notes to EMIS filebacks
- Added anonymous tracking for events such as app initialization, readiness and errors
Removed
- Removed rollbar logging from S1 resilience service
Fixed
- Fixed issue where referrals would file back even if the backend returned an error
Added
- Added data parameter to event tracking
Changed
- Split NHS number into separate data item when tracking patient changed event
Changed
- When referring / signposting, preselected snomed codes will now reflect global preferences as opposed to user specified
- When signposting multiple services, preselected snomed codes will represent combined code selections for all selected listings / apps
Changed
- Shut down application earlier and write log if a second instance is opened
Changed
- Added error handling and logging around websocket error in resilience piece
- Added close button to multiple instances restart prompt
- Added check for multiple instances when S1 API attempts to retrieve a response from S1
- On single instances, when restarting S1, on intance change detection, display widget to the user (on click shows a restart prompt) to avoid situations where users cannot find JC on their screens
Changed
- Refactored socket closing logic of S1Connector to ensure that it is always properly shut down.
- Removed sensitive information from application logs.
Changed
- Rolled back the changes to the resillience piece that were introduced in v1.0.26
Added
- When JC detects that a number of s1 instances running has changed, it will go into idle mode and display a restart prompt to the user.
Added
- Added extra logging to the resilience service to better understand connection issues
- Added class context to logs
- Added unit test job to test deploy pipelines
- Added check for changelog file to test deploy pipelines
Changed
- Added extra loggin around socket connection state
- Added delay to socket connection to wait for initial data from server
Removed
- Removed superfluous logs from resilience service
Added
- New settings panel added, allowing users to modify visibility options as well as size and colour of the JoyConnect widget
- Added alerts section to settings window which allows users to control the behaviour of proactive alerts
Fixed
- Reset the S1 resilience timeout back to 180s to resolve issues with fileback
Changed
- Made various improvements to the resilience service to improve performance and solve issues with S1
Changed
- In order to resolve the issue with device authentication in SystmOne when more than one organisation is using the clinical system on a single machine, JoyConnect will now use authorised_devices.json file to store the S1 user device information (previously stored in the UserSettings object).
- Changed naming format for auth token .dat files to resolve issue with shared EMIS usernames
Changed
- changed logging around S1 resilience service
get organization metadatato provide more details in case or error
Changed
- S1 resilience service is now checking for running process to limit number of requests
Fixed
- Fixed an issue where restarting would not trigger the auto updater
Added
- New users with existing email will now be registered with Joy automatically. New users without emails will be required to register manually.
Changed
- Keep background services running and preserve data when CS is minimized
- Changed EMIS patient polling frequency to 5s
- Changed S1 patient polling frequency to 5s
- Request demographic record for S1 patients and load coded record only when required
- Set S1 socket buffer to 10MB
Fixed
- When during referral creation accept criteria checkbox is present and the access criteria contains HTML tags they are displayed in the access criteria checkbox label.
- Fixed an issue where minimizing S1 window would sometimes cause JoyConnect to stop loading new patients
- Add event handler to ensure widget is on top when opening
- Fixed an issue where the app would close because of EMIS temporarily chaning its window title
Added
- Added error messages for connection issues when trying to update
Added
- Added SignInWithToken method which enables passwordless login by sending user's clinical system id and an encrypted secret to secure connection between the client and the JoyConnect API
- Upon receiving a 401 response from server, delete the token and restart the app (a confirmation dialog will be shown to the user)
- Added machine ID to event tracking
Added
- Added SignInWithToken method which enables passwordless login by sending user's clinical system id and an encrypted secret to secure connection between the client and the JoyConnect API
- Upon receiving a 401 response from server, delete the token and restart the app (a confirmation dialog will be shown to the user)
Fixed
- Fix patching issue when original installer is unavailable on the device
Fixed
- Force close all application instances during installation and patching
Added
- Added visibility toggle to password field
Changed
- Ignore 502 errors in resilience service caused by backend server downtime
Fixed
- Correctly set auto-updater folder permissions on installation
Added
- Added better error handling and reporting to loading EMIS patient data
- Added new error messages for problems with downloading or running the auto updater
Fixed
- Fixed issue where first patient wouldn't load if the NHS number is unavailable
- Fixed crash when EMIS is not installed
Added
- Added Rollbar support for error handling to JoyConnect and AutoUpdater
Changed
- Clinical system now defaults to S1 if S1 is installed on the machine, EMIS otherwise
- Changed password length requirements and updated text
- Changed default installer scope to per-machine
- Use
msiexec -i JoyConnect.Installer.msi ALLUSERS=2 MSIINSTALLPERUSER=1for a per-user installation
Fixed
- Fixed issue with UserSettings resetting to default values after an update
- Renamed referral tracking event from "Signpost sent" to "Referral sent"
- Added tracking event for new sign ups
Added
- Added restart button to tray context menu
- Added tick icon to tray context menu to indicate currently selected clinical system
- Added event tracking for
- Click on the widget to open window
- Click on the widget to close window
- Click on the proactive alert - view options
- Click on the proactive alert - ignore
- Referral sent
- Signpost sent
- Access Apps tab
- Access the Insights tab
- Access the Activity tab
- Access service detail page
- Click on the search bar
- App details view pane
- JoyAPI request for fetching app details
- Signpost / referral details view
Changed
- Apps in the apps list view now work as buttons that take users to the app's details view
Fixed
- Fixed sort order of activities
- Made whole activity area clickable
Fixed
- Removed registry writes to resolve permission issue
- Synced S1Connector and S1Resillience service to solve race condition during initialization
- Updated auto updater URLs to use https instead of http