What we’ve been learning about using Microsoft Teams for Virtual Consultations

What we’ve been learning about using Microsoft Teams for Virtual Consultations

This article is contributed. See the original author and article here.

At Modality Systems, I’ve been managing our virtual consultation service, OneConsultation, since 2018, and whilst before the Covid-19 pandemic, video consultations and telemedicine were used in specific services and use cases, it was never considered a realistic alternative way of delivering healthcare services for the masses.


 


Virtual consultations gain traction
The crisis has brought necessity, innovation, and a complete change of thinking – which I think is here to stay.


 


And it must be here to stay. Offering virtual consultations, through Microsoft Teams – or any vendor for that matter – is crucial for a number of reasons. And none of them are related to the pandemic.


Virtual consultations solve the following problems:



  • Lack of patient mobility

  • No access to transport

  • Fear of hospitals

  • Fear of infection

  • Unable to take time off from work


Initiatives from vendors have certainly helped.


 


Many UK National Health Service (NHS) trusts have adopted Teams, for instance, thanks to the offer from Microsoft enabling NHS staff to use Teams for free during the Coronavirus outbreak.


 


This has enabled staff and patients to get used to video calls internally whilst working from home which has made the adoption of virtual consultations a lot quicker.


 


What is a virtual consultation?
You might also hear virtual consultations referred to as remote consultations or online consultations. Ultimately, these are all the same.



Virtual consultations provide healthcare providers with an alternate method of diagnosing and treating patients. By switching to virtual consultations, clinicians, doctors, and patients benefit from accessibility improvements, fewer cancellations, and faster appointments.


 


Most virtual consultation systems need tailoring for the specific needs of the healthcare sector. Customisation can assist with the fact that patients are often vulnerable and struggle with technology.


Healthcare appointments rarely run to time so being able to offer a simple waiting room experience rather than rearranging email-based calendar appointments has proven beneficial to us.


 


Clinicians can simplify the join experience even further by sending patients a SMS message contain a link directly to the consultation. They just then tap that link to join.


 


Most consultations are also one-to-one and highly confidential. Security is therefore vital, as is the ability for healthcare providers to connect with patients from their smartphone, laptop, or tablet with just one click.


 


Rapid adoption of virtual consultations
Of course, we only have the stats available from our own virtual consultation software, OneConsultation.



When you think about how many telehealth platforms exist, scaling our numbers to match the number of platforms is quite extraordinary.



As of the end of August 2020, OneConsultation had supported over 100,000 different consultations across 541 different services.



This amassed to 36,000+ hours of video. The average call length being around 22 minutes.


 


The average length of an in-person appointment is only 17 minutes. So, the intangible benefits of more and better patient-doctor time must be mentioned too.


oneconsultation.jpg


 


We discuss at length the benefits of virtual consultations with all our clients. But, the most important factor is understanding how virtual consultations and virtual clinics benefit patients.


 


What happens next?


We continue to push and promote virtual consultations in a market heavily dominated by telemedicine platforms that don’t offer the functionality of Microsoft Teams.



While we’ve seen tremendous uptake on our virtual consultation service, the healthcare world is full of providers struggling to offer (or not able to offer) a virtual alternative to an in-person appointment.
We see no reason healthcare providers – and healthcare patients – shouldn’t have access to the same mobility and productivity benefits that a desk worker has.




Tom Scott is a Product Manager at Modality Systems. Read more about Teams virtual consultations and how Modality can help.



To write your own blog on a topic of interest as a guest blogger in the Microsoft Teams Community, please submit your idea here: https://aka.ms/TeamsCommunityBlogger  

Azure Data Explorer PG YouTube Channel

This article is contributed. See the original author and article here.

Join Azure Data Explorer YouTube to watch live webinars and videos.


you can find videos on 



  1.  Azure Data Explorer Overview

  2. Data Ingestion 

  3. How to start with KQL 

  4. Grafana dashboard with Azure Data Explorer

  5. Creating ODBC connector with Azure Data Explorer 

  6. coming this Wednesday “Enterprise readiness with Azure Data Explorer

  7. and many more interesting videos


Subscribe now Azure Data Explore YouTube Channel 


 

Synapse / SQL Password so secure that even you cannot use

Synapse / SQL Password so secure that even you cannot use

This article is contributed. See the original author and article here.

Everyone knows that the your password should be very strong, and there companies that use password generator to create complex password and this is fine too. But sometimes or better saying in some conditions this can cause some connectivity issues


 


Lets start using a free password generator I found on internet where I got something that looks like a good password “q3@yGfAm@JHM”.


FonsecaSergio_0-1612824941391.png


 


Let me create a login + user using it TSQL below


 


 


 

--MASTER DB
CREATE LOGIN UserXPTO WITH PASSWORD = 'q3@yGfAm@JHM'

--USER DB
CREATE USER UserXPTO FOR LOGIN UserXPTO

 


 


 


 


Now let me try to connect to is using .NET SQLClient


 


 


 


 

