Skip to main content

Installation Guide - EWA system

This document contains information on how to install the components needed in the system, and what configuration steps are needed.

Documentation Change Log

  • 11-10-2024: Removed database pre-requisites section to enable service broker.

  • 25-04-2024: Updated Personnel Registration details into SetParameters.xml within Insight.

  • 27-03-2024: Added Personnel Registration details into SetParameters.xml within Insight.

  • 27-03-2024: Added information about new .NET Desktop Runtime 8.0.x requirement for ClientHub in the Requirements section.

  • 26-03-2024: Updated the new PackageName of the EWA Client in the Set-AppXProvisionedDataFile script within Client Application configuration section.

  • 15-02-2024: Added VersionManager API and service sections.

  • 11-12-2023: Added updated information about set parameters and section for Consultation.

  • 09-12-2023: Added SetParameters.xml information for corpuls widget in Insight with regards to release 24.

  • 27-09-2023: Added Checklist V2 installation documentation.

  • 18-09-2023: Added missing SetParameters.xml information for several components with regards to release 21.

  • 16-08-2023: Re-added LiveView V2 installation documentation.

  • 26-07-2023: Removed LiveView V2 installation documentation.

  • 29-06-2023: Updated LiveView V2 and linked to documentation.

  • 17-02-2023: Changed ClientAPI to ClientHub and linked to documentation.

  • 23-05-2022: Updated Web application server(s) requirements under Server requirements.

  • 24-05-2022: Updated Helseplattformen Link Patient Identity API, HP Link Patient Identity API Install or Updated and IIS Configuration.

  • 23-08-2022: Updated Data Warehouse Export installation guide.

  • 12-09-2022: Updated Webview2 dependency. Work around for the login issue while using EWA Client.

  • 30-09-2022: Updated the guide describing how to enable or disable webview 2 in EWA Client.

  • 06-10-2022: Updated the steps to Unblock MSI files on a server.

  • 07-10-2022: Updated fix if getting "Access denied" message when trying to print from Insight.

  • 01-12-2022: Updated known issue section for the 'Application Insights Connection String' exception.

  • 02-12-2022:

    • Updated known issue section for HTTPS Certificate binding getting deleted after installing ClientApi.
    • Updated migration and seeding tool and export section with screenshots and removed references of 21.10

Preface

  • If you are upgrading the system,please take a backup of all configuration files.
    • Then you have a backup in case you overwrite anything and don’t know what the setting should be.
  • The server system consists of 4 web applications, 1 database, 1 service and a client.
  • This will be deployed on 2 servers and client machines:
    • Server 1:
      • MS SQL server
    • Server 2/ HA Zone 1:
      • Application server:
        • Client Api:
          • Sends mission data from EMCC to clients that asks for it.
          • Receives journals and logs from clients to store in the database.
        • EMCCIntegration:
          • Receives mission data from EMCC and stores in the database
        • Insight:
          • Used to view/edit/delete journals, look at audit and technical log, access live view monitors and administer configuration of the system.
        • Export:
          • Export journal data to other endpoints. Primarily REST or SOAP service export.
        • Reporting Database Export:
          • Export of journal data to reporting database.
        • Tools:
          • Migration Utility - Used to create or update tables and data in the database
      • Clients:
        • Client Application - Used to fill out journals
        • Monitoring Unit Broker - Used to broker the connection and data transfer between monitoring devices and the client application.
    • Another MS SQL database server if you want to host the Reporting Database on a separate server.
  • Some assumptions:
    • The 2 servers will be in the same domain, even though they are in separate networks/VLANs
    • Users that will use the tablet application and/or Insight will already be in or added to AD groups.
  • The document also contains field where it is possible to fill inn configuration values to make it easier to look them up later if needed.

Server requirements

Web application server(s)

The web application servers requires IIS installed, and the following runtimes, extensions and protocols enabled:

Note regarding .NET 8.0.x requirements

Usually web applications made with .NET will only require the ASP.NET Core Runtime Hosting Bundle, but the ClientHub application now requires the .NET Desktop Runtime 8.0.x to be installed on the server in addition to the ASP.NET Core Runtime 8.0.x Hosting Bundle.

