<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bluewire Technologies &#187; Blog</title>
	<atom:link href="http://www.bluewire-technologies.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bluewire-technologies.com</link>
	<description>Bluewire</description>
	<lastBuildDate>Wed, 25 Jan 2012 14:57:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Should our Salami Slices be thick or thin?</title>
		<link>http://www.bluewire-technologies.com/2012/should-our-salami-slices-be-thick-or-thin/</link>
		<comments>http://www.bluewire-technologies.com/2012/should-our-salami-slices-be-thick-or-thin/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 14:57:03 +0000</pubDate>
		<dc:creator>Adam Towler</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=928</guid>
		<description><![CDATA[Yesterday the commons health select committee reported that UK NHS trusts may be resorting to traditional &#8216;salami slicing&#8217; to deliver the much talked about health service cuts. It set me thinking whether &#8216;salami slicing&#8217; applies to Epro and if it &#8230; <a href="http://www.bluewire-technologies.com/2012/should-our-salami-slices-be-thick-or-thin/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday the commons health select committee reported that UK NHS trusts may be resorting to traditional &#8216;salami slicing&#8217; to deliver the much talked about health service cuts.</p>
<p>It set me thinking whether &#8216;salami slicing&#8217; applies to Epro and if it is always a bad thing. Of course, it means different things in different contexts, and the use here by the commons committee was different to that here.</p>
<p>So which is the better approach to savings &#8211; a few large changes or a series of small amounts, which combine incrementally to something significant. As ever the answer is almost certainly something along the lines of &#8216;it depends&#8217; or &#8216;both are useful&#8217;.</p>
<p>Healthcare IT (which is our core business) is often touted as a means of achieving savings. Whilst obviously we like to hear that, and indeed sometimes our sales people peddle that message, personally I think a more palatable wording would be along the lines of &#8216;business change projects, supported by IT systems, can deliver significant savings.&#8217; Without associated business change, it&#8217;s unlikely an IT system will deliver significant savings on its own. </p>
<p>This is one reason why we partner with companies like digital dictation providers, Winscribe, to deliver whole solutions rather than technology installations. One example of a single big saving comes from a large trust who purchased a solution combining Epro clinical correspondence, Winscribe Digital Dictation and Dragon Speech recognition with the aim of a 1.5 million spend to achieve a 9 million saving. There is certainly much technology involved, but the key to realizing the savings is the associated re-organization of people.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2012/should-our-salami-slices-be-thick-or-thin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merry Christmas from Bluewire!</title>
		<link>http://www.bluewire-technologies.com/2011/merry-christmas-from-bluewire/</link>
		<comments>http://www.bluewire-technologies.com/2011/merry-christmas-from-bluewire/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 08:00:36 +0000</pubDate>
		<dc:creator>Bluewire</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Christmas]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=872</guid>
		<description><![CDATA[2011 has been a busy year for Bluewire Technologies. Here is the low-down on what we have been doing.]]></description>
			<content:encoded><![CDATA[<p><img src="/assets/bluewire-xmas11.jpg" alt="Photo of all the staff at Bluewire Technologies" title="The Bluewire Team" width="779" height="584" class="aligncenter size-full wp-image-873" /></p>
<p class="intro">Merry Christmas from everyone at Bluewire Technologies!</p>
<p>2011 has been a great year for Bluewire and Epro. We have had <a href="http://www.bluewire-technologies.com/2011/three-developers-join-bluewire/" title="Three developers join Bluewire">three new developers join the team</a>: Ruari has joined us to help manage deployments of Epro, Matthew has been working on our reporting functionality and Kit has been developing our new <a href="http://www.epro.com/" title="Epro">Epro.com</a> website. We also have Bonny who has joined us as a freelance usability consultant, and she also works on our online presence and community participation.</p>
<p>Sadly, <a href="http://www.bluewire-technologies.com/2011/pub-talk-glenns-leaving-drinks/" title="Pub talk: Glenn’s leaving drinks">Glenn left us</a> to pursue other things, though he is still seen here now and again (especially when Adam cooks for us all!).</p>
<p>Our Technical Director Will left us for a year long sabbatical too, however we still hear from him <a href="http://www.bluewire-technologies.com/author/wiho/" title="Blogs by Will Holley">on our blog</a>.</p>
<p>We have had one of our busiest years to date, having deployed Epro to three new NHS Trusts this year: Leeds Teaching Hospitals, Harrogate Hospital and Portsmouth Hospital. We hope that 2012 continues to see more deployments across the UK!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/merry-christmas-from-bluewire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting SSH Agent Forwarding</title>
		<link>http://www.bluewire-technologies.com/2011/troubleshooting-ssh-agent-forwarding/</link>
		<comments>http://www.bluewire-technologies.com/2011/troubleshooting-ssh-agent-forwarding/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 11:14:57 +0000</pubDate>
		<dc:creator>Douglas Livingstone</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=860</guid>
		<description><![CDATA[Tools: ssh-add -l Verify your current identity ssh-add Load keys from ~/.ssh into the authentication agent The GitHub set up guide has a good introduction to ssh keys, if all goes well it looks like this: doug@local:~$ ssh -T git@github.com &#8230; <a href="http://www.bluewire-technologies.com/2011/troubleshooting-ssh-agent-forwarding/">Continued</a>]]></description>
			<content:encoded><![CDATA[<blockquote style="background: #f0f0f0; padding: 20px;"><table class="simple">
<tr>
<td><b>Tools:</b></td>
<td><code>ssh-add -l</code></td>
<td>Verify your current identity</td>
</tr>
<tr>
<td></td>
<td><code>ssh-add</code></td>
<td>Load keys from <code>~/.ssh</code> into the authentication agent</td>
</tr>
</table>
</blockquote>
<p>The GitHub <a href="http://help.github.com/set-up-git-redirect/">set up guide</a> has a good introduction to <code>ssh</code> keys, if all goes well it looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@local:~$ ssh -T git@github.com
    Hi Douglas! You've successfully authenticated, but GitHub does not provide shell access.</pre></div></div>

<p>Since my <code>ssh</code> keys are on my local machine, connecting to GitHub is seamless. While setting up a remote server to demo a side project, I wanted to check out some code from GitHub, and here&#8217;s what happened:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@local:~$ ssh doug@remote
    doug@remote:~$ ssh -T git@github.com
    Permission denied (publickey).</pre></div></div>

<p>To connect to GitHub I need to use my private key, but I don&#8217;t want to copy my key to the remote server. <a href="http://unixwiz.net/techtips/ssh-agent-forwarding.html">SSH Agent Forwarding</a> to the rescue.</p>
<h2>SSH Agent: Could not open a connection</h2>
<p>The first problem was that I couldn&#8217;t access my local <code>ssh agent</code> from the remote server. Here&#8217;s what the error looks like:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@remote:~$ ssh-add -l
    Could not open a connection to your authentication agent.</pre></div></div>

<p>Agent forwarding needs to be enabled locally and on the remote server. On my local machine, I added this to my <code>~/.ssh/config</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    Host remote
    ForwardAgent yes</pre></div></div>

<p>The <code>Host</code> section header accepts a wildcard, but make sure to only enable it for hosts you trust to act as if they have your private key. On the server, <code>AllowAgentForwarding yes</code> should appear in <code>sshd_config</code>, but this is the default on Ubuntu so I didn&#8217;t have to make a change.</p>
<h2>SSH Agent: The agent has no identities</h2>
<p>Once the remote machine could connect to the agent, I was surprised to find that it didn&#8217;t know my identity, even though I was already connected to the remote machine!</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@remote:~$ ssh-add -l
    The agent has no identities.</pre></div></div>

<p>This produced the same output on my local machine, so it looks like the <code>ssh</code> connection was using the private key directly, skipping the agent. I ran <code>ssh-add</code> to add the local keys in <code>~/.ssh</code> to the agent:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@local:~$ ssh-add
    Identity added: /Users/doug/.ssh/id_dsa (/Users/doug/.ssh/id_dsa)
    doug@local:~$ ssh-add -l
    1024 b6:dd:b7:1f:bc:25:31:d3:12:f4:92:1c:0b:93:5f:4b /Users/doug/.ssh/id_dsa (DSA)</pre></div></div>

<p>This isn&#8217;t something I would want to have to run after every restart, so here is how to make it happen automatically on <a href="http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/">OS X</a> and <a href="http://jelledepot.blogspot.com/2009/04/putty-pageant-autoload-your-private.html">Windows</a>.</p>
<h2>Digging Deeper</h2>
<p>The <code>ssh -v</code> verbose flag produces lots of interesting output on authentication negotiation. Here&#8217;s the line which shows that GitHub requires publickey authentication:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">    doug@remote:~$ ssh -vT git@github.com
    ...
    debug1: Authentications that can continue: publickey
    ...
    Permission denied (publickey).</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/troubleshooting-ssh-agent-forwarding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open source in the NHS</title>
		<link>http://www.bluewire-technologies.com/2011/open-source-in-the-nhs/</link>
		<comments>http://www.bluewire-technologies.com/2011/open-source-in-the-nhs/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 01:08:09 +0000</pubDate>
		<dc:creator>Will Holley</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Health Informatics]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=847</guid>
		<description><![CDATA[There has been a lot of talk recently about the role of open source software (OSS) in the NHS and the govenment has recently published a procurement toolkit which aims to push the public sector towards procuring open source solution &#8230; <a href="http://www.bluewire-technologies.com/2011/open-source-in-the-nhs/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of talk recently about the role of open source software (OSS) in the NHS and the govenment has recently published a <a href="https://update.cabinetoffice.gov.uk/resource-library/open-source-procurement-toolkit" target="_blank">procurement toolkit</a> which aims to push the public sector towards procuring open source solution where possible.</p>
<p>Considering the role of OSS within healthcare, I think there are two distinct categories:</p>
<ol>
<li>Open source solutions which might be procured directly by the NHS.</li>
<li>Open source components to facilitate building software for the NHS.</li>
</ol>
<p>The first category is where recent discussions have focussed and includes things like operating systems, databases and healthcare-specific software such as the<a href="http://www.ehi.co.uk/news/acute-care/7251/leeds-releases-portal-open-source-code" target="_blank"> clinical portal released by Leeds recently</a>. There are some very well established options here but uptake has been very limited so far, largely due to the well established dependency on Microsoft technology (which, until recently, has been licensed at a heavily discounted rate) and <a href="http://www.ehi.co.uk/news/acute-care/7370/cambridge-produces-all-us-shortlist" target="_blank">risk-averse procurement</a> processes.</p>
<p>The second category is interesting because having open source components for NHS software both lowers the barrier to entry for new suppliers and also allows suppliers to concentrate on areas which deliver customer value. There is very little UK-specific tooling around standards such as HL7, ITK, Common User Interface, DM+D, SNOMED CT &#8211; suppliers spend a lot of time and money implementing internal tools to deal with these themslves. Why are there not open source projects in these areas? I think a large part of the problem is the lack of a visible, active healthcare-specific development community in the UK. As a supplier, why would invest in open sourcing one of your internal projects without confidence that the development community can extend and support that project in a more effective way than we can on your own?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/open-source-in-the-nhs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does being isolated lead to a better codebase?</title>
		<link>http://www.bluewire-technologies.com/2011/does-being-isolated-lead-to-a-better-codebase/</link>
		<comments>http://www.bluewire-technologies.com/2011/does-being-isolated-lead-to-a-better-codebase/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 20:40:38 +0000</pubDate>
		<dc:creator>Will Holley</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=824</guid>
		<description><![CDATA[For the last 5 months I&#8217;ve been halfway across the world on sabbatical from Bluewire. I&#8217;ve been observing the development of Epro back in Bristol and doing bits of work here and there to keep myself familiar with the codebase. &#8230; <a href="http://www.bluewire-technologies.com/2011/does-being-isolated-lead-to-a-better-codebase/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>For the last 5 months I&#8217;ve been halfway across the world on sabbatical from Bluewire. I&#8217;ve been observing the development of Epro back in Bristol and doing bits of work here and there to keep myself familiar with the codebase. </p>
<p>Before I left we were already fairly well set up for remote development &#8211; there is sometimes a need to do some coding at a customer site or on the road &#8211; so the infrastructure was in place, and we set up a <a href="http://kris.me.uk/2010/10/01/svn-master-with-git-mirrors.html" target="_blank">git mirror</a> of our subversion repository so we can make complex changes without syncing back to the office. However, there is one part of the development infrastructure I&#8217;m missing &#8211; my co-workers. </p>
<p>In Brisol our office is open plan. If there is a piece of code or architecture you don&#8217;t understand then the path of least resistance is to wander over to person who wrote it and ask them how it is supposed to work. Forgetting the <a href="http://my.safaribooksonline.com/book/web-development/usability/0130601233/group-development/ch06" target="_blank">well-documented</a> productivity hit that interruptions can cause, this seems like a good thing for whoever is stuck because it can quickly solve their problem. </p>
<p>In Australia, without the luxury of easily contactable co-workers, my only immediate option when I don&#8217;t understand something is to <em>read the code</em>. There is a much stronger motivation to refactor and review when access to the person who originally wrote the code is restricted. Maybe this is yet another reason to allow developers more isolation from their co-workers when writing code?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/does-being-isolated-lead-to-a-better-codebase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running effective training</title>
		<link>http://www.bluewire-technologies.com/2011/running-effective-training/</link>
		<comments>http://www.bluewire-technologies.com/2011/running-effective-training/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 16:56:09 +0000</pubDate>
		<dc:creator>Bonny Colville-Hyde</dc:creator>
				<category><![CDATA[Epro]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=800</guid>
		<description><![CDATA[Bonny has been looking at how we can improve our training procedures to ensure they are as effective as possible.]]></description>
			<content:encoded><![CDATA[<blockquote style="background: #f0f0f0; padding: 20px">
<p style="font-size: 18px; line-height: 24px; font-family: Georgia, serif">Over the past few months we have been looking at how we can improve the training we provide clients and partners using <a href="http://www.bluewire-technologies.com/epro/" title="Epro">Epro</a>.</p>
</blockquote>
<p>As a User Experience (UX) designer, I&#8217;m concerned by systems that require users to have training before they can use them, as the idea of needing to be trained implies that a system is overly complex. Contextual support and error prevention can be used on most systems and websites to ensure that users have the freedom to use the service at their will. However, looking at the nature of tasks users have to perform using Epro, and the potentially fatal consequences of errors, in this case the system does demand that users have a good level of understanding before they are able to use a live system. Training is therefore essential to protect patients from errors that could, in some instances, be very unpleasant.</p>
<p>We currently run training sessions with groups of users at Trusts before Epro is launched within their Trust. These include interactive demonstrations of a test system that trainees can explore and play with, so that they become familiar with the tasks they will need to conduct. Although this does work well, we have been looking for ways to improve as training does not always occur at the optimal time for participants (due to busy hospital schedules). If we are to provide the best training for users we need to find ways to ensure they retain the information they learn.</p>
<p>After doing some research into training techniques, I&#8217;ve developed a list of key points we are going to use during our review of our Epro training procedures, which are shown below. These focus on ideas that can help users to recall information in the long term.</p>
<h2>Improving information retention</h2>
<blockquote style="background: #f0f0f0; padding: 20px">
<p style="font-size: 18px; line-height: 24px; font-family: Georgia, serif">&#8220;It goes in one ear and out of the other.&#8221;</p>
<p style="font-size: 16px; line-height: 20px"><strong>&ndash; Exactly what we don&#8217;t want</strong></p>
</blockquote>
<p>Information recall can be improved by making allowances for the following factors:</p>
<h3>Content structure:</h3>
<p>People remember things better that are at the start or end of training sessions. Structuring content to complement this can help to ensure the most important lessons or take aways are retained above less important points.</p>
<h3>Refreshing trainees memories</h3>
<p>People recall things more poorly 24 hours after training &#8211; reviewing materials at this point can help to cement them, and allow them to retain the information. One way to do this is to run a quiz or test the day after training has taken place. We are actually developing an online quiz for our Epro trainees to use following their training sessions to help them put their learning into action.</p>
<p>We are also planning to introduce an online community forum and knowledge base where Epro users can go to re-engage with training materials as well as ask questions and request new features. We hope that this helps to maintain the user&#8217;s level of knowledge over time.</p>
<h3>Use triggers to aid memory</h3>
<p>People struggle to remember lots of similar things, so you can influence what they remember by making key points unusual or unexpected. These points will be more memorable, and if they are particularly surprising, they will be easily recalled by trainees.</p>
<p>Another tactic to help people remember details is to use mnemonics and/or analogies, like the ones used in school science classes: remember <em>&#8216;MRS GREN&#8217;</em> (<strong>M</strong>ovement, <strong>R</strong>espiration, <strong>S</strong>ensitivity, <strong>G</strong>rowth, <strong>R</strong>eproduction, <strong>E</strong>xcretion, <strong>N</strong>utrition).</p>
<h3>Engage both sides of the brain</h3>
<p>People recall things better when they engage both sides of the brain: both analytical and creative thinking. Visual material and material that stimulates emotional responses is more memorable than material that is heard or talked about. These different types of stimulus are ‘saved’ in different parts of the brain, so having materials that offer these different characteristics increases the chances of the information being stored and recalled.</p>
<h3>Maintaining concentration</h3>
<p>During training, participants ability to recall or follow information gradually reduces as they lose concentration. Unfortunately as humans we have limited capabilities to keep attention for extended periods of time. This can be partly alleviated by structuring the training to incorporate changes of pace and short bursts of activity. These changes help to re-engage those who might have lost their train of thought. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/running-effective-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Bits 9</title>
		<link>http://www.bluewire-technologies.com/2011/sql-bits-9/</link>
		<comments>http://www.bluewire-technologies.com/2011/sql-bits-9/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 12:03:34 +0000</pubDate>
		<dc:creator>Matthew Dunsdon</dc:creator>
				<category><![CDATA[Database Performance]]></category>
		<category><![CDATA[Reporting Services - SSRS]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Integration Services (SSIS)]]></category>
		<category><![CDATA[Reporting Services (SSRS)]]></category>
		<category><![CDATA[SQL Bits]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=775</guid>
		<description><![CDATA[SQL Bits 9 took place in Liverpool between the 29th September to the 1st October. Matthew went along and has shared his experience of the conference here.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-779" title="SQL Bits" src="/assets/SQLBitsLogo.png" alt="SQL Bits logo" width="191" height="144" />Last month I attended the three day <a href="http://sqlbits.com/">SQL Bits 9</a> conference held in Liverpool. It was a great opportunity to meet other people in the SQL Server community and gave me a chance to see the city for the first time.</p>
<p>I started working at Bluewire Technologies this summer after graduating from University, and so far I have been doing a lot of work with Microsoft SQL Server. The timing of the SQL Bits conference came at just the right moment for me as I have spent several months getting into SQL Server and I’m now ready to broaden my understanding. It was also a great opportunity to meet other SQL users and pick up tips.</p>
<p>The conference was my first ‘proper’ professional event I have attended, and It gave me the opportunity to experience working away from the office and introduced me to networking with other professionals. I set myself some goals for my time at SQL Bits, which were:</p>
<ul>
<li><strong>Experience:</strong> To enjoy the opportunities that occurs when working out of the office</li>
<li><strong>Learn:</strong> Deepen and broaden my understanding of Microsoft SQL Server</li>
<li><strong>Network:</strong> Take advantage of the opportunity to meet a large variety of different people</li>
</ul>
<p>Part of my job is to deal with execution plans, deadlocking issues, query performance problems and the reporting services (SSRS) component of SQL Server, so I was keen to develop my knowledge of these areas at the conference. Topics of particular interest to my work included:</p>
<ul>
<li><strong>Execution Plans:</strong> Understand how they are created and can be manipulated</li>
<li><strong>Lock behaviour:</strong> Discover how transactions and threading affects a database</li>
<li><strong>Integration Services:</strong> Gain overview and explore relationship with Reporting Services</li>
<li><strong>Performance:</strong> Be aware of queries to avoid, why they bad and possible resolutions</li>
<li><strong>Reporting Services:</strong> Increase my level of expertise for creating SQL reports</li>
</ul>
<h2>Day 1: SSIS</h2>
<p>The full day session that I attended on Thursday looked at SQL Server Integration Services (SSIS). This session primarily focused on how SSIS can be used to support extract, transform and load (ETL) process. The beginning of this session provided a good introduction into using SSIS, though later demonstrations showed how reporting can be used alongside it.</p>
<p>Key points I took away from this session:</p>
<p><strong>Buffers and Settings:</strong> Developed understanding how settings like buffer size affect performance<br />
<strong>Control flows:</strong> Seen how tasks, block sets and looping can be used to execute data flows<br />
<strong>Data flows:</strong> Identified how sources, transformations and destinations can be configured<br />
<strong>Performing ETL:</strong> Identified how flat files can be used to perform incremental loads into SQL Server</p>
<h2>Day 2: SQL Performance</h2>
<p><strong>SQL Performance:</strong> Looked at SQL queries, identified performance issues and walked through the solutions.</p>
<p><strong>Transactions and Locking:</strong> Developed understanding of how implicit and explicit transactions behave and which concurrency locks are not compatible. Deadlock prevention mechanisms were also discussed – identified that NOLOCK should rarely be used and uses of database snapshots.</p>
<h2>Day 3: Advanced Reporting Techniques</h2>
<p><strong>Advanced Reporting Techniques:</strong> Broadened understanding through looking at examples to perform reporting. This included been shown how to develop themes for per user basis, creating Gantt charts, heat maps and the effects of using tables and sub-reports.</p>
<p><strong>Execution Plans:</strong> Improved my knowledge surrounding execution plans and their effect in a database – am more familiar with behaviour of joins and aggregates.</p>
<p><strong>Map-Based reporting:</strong> Seen how map data can be created and used inside SSRS</p>
<p><strong>PowerPivot and QlikView:</strong> A comparison and contrast of two business intelligence tools that allow database data to be brought into either Microsoft Excel or <a href="http://www.qlikview.com/">Qlikview</a>’s visualisation interface.</p>
<p><strong>SQL Service Broker:</strong> Looked at how the SQL service broker can be used to achieve certain functionality.</p>
<h2>What I have gained from SQL Bits</h2>
<p>The conference has given me more confidence when It comes to solving problems and understanding the performance of our SQL Server databases. I’m also spending more time experimenting with SQL and using the information I took from the sessions which is great.</p>
<p>I am also planning on attending the <a href="http://www.sqlserverclub.co.uk/sql-server-user-group-about.aspx">Bristol SQL User Group</a> as I think it will give me more opportunities to learn and share knowledge.</p>
<h2>Resources</h2>
<p>Below I have included a set of resources that belong with each session. There should be videos of these talks being made available as part of <a href="http://sqlbits.com/information/PublicSessions.aspx">session list for SQL Bits</a>.</p>
<p><strong>Advanced Reporting Techniques:</strong> This presentation was primarily based upon the work on the <a href="http://milestone-scheduler.com/">milestone scheduler</a>. Other useful resources include <a href="http://www.sql-server-business-intelligence.com/sql-server/ssrs/ssrs-reports-examples">SSRS reports examples</a> and <a href="http://www.sql-server-business-intelligence.com/sql-server/ssrs/ssrs-tutorial">SSRS Tutorial</a>.</p>
<p><strong>Execution Plans:</strong> <a href="http://www.sqlpassion.at/blog/PermaLink,guid,616d9dcf-409b-4444-8ddd-d69740ccef97.aspx">Slides and SQL code</a>.</p>
<p><strong>Map-Based reporting:</strong> <a href="http://road-blogs.blogspot.com/2011/10/fast-track-to-spatial-reporting-sqlbits.html">Slides, reports, database backups and demo notes</a> are available.</p>
<p><strong>PowerPivot and QlikView:</strong> Has provided the slides alongside relevant resources: <a href="http://www.purplefrogsystems.com/blog/2011/10/sqlbits-9-session-powerpivot-and-qlikview-101/">Powerpivot workbook and Qlikview script</a>.</p>
<p><strong>SQL Performance:</strong> Link to <a href="http://sqlbits.com/Sessions/Event9/Performance_tuning_from_the_field">SQL code used in the session</a>.</p>
<p><strong>SQL Service Broker (and Gathering Performance Data with PowerShell):</strong> <a href="http://sqlblog.com/blogs/allen_white/archive/2011/10/09/sqlbits-presentation-materials.aspx">Video of session</a>.</p>
<p><strong>Transactions and Locking:</strong> There are <a href="http://tenbulls.co.uk/2011/10/03/sqlbits-9-slidedeck-for-readpast-furious/">slides</a> from this session as well as a <a href="http://blogs.technet.com/b/josebda/archive/2009/03/19/sql-server-2008-locking.aspx">notes from 2008</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/sql-bits-9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Single points of failure in people identification, HMRC and tax codes</title>
		<link>http://www.bluewire-technologies.com/2011/single-points-of-failure-in-people-identification-hmrc-and-tax-codes/</link>
		<comments>http://www.bluewire-technologies.com/2011/single-points-of-failure-in-people-identification-hmrc-and-tax-codes/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 10:18:27 +0000</pubDate>
		<dc:creator>Adam Towler</dc:creator>
				<category><![CDATA[Health Informatics]]></category>

		<guid isPermaLink="false">http://www.bluewire-technologies.com/?p=725</guid>
		<description><![CDATA[One of our employees recently had one of those unwelcome notifications from HMRC informing him they had changed his tax code; they asserted that Bluewire were employing him as a second job, and therefore he had to pay £1500 in &#8230; <a href="http://www.bluewire-technologies.com/2011/single-points-of-failure-in-people-identification-hmrc-and-tax-codes/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>One of our employees recently had one of those unwelcome notifications from HMRC informing him they had changed his tax code; they asserted that Bluewire were employing him as a second job, and therefore he had to pay £1500 in unpaid taxes.  HMRC thought he was also working for an agency we had never heard of. Now I guess he <em>could</em> be moonlighting, but given how hard he works for us, it&#8217;s rather unlikely.  Any spare time would more likely be spent playing TF2.</p>
<p>The HMRC had made a mistake, presumably a case of mistaken identity. Given that everyone has a unique National Insurance Number, this set me wondering how that error was made. Did someone do a search like &#8216;john smith bristol&#8217; and then pick the name above or below the one they wanted? This is an established risk with pick lists and is something which should influence the way you design pick lists for drug prescribing. Not all suppliers do this which has led to some <a href="http://www.ehi.co.uk/news/ehi/6850/e-discharge-'increases-drug-errors'" target="_blank">negative press reports</a>. There is some good guidance on it <a href="http://www.mscui.net/DesignGuide/SearchPrescribe.aspx" target="_blank">here</a>.</p>
<p>Perhaps the error had occurred as a consequence of using a single key field (e.g. National Insurance Number)  for identification which is an inherent risk of relying on a single key field. Incorporating a check digit as in the case of <a href="http://www.datadictionary.nhs.uk/data_dictionary/attributes/n/nhs_number_de.asp" target="_blank">NHS Numbers</a> partially mitigates against this, but only detects errors which alter the key field to an invalid one, not ones which alter it to another <em>valid</em> entry, which may reference a real entity.</p>
<p>Let&#8217;s consider administration of drugs at the bedside in hospitals. It is incumbent on the nurse to identify each patient correctly as step one. One strategy is to attempt to enforce two or more factor identification such as checking a number, name and date of birth or address. At first thought this would seem to reduce risk, but asking people to perform repetitive actions which consume extra time, may lead to reduced concentration or a mechanical approach which defeats the primary aim of trying to reduce mismatch errors.  Bar code technology <a href="http://www.nejm.org/doi/full/10.1056/NEJMsa0907115" target="_blank">can help</a> but is not a cure all.</p>
<p>How should one check multiple factors? Checking name, number and date of birth correlate from a chart at the end of the bed or a wrist band still do not necessarily remove single points of failure (wrong chart, wristband with errors). Verifying the patient&#8217;s name and date of birth by asking directly would seem an obvious approach for mentally competent patients. During a recent in-patient stay, this provides the added benefit of furnishing my 80 year old razor-sharp-witted mother to respond to an enquiry of her date of birth with &#8216;The same as I told you when you asked me at 0911 this morning, and four times a day every day since I was admitted.&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/single-points-of-failure-in-people-identification-hmrc-and-tax-codes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thoughts on SNOMED CT &#8211; a supplier&#8217;s perspective</title>
		<link>http://www.bluewire-technologies.com/2011/thoughts-on-snomed-ct-a-suppliers-perspective/</link>
		<comments>http://www.bluewire-technologies.com/2011/thoughts-on-snomed-ct-a-suppliers-perspective/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 21:45:38 +0000</pubDate>
		<dc:creator>Will Holley</dc:creator>
				<category><![CDATA[Health Informatics]]></category>

		<guid isPermaLink="false">http://dev.bluewire-technologies.com/?p=652</guid>
		<description><![CDATA[The Information Standards Board have recently approved SNOMED CT (SCT) as a &#8220;fundemantal standard&#8221;, almost 10 years since its inception. At Bluewire, we would consider ourselves early adopters of the terminology &#8211; both Adam and I went on training courses back &#8230; <a href="http://www.bluewire-technologies.com/2011/thoughts-on-snomed-ct-a-suppliers-perspective/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>The Information Standards Board have recently <a href="http://www.isb.nhs.uk/documents/isb-0034/amd-26-2006" target="_blank">approved</a> SNOMED CT (SCT) as a &#8220;fundemantal standard&#8221;, almost 10 years since its inception. At Bluewire, we would consider ourselves early adopters of the terminology &#8211; both Adam and I went on training courses back in 2003 and my Masters thesis in 2004 investigated approaches to derive SCT terms from natural language &#8211; considered a &#8220;holy grail&#8221; within health informatics (I don&#8217;t think we are much closer to this now than we were then from a technical perspective, and in the real world, there are significant cultural and user interface issues to be overcome if this is ever to become a reality).</p>
<p>From a commercial perspective, we have had little or no demand for SCT support from hospitals. The only place where we are using the terminology significantly is when recording drug administration using the <a href="http://www.dmd.nhs.uk/" target="_blank">dictionary of medicines and devices</a>, which uses SCT identifiers internally. In turn, these can be used to drive decision support (we use <a href="http://www.firstdatabank.co.uk/" target="_blank">First Databank</a>) and so there is an incentive to collect the structured data. All of the national datasets that we use in a structured way (such as <a href="http://www.datadictionary.nhs.uk/data_dictionary/attributes/m/main_specialty_code_de.asp?shownav=1" target="_blank">Specialty Codes</a>) do not yet use SCT, and it is not always the case that hospitals use these codes internally anyway.</p>
<p>As to the future of SCT, I have some thoughts:</p>
<ol>
<li>There needs to be a strong commercial incentive for suppliers to support SCT. Initially, I think this will come as the national datasets migrate to SCT terms. After the low-hanging fruit, I think adoption will be much slower, and it will be a long time before we start to see SCT used for what is currently unstructured data and have the tools to take advantage of the properties of SCT which differentiate it from it&#8217;s predecessors.</li>
<li>We need significant user interface innovation around clinical data entry if we are to start replacing unstructured prose with structured / coded data. Maybe tablets will provide the incentive here, since on-screen keyboard input is clunky, and it is an opportunity to start with a blank slate. This kind of innovation is tough in the risk-averse and commercially difficult NHS environment and, although tablets are in vogue, it is yet to be seen whether there is a market for software that really takes advantage of the platform.</li>
<li>Collecting structured / coded data is very difficult if we don&#8217;t know how it is going to be used &#8211; if we could work this out retrospectively then it is effectively the same problem as automatically deriving codes from natural language.</li>
<li>Hospitals and suppliers need better tools to manage and work with the SCT releases. At the moment, we are having to maintain our own internal SCT terminology database, applying updates and subsets ourselves. This is costly, and means that the terminology is only updated with new releases of our software. Under Connecting for Health there were noises about NHS-wide <a href="http://www.healthlanguage.com/">terminology services</a> but we&#8217;ve never seen this implemented anywhere. At a technical level, there is little / no out of the box support for the standard platforms and development tools that most NHS-supplied software is built on. Where are the libraries and tools for developing against SCT in .NET or Java?</li>
</ol>
<div>In short, I think there is a future for SNOMED CT, but it is still too early to see if we will ever be able to use it to its full potential and there needs to be pragmatic and practical guidance to drive adoption.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/thoughts-on-snomed-ct-a-suppliers-perspective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best practices for automated database migration</title>
		<link>http://www.bluewire-technologies.com/2011/best-practices-for-automated-database-migration/</link>
		<comments>http://www.bluewire-technologies.com/2011/best-practices-for-automated-database-migration/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 11:35:03 +0000</pubDate>
		<dc:creator>Matthew Dunsdon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Knowledge sharing]]></category>
		<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://dev.bluewire-technologies.com/?p=479</guid>
		<description><![CDATA[Using automation tools to aid with database migrations can save time.]]></description>
			<content:encoded><![CDATA[<p class="intro">Automating aspects of database migration can make significant time savings.</p>
<p><img src="/assets/matt-database-migration-presentation.jpg" alt="Matthew Dunsdon running a talk on database migration" title="Matthew running a database migration presentation" width="300" height="225" class="alignright size-full wp-image-481" /></p>
<h2>Overview</h2>
<p>I think it is important to look at how databases affect the development of systems. For I believe that this does not only affect how functionality is composed; but defines the roles, responsibilities and social interactions within a development. I would therefore like to take this opportunity to discuss with you the methods that use database version control to provide database migration and the possibilities of automating database migration.</p>
<h2>Project Development Level</h2>
<p>In project development, it is important to treat the database as a distinct component to the application and external services (such as data logging and report generation tools).  The primary job of both the <em>application</em> and any <em>external service</em> is to provide processing to the data it receives, whereas the function of the <em>database</em> is primarily as an information storage and retrieval system.</p>
<p><img src="/assets/application-database-externalservices.png" alt="Diagram showing that the application, the database and the external services are separate." title="Application - Database - External Services" width="578" height="80" class="aligncenter size-full wp-image-509" /></p>
<p>The problems faced when looking at typical development teams is that there is this propensity for application code to be placed under a version control system, but for the database to be placed outside of version control. It is often common place for single instances of databases to be shared between multiple developers.</p>
<p>From a project development level, each developer should work with their own version of the database. No longer does there need to be a <em>build-master</em> to police the changes made to the database.</p>
<p>By using <em>database scripts</em> to make changes to the database and having a system which can execute those scripts, then there should be the framework to allow developers to re-build their databases to make sure they have the modifications that other team members have made.</p>
<p><img src="/assets/everybody-loves-buildmanager.png" alt="Comic sketch by Geek &amp; Poke" title="Everybody loves the buildmanager" width="366" height="356" class="aligncenter size-full wp-image-518" /></p>
<h2>Automation Process</h2>
<p>The automation process for the database component of a project could be done by tools that generate database scripts. One option would be to use tools that examine code and files to automatically generate these scripts. The alternative approach would be to consider using a graphical tool that allows the user to modify a database, whilst it tracks changes made in order to generate scripts.</p>
<p>An example of a tool that manages scripts is Microsoft Visual Studio Team System, which allows ‘Database Projects’ to be created.</p>
<p>Whether or not you would want to use these tools to automate the process of generating databases scripts is really be up to you. The issue that will be faced is finding the right tool for your needs that will allows those nasty edge cases to be manually enforced.</p>
<p>As long as database descriptions are generated, whether that is manually or otherwise, then they can be versioned. With database descriptions versioned, then the rest of the database migration can take place. From my experience, generating these by hand would work.</p>
<h2>Addition of Features</h2>
<p>Features are added to a project to add or modify functionality for the application, database (such as reporting data or query performance) for the whole project. It should be the case that when modifications are made to a database, they should also be attached to any relevant code changes via source control.</p>
<p>Developers should be encouraged to change the structure of tables, rather than feeling that they should only rely on views / functions / procedures to generate data. This attitude should affect the culture in the workplace and empower good development choices.</p>
<p>It is worth explaining at this point the two methods of defining modifications to the database when using database scripts.</p>
<h2>Object Based Scripts</h2>
<p><img src="/assets/tables.png" alt="Example list of data tables" title="Tables, Procedures and Views" width="194" height="251" class="alignright size-full wp-image-511" /><br />
In an object based scripting system, one file is responsible for creating a new item – such as a database table, view, procedure or function. Each file may also take the responsibility of removing or backing up the previous instance of the item before creating a fresh copy.</p>
<p>What this method does is allow fresh items to be created by a developer in one go, since one file contains the complete description needed for creation.</p>
<p>The process for re-building the database is:</p>
<ol>
<li>Remove database</li>
<li>Run every file to create database, tables and other items</li>
<li>Import data into tables</li>
</ol>
<h2>‘Delta’ Based Scripts</h2>
<p><img src="/assets/table2.png" alt="Screen shot of example delta patching list" title="Example patching using &#039;deltas&#039;" width="287" height="260" class="alignright size-full wp-image-512" /><br />
A ‘delta’ based scripting system, operates by taking built version of a database and applying patches to bring a database up to date. In this type of script, one file shows changes to an item rather than describing item as an item. This means that often it is easier to find out the current structure of a table by checking database rather than reading through multiple files.</p>
<p>The process for re-building the database is:</p>
<ol>
<li>Remove database</li>
<li>Build database by importing tables and data</li>
<li>Apply patches up till the version needed</li>
<li>Call scripts to create the other items – views, procedures, functions</li>
</ol>
<h2>Scripting Database Migration</h2>
<p>‘Delta’ files work well for migration, as long as you keep record of the patches that have been applied to a database.</p>
<p>The process:</p>
<ol>
<li>Perform delta</li>
<li>Drop other database items (view, procedures, functions)</li>
<li>Build / create other database items</li>
</ol>
<p>The advantages of using delta files are that they often provide a good description of the changes that have taken place in a table and often capture the intent of the changes as part of a database patch. Data processing and manipulation can take place on a patch by patch basis.</p>
<p>They are not always the best of solutions. They may increase the time taken for a development build of a project to re-build the database, as tables will be modified more than once.</p>
<p>Relying on this approach will also require developers to create ‘delta’ files when they want on the database. It is hard to judge whether this is a positive or negative change.</p>
<p>When using object based scripts for database migration, either a database difference script or a set of ‘delta’ files need to be generated. The problem with relying on a generated script that just compares the database structure is that the outputted migration script is usually too messy to read.</p>
<p>‘Delta’ files can be written by comparing the table differences using a version control system. Those files can either be written manually or by an automation process that can process the logs in the version control system. Both of these approaches often the require contact developer who made the change, in order to understand the intent of the change and whether any data processing is needed.</p>
<h2>The Current Migration Scheme</h2>
<p>We use object based scripts to keep the barrier for database table changes to be low. Delta files are not automatically generated and require one or two individuals to write them. This does require chatting to other member of the development team to make sure the intent and data changes can be captured.</p>
<p>There are several scripts currently in use to aid the development of ‘delta’ files and to perform database migration. In this first case, there are tools to help perform operations such as add column, which cannot be performed in a single database command. There are scripts that allow test migrations to take place by retrieving and building an old version of a database and then running a set of patches.</p>
<p>There is also a tool called SQL Delta, which allows database structures and data to be compared for inconsistencies.</p>
<p>There is currently no script that handles the recreation of the functions, procedure, views, etc.</p>
<h2>Where can we take this?</h2>
<p>We need to change to way database migration takes place. The process for updating functions, procedures and views is currently a manual process involving dependencies on GUI. It should be appropriate to drop these items and create them new, since they contain no data.</p>
<p>It is worth considering if the generation of delta files and patches can be aided via an automated process that using a version control system to identify changes made. This may allow delta files to be grouped together when files are modifying same table.</p>
<p>There is no way to automate the testing of a migration easily with the scripts. We may need to look at making changes or additions to the test migration scripts to better support this. </p>
<p>Currently, we can use SQL Delta to some extent to aid testing by using it to compare structure and data differences.</p>
<blockquote style="background: #f0f0f0; padding: 20px">
<p style="font-size: 18px; line-height: 24px; font-family: Georgia, serif">This post is part of our team knowledge share presentations. To see a complete list of these sessions, please take a look at our <a href="http://dev.bluewire-technologies.com/tag/knowledge-sharing/" title="Knowledge sharing at Bluewire">knowledge sharing page</a>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.bluewire-technologies.com/2011/best-practices-for-automated-database-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