Clear-Host

Write-Host "NATIVE CLIENT TEST" -ForegroundColor Green

$Server = "tcp:xxxxx.sql.azuresynapse.net,1433"
$Database = "dwpool"
$Username = "UserXPTO"
$Password = "q3@yGfAm@JHM"
$SQLText = "Select getdate() as NOW"


$connectionTimeout = 15

$connectionString = "Server=$Server;"
$connectionString += "Initial Catalog=$Database;"
$connectionString += "User ID=$Username;"
$connectionString += "Password=""$Password"";"
$connectionString += "Connection Timeout=$($connectionTimeout);"
$connectionString += "Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False"

$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString)

Write-Host "CurrentTime: $(((Get-Date).ToUniversalTime()).ToString("yyyy-MM-dd HH:mm:ss")) UTC"
Write-Host "Connection to Server ($($Server)) / DB ($($Database)) / UserName ($($Username))"

Try {
    $connection.open()
    Write-Host "Connection with success"

    $command = New-Object -TypeName System.Data.SqlClient.SqlCommand
    $command.CommandTimeout = 60
    $command.connection = $connection
    $command.CommandText = $SQLText

    $result = $command.ExecuteScalar()    
    Write-Host "Query success. Server currenttime ($($result))"
    $connection.Close()
}
Catch {
    Write-Error $_.Exception.Message
}

 


 


 


 


Results looks fine


NATIVE CLIENT TEST
CurrentTime: 2021-02-08 23:25:29 UTC
Connection to Server (tcp:xxxxx.sql.azuresynapse.net,1433) / DB (dwpool) / UserName (UserXPTO)
Connection with success
Query success. Server currenttime (02/08/2021 23:25:29)

 


Now let’s move to ODBC (Current installed version 17.6.1.1) using basically same code


 


 

Clear-Host

Write-Host "ODBC CLIENT TEST" -ForegroundColor Green

$Server = "tcp:xxxxx.sql.azuresynapse.net,1433"
$Database = "dwpool"
$Username = "UserXPTO"
$Password = "q3@yGfAm@JHM"
$SQLText = "Select getdate() as NOW"


$connectionTimeout = 15

$connectionString = "Driver={ODBC Driver 17 for SQL Server};"
$connectionString += "Server=$Server;"
$connectionString += "Database=$Database;"
$connectionString += "UID=$Username;"
$connectionString += "PWD=""$Password"";"
$connectionString += "Connection Timeout=$($connectionTimeout);"
$connectionString += "Encrypt=yes;TrustServerCertificate=no"

$connection = New-Object -TypeName System.Data.Odbc.OdbcConnection($connectionString)

Write-Host "CurrentTime: $(((Get-Date).ToUniversalTime()).ToString("yyyy-MM-dd HH:mm:ss")) UTC"
Write-Host "Connection to Server ($($Server)) / DB ($($Database)) / UserName ($($Username))"

Try {
    $connection.open()
    Write-Host "Connection with success"

    $command = New-Object System.Data.Odbc.OdbcCommand
    $command.CommandTimeout = 60
    $command.connection = $connection
    $command.CommandText = $SQLText

    $result = $command.ExecuteScalar()    
    Write-Host "Query success. Server currenttime ($($result))"
    $connection.Close()
}
Catch {
    Write-Error $_.Exception.Message
}

 


 


And now the results


 