A mixture of new functionality and normal security upgrades in the ClientHub application required us to install the Microsoft.EntityFrameworkCore.SqlServer, which in turn has a dependency chain that ultimately includes the Microsoft.Web.WebView2 package specifically when building the application targeting Windows. Usually we would build using the generic .NET target, but LocalAD packages requires the Windows target. This Microsoft.Web.WebView2 dependency is the reason why the .NET Desktop Runtime 8.0.x is required.

We will change the build targeting in the future to avoid this dependency, but that can't happen until we can remove the LocalAD packages from the project.

Prerequisite Information

This chapter contains information about what data should be collected or created before doing any installation or upgrades.

Certificates and DNS names

We recommend getting two DNS names with corresponding certificates for HTTPS to each of the web server zones. This is necessary for following the recommended upgrade path. We recommend using this structure for domain names if possible, if you have internal guidelines for DNS records you should follow them.

DMZ Zone

pepj.dmz.customerdomain.no

pepj.dmz.upgrade.customerdomain.no

Application Zone

pepj.customerdomain.no

pepj.upgrade.customerdomain.no

DMZ info table
WebServer info Fill Table
Application info table
WebServer info Fill Table

Database server

We recommend writing down the settings for the database server so that it does not have to be searched for when doing the installation steps. We recommend giving the database names following this guideline Bliksund.PEPJ.XX.XX where XX.XX is replaced with the version number of the system being installed.

Database info table
Database info Fill Table

When upgrading between major versions of the system it is recommended to install the new version to run parallel to the old system and when it has been set up, do a database upgrade and change the URLs to point to the new system. This should result in the least amount of downtime for the system as the only time you have downtime is during migration of the production database.

The clients should be upgraded before the servers are finished upgrading.

You upgrade the clients by installing it like a normal installation. The data is persistent during upgrade. It handles upgrading its data itself.

Checklist for upgrading server components

Before downtime

  • Make a copy of the production database. Following the name scheme for new installations.
Database Copy Name Fill Table
  • Install the new version of the system following the normal installation procedures but using the *.upgrade.* domain names and the database copy
  • Go over each component and make sure the settings that need to be configured has the same values as in production.
  • Configure the new settings that is introduced in the new version.
  • Configure a test-tablet to talk with the new system and use the simulator to check that everything works.
  • When everything is configured it is time to plan the downtime and final steps.

During downtime

  • Delete the database copy used for configuring the new installation.

  • Turn off IIS so that clients cannot connect.

  • Backup the production database and make a copy of it. Give it the same name as the database copy before downtime.

  • Migrate the copy of the database using the migration tool provided to the newest version.

  • Configure bindings in IIS and/or Load Balancer:

    • Remove hostname from HTTPS binding on the old production site
  • Change hostname on the new production from *.upgrade.* to production hostname. If applicable, change certificate.

  • Turn on IIS and restart the application on the clients.

  • Upgrade complete.

After following these steps, you have both a backup of the old version in case of a rollback, and the downtime is reduced to a minimum.

MS SQL Database Migration

Figure
Figure 1 - Files in MigrationTool
  1. Create a new database if it does not exist. Example: PEPJDatabase.

  2. Create a new user with access to the database.

  3. Edit the connection string for the Migration Utility in appsettings.json

Figure
Figure 2 - Location of configuration file
Figure
Figure 3 - Location of connectionString that must be edited.
  1. Run the Bliksund.EWA.MigrationTool.exe file, pick Migrate and choose "Yes"
Figure
Figure 4 - Migration Utility Console Application
  1. When it completes and ask if you want to seed the database, pick Yes.

Seed/choose required configuration

  1. Choose the System Configuration item in the main menu of the Migration and Configuration Tool.
  2. Choose Authentication and Authorization method. See other documentation for explanation about this functionality.
  3. Set Role to Access Mapping. See other documentation for explanation about this functionality.
  4. Setting PDF settings is not required at this point, but it's possible if you don't want to do it via. Insight.

IIS Configuration

This chapter contains recommendations regarding the configuration of IIS that does not involve a specific component.

ASP.NET Core requires each AppPool to only contain a single ASP.NET Core WebApp to function. It is recommended to create an AppPool for each WebApp component from the start to make the transition to ASP.NET Core easier as we upgrade components to this runtime standard.

It is recommended to include the major and minor part of the version number for each component in the AppPool name to make upgrades and rollbacks easier.

We recommend following the naming scheme Bliksund.PEPJ.XX.XX where XX.XX is the version number being installed. Following our recommended naming scheme, you should use either pepj.dmz.customerdomain.no and pepj.customerdomain.no in the hostname on first installation and pepj.dmz.upgrade.customerdomain.no and pepj.upgrade.customerdomain.no when installing an upgrade.

Figure

ClientHub

The old ClientApi has been replaced by the upgraded ClientHub component.

See ClientHub Documentation for documentation and installation guide.

Integration

Integration Install or Update

IMPORTANT: This is an ASP.NET Core project so it must be installed on a separate AppPool in IIS from the HP Link Patient Identity API component for both to function.

Using Web Deploy is the recommended way to both install and upgrade this component. Either set all the values in Bliksund.EWA.EMCCIntegration.SetParameters.xml or reuse the file when doing an upgrade.

  1. Edit the file Bliksund.EWA.EMCCIntegration.SetParameters.xml and either change the values that are wrong for your system or copy in the values from the file used the last time.
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site" />
<setParameter name="PEPJDatabaseConnection-Web.config Connection String" value="Data Source={Database Server};Initial Catalog={Database Name};User ID={Database Administrator};Password={Database Administrator Password};Pooling=False;MultipleActiveResultSets=True;Application Name=EntityFramework" />
<setParameter name="ApplicationInsights" value="" />
</parameters>
  1. After SetParameters.xml have been verified to be correct for your system run the command; Bliksund.EWA.EMCCIntegration.deploy.cmd /T to see what changes will be done on the file system. (Files changed, added, removed)

  2. After this run the command; Bliksund.EWA.EMCCIntegration.deploy.cmd /Y to do the actual changes.

Integration SetParameters.xml values

NameDescriptionExample
IIS Web Application NameThe name of the IIS Web Application that the component should be installed to. Should be in format {SiteName}/{WebAppPath} where {SiteName} should be the name of the IIS site the webapp should use, and {WebAppPath} is the path of the webapp under the site.BliksundPEPJ/EMCCIntegration
PEPJDatabaseConnection-Web.config Connection StringThe SQL connection string to the main EWA database.See https://www.connectionstrings.com/sql-server/ for examples
ApplicationInsightsOptional Application Insights connection string. This line should be deleted if you do not want the application to be instrumented with application insights to Azure.InstrumentationKey=REDACTED

Integration v21 changes

No changes compared to v20.

Version Manager

The Version Manager system consists of a Version Manager API and a Version Manager Service.

Version Manager API

Installation guide for the Version Manager API can be found here

note

Please make note of the API keys used in the installation process. These keys will be used in the installation of Insight and the Version Manager Service.

Version Manager Service

Installation guide for the Version Manager Service can be found here

Version Manager v27 changes

Added.

Insight

Insight Install or Update

Using Web Deploy is the recommended way to both install and upgrade this component. Either set all the values in Insight.SetParameters.xml or reuse the file when doing an upgrade.

  1. Edit the file Insight.SetParameters.xml and either change the values that are wrong for your system or copy in the values from the file used the last time.
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site/Bliksund.EWA.Insight_deploy" />
<setParameter name="Database connection timeout" value="120" />
<setParameter name="Integration Url" value="https://localhost/emccintegration" />
<setParameter name="Cache Expiration Time" value="360" />
<setParameter name="Application Insights Connection String" value="" />
<setParameter name="Integration API Key" value="" />
<setParameter name="LiveviewApi Path" value="https://localhost:61641/" />
<setParameter name="Liveview Api Key" value="" />
<setParameter name="FormModuleAPI Path" value="https://localhost:62636/" />
<setParameter name="FormModule Api Key" value="" />
<setParameter name="ChatServer Endpoint" value="{ChatServer__Endpoint}" />
<setParameter name="ChatServer Api Key" value="{ChatServer__ApiKey}" />
<setParameter name="CorpulsWidgetUrl" value="https://nonc-demo-live.eu.corpuls.cloud/live/mission/?missionid={0}" />
<setParameter name="VersionManager Api Url" value="" />
<setParameter name="VersionManager Api Key" value="" />
<setParameter key="Personnel Registration Api Url" value="" />
<setParameter key="Personnel Registration Api Key" value="" />
<setParameter name="PEPJDatabaseConnection-Web.config Connection String" value="Data Source={Database Server};Initial Catalog={Database Name};User ID={Database Administrator};Password={Database Administrator Password};Pooling=False;MultipleActiveResultSets=True;Application Name={Some name}" />
</parameters>
  1. After SetParameters.xml have been verified to be correct for your system run the command; Bliksund.EWA.Insight.deploy.cmd /T to see what changes will be done on the file system. (Files changed, added, removed)

  2. After this run the command; Bliksund.EWA.Insight.deploy.cmd /Y to do the actual changes.