ODBC CLIENT TEST
CurrentTime: 2021-02-08 23:26:13 UTC
Connection to Server (tcp:xxxxx.sql.azuresynapse.net,1433) / DB (dwpool) / UserName (UserXPTO)
Write-Error: Exception calling “Open” with “0” argument(s): “
ERROR [28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user ‘UserXPTO’.

ERROR [01S00] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute

If we looks at first error “[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user ‘UserXPTO’.” we will start believe that there is an issue with login + password.


 


And sometimes it can really be. Better double check the password. Or test to connect using different tool like Azure SQL Data Studio or SQLCMD


 


Looking into ODBC connection string it looks ok too


Driver={ODBC Driver 17 for SQL Server};Server=tcp:xxxxx.sql.azuresynapse.net,1433;Database=dwpool;UID=UserXPTO;PWD=”q3@yGfAm@JHM”;Connection Timeout=15;Encrypt=yes;TrustServerCertificate=no

There is no difference in the code


FonsecaSergio_0-1612909406743.png


 


There is also this sample from a customer case I worked recently where cx was also getting some connection error. But error message was little bit different. But It looks like just permission problem or (user + password) error


FonsecaSergio_1-1612827099816.png


 


This one on my environment went fine


FonsecaSergio_2-1612910256676.png


 


 


I could not repro customer exact error probably because of version he had vs the version I was using but the error behind the scene is same for both and its explained at https://docs.microsoft.com/en-us/sql/relational-databases/security/strong-passwords


 


Passwords can be the weakest link in a server security deployment. Take great care when you select a password. A strong password has the following characteristics:
– Is at least eight characters long.
– Combines letters, numbers, and symbol characters within the password.
– Is not found in a dictionary.
– Is not the name of a command.
– Is not the name of a person.
– Is not the name of a user.
– Is not the name of a computer.
– Is changed regularly.
– Is different from previous passwords.

Microsoft SQL Server passwords can contain up to 128 characters, including letters, symbols, and digits. Because logins, user names, roles, and passwords are frequently used in Transact-SQL statements, certain symbols must be enclosed by double quotation marks (“) or square brackets ([ ]). Use these delimiters in Transact-SQL statements when the SQL Server login, user, role, or password has the following characteristics:
– Contains or starts with a space character.
– Starts with the $ or @ character.

If used in an OLE DB or ODBC connection string, a login or password must not contain the following
characters: [] () , ; ? * ! @ =. These characters are used to either initialize a connection or
separate connection values.

 


You can use some workarounds / solutions below



  • If you cannot change application code and getting this error, just DO NOT use these special char documented above.


 



 



  • If you can try to change how you set the password. On my tests I was able to workaround issue not using quotes in the password (xxx vs xxx” vs ‘xxx’), but it will probably depend on the char used


    • $connectionString += “PWD=””$Password””;” – FAILS


    • $connectionString += “PWD=’$Password’;” – FAILS

    • $connectionString += “PWD=$Password;” – OK




Quotes are supported, but for some reason workaround the error https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters


 

Upcoming changes to mailbox receiving limits: Hot Recipients Throttling

This article is contributed. See the original author and article here.

To ensure optimal mail flow performance for all customers and protect the health of Exchange services, Microsoft is updating the way in which we enforce our mailbox receiving limits.


With the growth of digital transformation and remote work, having access to emails is more critical than ever. Microsoft is committed to delivering a safe and reliable email experience for all customers, which requires us to balance our service across mailboxes.


If a mailbox or tenant is allowing extremely high message volume, this can negatively impact other customers and cause email delays. Mailboxes that exceed our thresholds will consume resources from other mailboxes. As a large and global platform, we must enforce these limits to provide an equal experience for customers.


Starting in April 2021, we will progressively roll out the new enforcement, starting at a higher threshold and incrementally lowering it until we arrive at our established limit of 3600 messages per hour, per mailbox.


What are mailbox receiving limits?


These limits control the amount of messages that a user, group, or public folder can accept in a given hour. When a mailbox exceeds the threshold, any further messages to this mailbox will be throttled. The limit resets after an hour, allowing the mailbox to receive messages again. To ensure that all parties are aware, the throttled recipient will receive a notification that they are being throttled in their Inbox, and any senders to these mailboxes will receive a non-delivery report.


These receiving limits are not new. Our documentation has specified for a long time that Exchange sets a per-mailbox threshold of 3600 messages per hour, however, we have treated this as a soft limit in the past to accommodate edge cases. View more details on our established receiving limits here.


Ways to prepare


As we begin our incremental rollout, administrators should monitor current mailbox activity to identify and address mailboxes that may be affected. Note that most users are not likely to be impacted, as only a very small percentage of mailboxes are currently hitting the threshold.


Rollout begins in April, starting at a higher throttling threshold to allow customers time to adjust their mail flow strategy. Before rollout begins, administrators will have access to a new report and insight in the Exchange Admin Center for “Mailboxes exceeding receiving limits.” From here, administrators will be able to track mailboxes that are at risk of hitting the threshold, then reach out to mailbox owners to understand or mitigate the situation.


We appreciate your patience and collaboration in helping us ensure that Exchange remains a reliable platform for all.


The Exchange Transport Team

Beginner's Series to: Dev Containers

Beginner's Series to: Dev Containers

This article is contributed. See the original author and article here.

Using a Docker container as a development environment has many great benefits, such as easily switching between different languages and toolsets and providing all your teammates a consistent machine configuration. But what’s the best way to get started with containers? And what if you aren’t a Docker expert?

Well look no further, because we’ve created a series of videos about dev containers in Visual Studio Code! We’ll show you how to get, create, and configure a container-based development environment with the VS Code Remote – Containers extension.


 


By the end of this series, you’ll be able to configure any project so that it runs inside a Docker container. You can further review the content we cover by checking out the Remote – Containers Microsoft Learn Module: https://aka.ms/devcontainers-learn-mo….


 


DevConatiners.JPG



You can also continue your learning with the following resources:
Main Remote Containers Documentation:
https://aka.ms/vscode-remote-containers
Remote – Containers Tutorial:
https://aka.ms/vscode-remote-containe…
Step-by-step Create a Dev Container Doc:
https://aka.ms/vscode-create-remote-c…
How educators can use dev containers:
https://aka.ms/devcontainers-edu
How students can use dev containers: https://youtu.be/Uvf2FVS1F8k
File a feature request or issue on Visual Studio Code Remote GitHub Repo:
https://aka.ms/vscode-remote/issues


Watch the entire series:
https://aka.ms/BeginnerSeriesToDevCon…