Insight SetParameters.xml values

NameDescriptionExample
IIS Web Application NameThe name of the IIS Web Application that the component should be installed to. Should be in format {SiteName}/{WebAppPath} where {SiteName} should be the name of the IIS site the webapp should use, and {WebAppPath} is the path of the webapp under the site.BliksundPEPJ/Insight
Database connection timeoutThe timeout in seconds for the database connection and database commands.120
Integration UrlThe URL to the deployed Integration component.https://myewaserver.com/integration
Cache Expiration TimeThe time in seconds that the memory cache should be valid before it is refreshed.360
ApplicationInsightsOptional Application Insights connection string. This line should be deleted if you do not want the application to be instrumented with application insights to Azure.InstrumentationKey=REDACTED
Integration API KeyThe API key that the Integration component is configured with. If the Integration component is not configured with an API key, this line can be deleted.REDACTED
LiveviewApi PathThe URL to the deployed LiveView API component.https://myewaserver.com/liveview
Liveview Api KeyThe API key that the LiveView API component is configured with.REDACTED
FormModuleAPI PathThe URL to the deployed FormModule API component.https://myewaserver.com/formmodule
FormModule Api KeyThe API key that the FormModule API component is configured with.REDACTED
ChatServer EndpointThe URL to the Chat server.https://myewaserver.com/ChatServer
ChatServer Api KeyThe API key that the Chat server is configured to use.[REDACTED]
Corpuls Widget UrlThe URL iFramed in live view journal details page. The URL should be in the format as shown in the example, use your domain in the Url.https://yourdomain.corpuls.cloud/corpuls.web/live/mission/?missionid={0}
VersionManager Api UrlThe URL to the deployed VersionManager API component.https://myewaserver.com/versionmanager
VersionManager Api KeyThe Website API key that the VersionManager API component is configured with.REDACTED
Personnel Registration Api UrlThe URL to the deployed PersonnelRegistration API component.
Personnel Registration Api KeyThe API key that the PersonnelRegistration Api is configured to use..
PEPJDatabaseConnection-Web.config Connection StringThe SQL connection string to the main EWA database.See https://www.connectionstrings.com/sql-server/ for examples

Insight v28 changes

Release 28 introduces two new parameters that can be configured in the SetParameters.xml file.

  • Personnel Registration Api Url - See description in table above.
  • Personnel Registration Api Key - See description in table above.

Insight v27 changes

Release 27 introduces two new parameters that can be configured in the SetParameters.xml file.

  • VersionManager Api Url - See description in table above.
  • VersionManager Api Key - See description in table above.

Insight v24 changes

Release 24 introduces several new parameters that can be configured in the SetParameters.xml file.

  • ChatServer Endpoint - See description in table above.
  • ChatServer Api Key - See description in table above.
  • Corpuls Widget Url - See description in table above.

Insight v21 changes

Release 21 introduces several new parameters that can be configured in the SetParameters.xml file.

  • Integration API Key - See description in table above. Can be removed if the Integration component is not configured with an API key.
  • LiveviewApi Path - See description in table above.
  • Liveview Api Key - See description in table above.
  • FormModuleAPI Path - See description in table above, but the module is not yet released. Should be removed.
  • FormModule Api Key - See description in table above, but the module is not yet released. Should be removed.

IMPORTANT: This is an ASP.NET Core project so it must be installed on a separate AppPool in IIS from the Integration component for both to function.

Using Web Deploy is the recommended way to both install and upgrade this component. Either set all the values in Bliksund.EWA.HPLinkIntegration.PatientIdentityApi.SetParameters.xml or reuse the file when doing an upgrade.

  1. Edit the file Bliksund.EWA.HPLinkIntegration.PatientIdentityApi.SetParameters.xml and either change the values that are wrong for your system or copy in the values from the file used the last time.
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site" />
<setParameter name="PEPJDatabaseConnection-appsettings.json Connection String" value="Data Source={Database Server};Initial Catalog={Database Name};User ID={Database Administrator};Password={Database Administrator Password};Pooling=False;MultipleActiveResultSets=True;Application Name=HPLinkPatientIdentityApi" />
</parameters>
  1. After SetParameters.xml have been verified to be correct for your system run the command; Bliksund.EWA.HPLinkIntegration.PatientIdentityApi.deploy.cmd /T to see what changes will be done on the file system. (Files changed, added, removed)

  2. After this run the command; Bliksund.EWA.HPLinkIntegration.PatientIdentityApi.deploy.cmd /Y to do the actual changes.

SetParameters Fill Table

LiveView V2

The version 2 of LiveView that uses separated endpoint in backend and Blazor in frontend.

Prerequisite: The LiveView API is installed and running.

See LiveView API Installation for installation guide.

See LiveView Overview for user guide.

Checklist V2

The version 2 of Checklist that uses separated endpoint in backend and Blazor in frontend.

The new Checklist V2 provides a systematic and user-friendly way to create and track checklists, ensuring that all steps and protocols are followed accurately and efficiently for healthcare professionals.

info

We will use the new Form Module to store questions and responses for both checklist configuration and checklist responses (performed checklists).

Before you can use the new checklist feature in EWA, ensure that the Form Module API is installed and running.

Additionally, other modules need to be configured correctly to ensure the proper functioning of the new checklist feature.

Form Module API Installation

See Form Module API Installation for the installation guide.

Configuration in other modules for Checklist V2

Here are the other modules that require configuration for checklist v2 to work:

  • ClientHub: To match the values in the Form Module API configuration, add FormModuleAPIPath and FormModuleApiKey to Bliksund.EWA.ClientHub.SetParameters.xml file. For guidance, please follow the ClientHub Installation.

  • Insight: In the Web. config, add values for FormModuleEndpoint and FormModuleApiKey keys to match with the same values in the Form Module API configuration. Please refer to the FormModule installation guide.

  • ExportService: If you have manually installed the export service on your server, add values for FormModuleApiAddress and FormModuleApiKey to appsettings.xml file. This file is already extracted to the installation folder at C:\Program Files\BliksundEWAExport. Ensure that these values match with those in the Form Module API configuration.

  • WebView2: Forms module has a dependency on WebView2. All Windows 11, the WebView2 Runtime is included as part of the operating system. Windows 10, however, doesn’t have WebView2 Runtime pre-installed in all the versions. If your Windows 10 machine doesn’t have WebView2 Runtime pre-installed in it, Download the suitable WebView2 Runtime for your machine from the below link provided.

    https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section

Checklist V2 user guide

See Checklist V2 user guide for user guide.

Consultation

The Consultation system consists of a Chat Server and changes to the ClientHub and Insight components.

Consultation has a seperate page in learn that can be found here

Consultation Installation

The installation guide for Consultation, which includes the Chat Server, can be found here

Consultation Configuration and User Guide

The configuration and user guide for Consultation can be found here

Export

Figure
Figure 8 - Installation files for Export

Installed with .msi installer. You will be asked to provide values for these settings.

  1. EWA Database Connection String
Figure
Figure
Database info Fill Table
  1. Ensure that the Form Module API is installed and operational so the checklist v2 can work. If it is not, please refer to Form Module API Installation. After generating the API key of Form Module in the previous step, insert it along with the path to the appsettings.xml file:
Figure
Open the appsettings.xml located at app installation folder then update the FormModuleApiAddress and FormModuleApiKey
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="PEPJDatabaseConnection" providerName="System.Data.SqlClient" connectionString="Populated during the installation"/>
</connectionStrings>
<ApplicationInsights>
<ConnectionString></ConnectionString>
</ApplicationInsights>
<FormModuleApiAddress></FormModuleApiAddress>
<FormModuleApiKey></FormModuleApiKey>
</configuration>
  1. Further configuration of export is done through the Export Configuration component in Insight.

Data Warehouse Export

Figure
Installation files for Data Warehouse Export

Installed with .msi installer. You will be asked to provide values for these settings.

  1. EWA Database Connection String
Figure
Figure
Insert primary EWA database connection string
  1. An administrator of the system can further configure the application by going to the Export configuration page in Insight. The Data warehouse database connection string is also configured here.

  2. The application will install as a Windows service with the name 'Bliksund EWA Data Warehouse Export'.

  3. The application will create a log file in the logs folder inside the installation folder. If you want to change the log file location, locate the file log4net.config, and change the <file value="logs/logfile.txt" /> to the new folder location.

Client Application

Installation

To install the application remotely you can use the PowerShell command Add-AppxProvisionedPackage or DISM

Example script using DISM.

function FindAppBundleRoot($Folder) {
return (Get-ChildItem -Path $Folder -Filter \*.msixbundle -Recurse).Directory
}

function FindAllDependencies($Folder) {
$DependencyDir = (Join-Path $Folder "Dependencies")
$DependencyPackages = @()
$DependencyPackages += Get-ChildItem (Join-Path $DependencyDir "\*.appx")

if (($Env:Processor_Architecture -eq "x86" -or $Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyDir "x86"))) {
$DependencyPackages += Get-ChildItem (Join-Path $DependencyDir "x86\\\*.appx")
}

if (($Env:Processor_Architecture -eq "amd64") -and (Test-Path (Join-Path $DependencyDir "x64"))) {
$DependencyPackages += Get-ChildItem (Join-Path $DependencyDir "x64\\\*.appx")
}

if (($Env:Processor_Architecture -eq "arm") -and (Test-Path (Join-Path $DependencyDir "arm"))) {
$DependencyPackages += Get-ChildItem (Join-Path $DependencyDir "arm\\\*.appx")
}

return $DependencyPackages
}

$Folder = FindAppBundleRoot($folderName)

Write-Host "Looking for dependencies"
$Dependencies = FindAllDependencies($Folder)
Write-Host "Found " $Dependencies.Count " dependencies"

$Bundle = Get-ChildItem (Join-Path $Folder "\*.msixbundle")

if (Test-Path ("settings.json")) {
Write-Host "Found custom settings to attach"
$CustomData = Get-ChildItem ("settings.json")
}

$arguments = @('/Online')
$arguments += '/Add-ProvisionedAppxPackage'
$arguments += '/PackagePath:"' - $Bundle - '"'

ForEach($dependency in $Dependencies) {
$arguments += '/DependencyPackagePath:"' - $dependency - '"'
}

if ($CustomData) {
$arguments += '/CustomDataPath:' - $CustomData
}

$arguments += '/SkipLicense'

DISM $arguments

Configuration

If the client application has been provisioned with DISM or Add-AppxProvisionedPackage you can replace the datafile in it to edit the configuration used by the client. This is useful if you need to change what URL the client is pointing to. This is done with the PowerShell command Set-AppXProvisionedDataFile. It is also possible to specify this file during installation when using Add-AppxProvisionedPackage together with the CustomDataPath parameter.

Example:

Set-AppXProvisionedDataFile -PackageName BliksundAS.BliksundPEPJ_24.3.580.0_neutral\_\~\_p0tfvamdv7bj6 -CustomDataPath .\\settings.json -Online

Value for -PackageName

The value for PackageName can be found by running Get-AppxProvisionedDataFile as it changes with the version and certificate used to sign the application.

Example:

(Get-AppxProvisionedPackage -Online \| Where-Object {\$\_.Displayname -eq \"BliksundAS.BliksundPEPJ\"}).PackageName -Online

The content of settings.json must be constructed like this.

{
  "Version": 2,
"Url": {
    "Primary": "https://dev.bliksundhf.no/clienthub/develop/",
    "Training": "https://test.bliksundhf.no/clienthub/"
  },
  "Dataset": "Azure",
"Locale": "no",
  "LockTimer": 15,
"Logging": {
"MinimumLevel": "Warning"
}
}

Disable or Enable web view 2 in EWA Client

To disable or enable web view 2 in EWA Client the "UseWebView2Login" property must be set to false/true in the settings.json file.

The content of settings.json must be constructed as show below to disable web view 2.The "UseWebView2Login" property must be set to false. The option to access Windows Hello services including FIDO 2 will not be available during the sign in process if disabled.

{
"Version": 2,
"Url": {
"Primary": "https://dev.bliksundhf.no/clienthub/develop/",
"Training": "https://test.bliksundhf.no/clienthub/"
},
"Dataset": "Azure",
"LockTimer": 15,
"EncryptDatabase": true,
"Locale": "no",
"Authentication": {
"OidcClientOptions": {
"ClientId": "4a821d50-11a1-483f-8782-e865ab3033a1",
"ClientSecret": null,
"Authority": "https://login.microsoftonline.com/73935988-7e75-46c2-8cc6-d2d91985f67b/v2.0",
"Scope": "openid profile api://4a821d50-11a1-483f-8782-e865ab3033a1/Client"
},
"UserIdClaimType": "preferred_username",
"NameClaimType": "name",
"OrganizationClaimType": "extn.OrganizationIdentification",
"CurrentOrganizationId": null,
"UseWebView2Login": false
},
"Logging": {
"MinimumLevel": "Warning"
}
}

The content of settings.json must be constructed as shown below to enable web view 2.The "UseWebView2Login" property must be set to true.

{
"Version": 2,
"Url": {
"Primary": "https://dev.bliksundhf.no/clienthub/develop/",
"Training": "https://test.bliksundhf.no/clienthub/"
},
"Dataset": "Azure",
"LockTimer": 15,
"EncryptDatabase": true,
"Locale": "no",
"Authentication": {
"OidcClientOptions": {
"ClientId": "4a821d50-11a1-483f-8782-e865ab3033a1",
"ClientSecret": null,
"Authority": "https://login.microsoftonline.com/73935988-7e75-46c2-8cc6-d2d91985f67b/v2.0",
"Scope": "openid profile api://4a821d50-11a1-483f-8782-e865ab3033a1/Client"
},
"UserIdClaimType": "preferred_username",
"NameClaimType": "name",
"OrganizationClaimType": "extn.OrganizationIdentification",
"CurrentOrganizationId": null,
"UseWebView2Login": true
},
"Logging": {
"MinimumLevel": "Warning"
}
}

Appendix

Example Connection String

Authentication typeConnectionString
SQL user with passwordData Source=database_server;Initial Catalog=database;User ID=username;Password=password;Pooling=False;MultipleActiveResultSets=True;Application Name=EntityFramework
Integrated SecurityData Source=database_server;Initial Catalog=database;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True;Application Name=EntityFramework

Minimum Logging Configuration

The Minimum Logging Configuration in the settings.json file controls which logs are sent to the server based on their severity level.

This setting helps manage the log data's verbosity and performance impact.

"Logging": {
"MinimumLevel": "Warning"
}

The levels from low to high are Debug, Information, Warning, Error, and Critical respectively.

The default value is Warning in case of no configuration for it or it is set as empty, meaning logs at the Warning, Error, and Critical levels are sent to the server.

Regardless of this setting, all logs are saved locally on the device, ensuring complete logging data is available for troubleshooting.

IIS Machine Key

Machine Key is used by IIS to encrypt and decrypt data and is in use by the OAuth authentication layer in our applications. By default, these keys are generated automatically on every iisreset / application pool restart. This presents a problem with the OAuth layer and if 2+ servers are in use with load balancing.

The keys can be set on either server, site or application level. The important part is that all ClientHub applications running on different servers have the same key, in addition that all instances of Insight is running on different servers have the same key.

To set a manual key follow these steps.

  1. Open IIS Manager.\
Figure
  1. Navigate to the server settings page, then Machine Key
Figure
  1. Turn off Automatically generate at runtime.
Figure
  1. If this is the first server in a set that should have the same machine key. Go to A. If not, go to B.

    a. Click on Generate Keys.

    b. Paste in the keys generated on the first server.

Figure
  1. Save

Known Problems

Access denied issue when opening journal to print in insight

Figure

This error message is probably due to insufficient rights for the OpenHtmlToPrint folder needed to open the journal.

The folder should have been created automatically during installation and is located here

Figure

If it is not created, then it needs to be created.

Right-click the folder, click on Properties, click on Security, click on Edit, select correct user and check the Allow box for Modify, click Apply and OK.

Figure
Figure
Figure
Figure

Attempting to run msi files on the server makes explorer/cmd freeze and eventually a SmartScreen error message appears

This issue is because the msi installation file is blocked by the Windows Defender SmartScreen.

Right-click the msi file, click on Properties, and check the box called "Unblock" at the bottom of the properties dialog, then click OK.

Work around for the login issue while using EWA Client

1.If you get the below error while trying to login to EWA Client, it is because of missing Web View 2 Runtime.

Figure

2.To fix it download the suitable WebView2 Runtime for your machine from the below link provided

https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section

Figure

3.Install WebView2 Runtime by right clicking and selecting ‘Run as administrator’

Figure

4.Once the installation is complete. Restart your PC

Figure
Figure

5.Uninstall EWA client

Figure

6.Install EWA Client

Figure

7.Launch the application and login

Figure

WebDAV

WebDAV is not installed in a default installation of IIS but sometimes it is added in the default image or installation used at a customer location. This introduces problems with our system as it takes control of the HTTP verbs PUT, DELETE etc.

To remedy this, you must disable the module on the Site or Application in the Handler Mappings component.

Figure
Figure 9 - Where to find the option to disable WebDAV

Not able to access database with a SQL User

Make sure that the user is allowed to log on.

Figure

Checking that it is set up correctly

  • Insight

Try accessing the webpage and log on. If this works, it should be set up correctly. It's also possible to go to https://url_to_your_insight/ping to check if Insight responds to requests.

  • ClientHub

Go to https://url_to_your_clienthub/ping to check if ClientHub responds to requests and has access to the database.

Unable to access live view (sanntidsskjerm)

Figure

Make sure the connection string used by the Insight component contains "MultipleActiveResultSets=True".
If this part of the connection string is missing or set to "False" the live views will not display any data, and an error is logged to the database whenever anyone tries to access a live view.
The exception error text that is logged for this specific problem is "System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first."

Application insights connection string exception

If we get a error The 'Application Insights Connection String' argument cannot be null or empty while installing or upgrading the below listed artifacts

  • EWA Insight
  • Client API
  • Integration
  • Export
  • BliksundEWADataWarehouseExport
  • HPLinkIntegration
  • UWP Client Application

Please remove the below line in the SetParameters.xml file and restart the server.

<setParameter name="Application Insights Connection String" value="" />

HTTPS certificate binding getting deleted after installing clienthub

The HTTPS certificate binding is getting deleted after installing ClientHub. The problem can be fixed by adding site bindings in the IIS manager. Please follow the below steps to fix the issue.

  1. Start IIS Manager by opening the Run command , then type 'inetmgr' and click 'OK'
Figure
  1. Select the website by accessing it in the connections pane on the left hand side,navigate to the server and site you wish to bind the certificate to.
Figure
  1. In the actions pane on the right,click Bindings...
Figure
  1. Click on the 'Add' button.
Figure
  1. Select 'https' in the Type, for IP address select 'All Unassigned' or the site's IP address, for port enter '443' in the site binding window.
Figure
  1. Select the desired certificate from the SSL Certificate drop down menu.
Figure
  1. View the certificate.
Figure
Figure
  1. Click on 'URL Rewrite' for redirecting incoming traffic to https.
Figure

Barcode scanner on https://www.felleskatalogen.no/medisin

When using older webview browser versions it appears to be an issue with the barcode scanner on felleskatalogen.no/medisin that causes the client app to freeze upon opening. This problem requires a restart of the app to fix. When using newer versions like Webview2 it works as intended.

Figure