October 31, 2003

Learning the Business

One of my favorite things to do at work is to learn something new about the business of healthcare. I like to understand the daily activities of the clinicians, providers, business user, and educators. I like to ask the five main questions of what, when, why, where, and how regarding a business process. I like to listen and learn as the expert walks through the business process. You get the invaluable opportunity to learn the business from those who daily do the business. In order to be able to offer the business the best IT solutions, one has to understand the business. Learning from the expert, and working with them to find the best solution is always a rewarding experience when the opportunity arises.

Posted by Elyse at 5:38 AM

October 30, 2003

XML and Access 2002

TechRepublic has recently posted an article about Exporting Access into XML. I wonder if it also imports ..... I wonder if there is any handling of parent child relationships in the xml.

The great thing is this is functionality can also be coded into an application.

Application.ExportXML(objecttype, datasource[, datatarget][,
schematarget][, presentationtarget][, imagetarget][, encoding][,
otherflags])

Also snipped from the TechRepublic, here are the instructions on how to:

  1. Select a table in the Database window?for this example, we'll export the Customers (a table in Northwind, the sample database that comes with Access) schema.

  2. Select Export from the File menu.

  3. Name the XML file CustomersSchema.

  4. Select XML as the file type in the Save As Type control. Don't type the XSD extension; XML will assign the right extension.

  5. Click Export and Access will display three export options; Data (XML), Schema Of The Data, and Presentation Of Your Data. The first two options are selected by default.

  6. Choose Schema Of The Data; you're really just deselecting Data (XML).
  7. Click the Advanced button. You should know that you can omit primary key and index information from the exported file.

  8. Click the Data tab and click OK.

If you can import, this would really be a great tool for debugging hl7 version 3 transactions. Also for testing an interface, you could automatically have a series of xml transactions ready to go, and with a winsocket control, a port and IP address. This might be able to allow for standardized unit testing of developing interfaces without having to register, and create results time and time again

Posted by Elyse at 6:20 AM

October 29, 2003

Collaborating with Clinicians

There is an excellent article in the October 2003 Advance for Health Information Executives about IT collaborating with physicians.

The article details the importance of working together, trusting each other, and talking the same language.

An excerpt from the article:
Here are some rules of thumb:


  1. Communication. Open communication in every direction is essential. Communication must be built into the planning process from the earliest stage. A careful study of workflow often reveals that many departments - plus entities outside the provider organization (such as referring physicians) - are affected, even when the implementation appears limited to one department or group. Communication enables this web of interrelated workflow processes to be recognized by all parties and fully understood from the outset, eliminating many costs, delays and conflicts down the road.

  2. Vision. Develop a shared vision of the future over the long run, not just a single project. What will the medical practice look like in the digital age five or 10 years from now? What will patient care be like? Administration? IT? What can be done now to lay the groundwork for the future?

  3. Accountability. Develop timelines and consensus on deliverables in terms of who, what, when, and where. Set specific milestones for planning and implementation, and draw clear lines of accountability for each assigned task.

  4. Distribution. Share the load. Assignments for planning and delivery must be spread around. Burdening one person or department merely scavenges time and resources from other critical pursuits.

  5. Specialization. Stay within your area of expertise. Even tech-savy physicians shouldn't try to do IT, while IT professionals shouldn't make unilateral decisions that affect patient care.

I think this article can be applied to any relationship with users and IT.

Communication is a rule of thumb, and a meaningful communication mechanism should be established. Also being aware of the audience you are communicating with is important, and don't overwhelm the user with techno-babble. If the user is overwhelming you with professional jargon, ask them to explain it in laymen's terms.

Strategy is the vision that is going to help the business grow with IT advancements. Lay the strategies on the table so that all are aware, don't keep it locked in an email somewhere. People like to know they are working on something for a greater purpose.

Accountability is absolutely necessary to get any collaboration going. How can you believe someone when something never gets done? I would add have support from management, that if someone is assigned to a task they will have time to do it. If something crops up and the timeline will be delay, immediately relay that fact to the other members of the implementation team.

Distribution of work is extremely important. Not only does it help in building a team atmosphere. If you have one person, doing several projects for several different departments, nothing ever gets done.

Respect specialization. If a person does something for 8 - 12 hours a day presently, respect that they are the experts in the area. If you use to do it, but haven't for years, ask the person who currently does. If you dabble in it, respect the person who makes a living off of it.

Posted by Elyse at 6:16 AM

October 28, 2003

How things change

I came across the National Institute of Standards and Technology's Computer Security Resource Center.

Its interesting, there is an article from 1989 on Computer Virus's and Related Threats. There is a reason somethings are called best practices.

Posted by Elyse at 10:07 PM

Automating Outlook Express

One of the gotchas from loading the Microsoft Updates, is in Outlook Express Automation.

There is now a flag that needs to be set so that the application will not prompt the user when emails are being automated. This in general practice is a good idea, except it interferes with scheduled routines that email.

All that needs to be done is to uncheck the warn me when other applications are trying to email me, in the security panel of the outlook express options.

Posted by Elyse at 9:25 PM

Two Buttons on call

In Programming there are times when, the user needs to make a choice. Once action button will move the user in one direction, another in a totally different direction. I find it easiest to offer the user two action buttons, and have the buttons call the routine for submission.

For example:

<input NAME="Submit" value="MoveNext" onClick="MoveNext();">
<input NAME="Submit" value="MovePrevious" onClick="MovePrevious();">

The onclick function triggers before the onsubmit function, which allows you to determine how to submit the choice with these javascript functions:

function MoveNext(){
with (document.frm)
{
action = 'actMoveNextPage.cfm';
submit();
}
}

function MovePrevious(){
with (document.frm)
{
action = 'actMovePreviousPage.cfm';
submit();
}
}

Posted by Elyse at 9:07 PM | Comments (1)

CFMX Upgrade Support

Looks like CFMX 6.1 Upgrade support is FREE!

Posted by Elyse at 8:29 PM

October 26, 2003

BLOBS and CF

A question popped up on Macromedia's forums regarding row size in MS SQL server. There is a max of 8072, which was hit with a nvarchar of 4000.

To solve this problem, the user was going to use an nText datatype and limit the size to 4000 using JS.

My thoughts are if the users of the system are writing more the 4000 bytes of info, why not use it? The text and ntext data types can store and retrieve fields up to 2GB. The CF Administrator blob default byte setting is 65000. (With MX make sure the Blob data type is check in the DSN settings) All that is stored in the SQL server Blob column is a 16-byte pointer to the first page of the column's page chain.

The best way to handle the insert is with the WRITETEXT command.

WRITETEXT takes three arguments: the table.column to be updated, the pointer that points to the data to be updated, and the data to be updated.

So to handle this from CF.
<cfstoredproc procedure="spInsertRow" datasource="#Application.dbConnection#">
<cfprocparam Type="IN" cfsqltype="CF_SQL_BLOB" value="#PreserveSingleQuotes(FORM.txtArea)#" dbvarname="@blobValue">
</cfstoredproc>

And with the SQL db create a stored procedure.
Create Procedure spInsertRow
@blobValue Text
As
DECLARE
@textptr binary(16)

BEGIN TRAN
SELECT @textptr=TEXTPTR(BlobFieldinTable) FROM Table (UPDLOCK)

WRITETEXT #table.blobfield @textptr @blobValue

COMMIT TRAN
GO

For retrieving the data,
DECLARE @txtptr binary(16), @blobLength

BEGIN TRAN
SELECT @txtptr=TEXTPTR(blobColumn),
@blobLength=DATALENGTH(blobColumn)
FROM Table (HOLDLOCK) WHERE ID=1

READTEXT table.blobColumn @txtptr 0 @blobLength
COMMIT TRAN

Another userful item to mention is that the LIKE clause doesn't work with TEXT. Instead you have to use the PATINDEX().

WHERE PATINDEX('%NAME%', blobColumn) <> 0

So I guess the overall assessment is that one can handle the blob functionality in the db. The UI just needs to be careful on how it handles the amount of memory a BLOB can consume.

Posted by Elyse at 9:13 AM | Comments (5)

October 25, 2003

Don't fix it if it ain't broke

I saw this quote today, and thought I'd share it.

"Don't fix it if it ain't broke" presupposes that you can't improve something that works reasonably well already. If the world's inventors had believed this, we'd still be driving Model A Fords and using outhouses.
   - H. W. Kenton

Posted by Elyse at 7:02 AM

October 24, 2003

Using a watermark image

Using style sheets one can easily add a watermark image to the back ground of a page by manipulating a few properties.

The background-image: url(watermarklocation) picks the image to be manipulated.

The background-attachment property controls whether the image is in a fixed location or scrolls with the page.

The background-repeat property indicates how the image is repeated. The choices are repeat, repeat-x, repeat-y, and no-repeat. (self-explanatory)

The background-position property sets the images location on the page, you can either use percent percent, length length, or location location. The first value is the vertical indication, the second value is the horizontal indicator. For percent percent, 0% 0% indicate the top lefthand corner. With length length, you set the distance out, ie 2cm 2cm. For the location, you have a choice of top center bottom for the x, and left, center, right. If you only choose the vertical indication, the default for the horizontal is center.

The full w3c description on css backgrounds can be found here.

An example of this is:

body
{
background-image:url("image/watermark.gif");
background-attachment:scroll;
background-repeat:no-repeat;
background-position:center center;
}


Posted by Elyse at 7:30 PM

October 23, 2003

Kameron's Story

Here is a site that details the story of a true trooper, Kameron Conner. He is this remarkable kid, who smiles all of the time and has a sense of humor that leaves you laughing. Kameron was diagnosed with Chronic Myloid Leukemia, or CML, in August 2003.

Posted by Elyse at 9:43 PM | Comments (1)

October 22, 2003

Debugging in DWMX

For information on how to set up debugging in DWMX click here.

Posted by Elyse at 10:23 PM

Using PDF Files

In my opinion, PDF files are time consuming. They may be good for printing, but waiting for the adobe reader to load, and then print takes time.

I think having a printer friendly page is the best option.

Using CSS:

<style type="text/css" media="print">
body { font: 10pt Arial; }
img { display:none; }
div#drug {margin-left: 1in; margin-right: 1in;}
p { font: 10pt Arial, serif; color: black; }
</style>

Carefully designing a page with CSS can make the printer friendly documents always a click away.

The next best option is the flash paper, but it requires a flash player 6. For the first time, the player load requires a reboot, so I'm for waiting for the penetration level to get a little better, since it requires admin rights in house to load flash player 6. The other issue is that the user has to create the document in contribute and then creates the flash paper.

Posted by Elyse at 9:37 PM

M10 Self Check Digit Algorithm

In case you need it, here it is:

X = 45678123

Take the odd digit positions, counting from the right (3175)
Multiply this number by 2 to get 6350.

Take the even digit positions, starting from the right (2864)

Prepend these to 6350 to arrive at 28646350

Add the sum of the digits to get 34.

Subtract this number from the next highest multiple of 10, (40 ?34 = 6)

The Mod10 self check digit is 6.

Posted by Elyse at 9:09 PM | Comments (1)

October 21, 2003

Another Microsoft Security Release

Microsoft posted several security updates recently. All require a reboot.

With the plethora of viruses around today, it is just a good general principal to patch.

Posted by Elyse at 6:49 PM

IE Browser Changes

There has been alot of traffic on the various blogs regarding the anticipated changes to Internet Explorer.

After losing a court case this summer versus Eolas, Microsoft is making changes to its Internet Explorer browser regarding active content. Active content is defined as all plugins which includes, Java, Adobe Reader, any movie player, and Flash. The changes are that when a plugin loads, a popup message asking the user if it is okay to continue loading the contents of the page, for each individual applet, embed, and object tag elements in the web page.

Macromedia released a breeze presentation to summarize the changes.

Microsoft has created this website to summarize the changes, impact, and allow developers to download a test version of the new browser to see the impact.

It may be a good idea to test the new version of IE with all web applications.

Posted by Elyse at 6:44 PM

October 18, 2003

Imagine the uses of XML Schemas

One of the major discussions around this week is the separation of a web page style from the content contained within the page. Some believe this is possible, others don?t. I like to think it is. I?d like to find the time, to try an idea I have had. All the parts of the idea are coming together, but I?m going to share it. If you try it, please let me know how it works.

I think the idea of separating the information from the format of a document is a very powerful one. In a hospital setting this can be applied in many places the policies and procedures, the in-house formulary, nursing procedures, and the laboratory testing methods to name a few. If one could separate the information contained within these documents from the document authoring tool, imagine the possibilities.

For example, the in-house formulary is probably published in a booklet that medical students and residents rely upon. There hopefully is a web-based formulary, and a bunch of word documents where the pharmacy department can access. So there are many places to update, and many means to disperse the information.

The data needed for a drug or guideline is standardized. The pharmacists know what needs to be there and what doesn't. I'm proposing separating the data from the viewing tool. If the data is in an .xml file repository, and an XML Schema that defines the data elements necessary in the .xml file, then incorporate the XML schema into the viewing tool.

The advantage is one central location to update the data, and automatic dispersion of the data. All of the viewing tools are starting to incorporate xml schemas.

The disadvantages is that this is all conjecture. I haven't tried anything yet, need to get some new software approved, and time to play after work.

Posted by Elyse at 7:42 PM

October 17, 2003

How one thinks

I fall for these things all the time. However, I came across a thinking type quiz and jumped at the chance:

I'm apparently an interpersonal thinker, the characteristics of an interpersonal thinker are:

  • One who likes to think about other people, and try to understand them

  • One who recognises differences between individuals and appreciate that different people have different perspectives

  • One who makes an effort to cultivate effective relationships with family, friends and colleagues


Posted by Elyse at 7:28 AM

The Aftermath of a production problem.

Yesterday was clean up day. We had a production problem, its very interesting how people deal with the problem.

Some people look at the issue, quickly realize that was not the intended result, and help to resolve the problem. Others realize that there is an issue and feel confidence in the team to resolve it quickly. Others prophesize with 20/20 hindsight on the stupidity of the action, but you know, we all realize how stupid it was after the fact.

With spin, anyone can finger point a problem to anything. I wonder how much work time is lost yearly in finger pointing and covering ones assets in case of finger pointing.

I'd like to propose that after we get through the production problem, we look at lessons learned. What could we have caught ahead of time, how could we of caught it, and what can we change in our process so this doesn't happen again.

Posted by Elyse at 6:34 AM | Comments (1)

October 16, 2003

Fusebox in Albany

Looks like a another great user group session by the Albany New York Cold Fusion User Group is coming up in November. Fusebox 4!!! Talk about perfect timing!

Posted by Elyse at 5:27 AM

Healthcare Data Transfer

Hospitals have several systems that need to communicate to each other. The registration system needs to interface admission, discharge, and transfer information to the ed, billing, lab, pharmacy, transcription, radiology, and abstracting system. The lab and radiology systems need to send results to the clinical data repository(s). In order to ensure the results are correct, they also have to interface orders to and from the registration system. The abstracting system needs to interface diagnosis, procedure, and sparcs information to the billing system. Normally, all of these happen around the clock, real-time in HL7 format through an interface engine.

The interface engine is the generator of information for the healthcare infrastructure. When everything is working great, no body even thinks about it. When everything is not working, it?s the topic of the town.

Posted by Elyse at 5:18 AM

October 14, 2003

Data Storage in Mach II

I've been doing some thinking and research in storing data utilizing the mach-ii frameworks.

Data mechanisms are either transactional (data entry) or dimensional (reporting) and if you have a good db designer that processing can be handled in the database. I also believe it should be, since relational db's were created for that functionality.

So how do you link the db to your cfc's in the model? My understanding of the model is that it contains the business logic and rules in objects. For a simple system, it makes sense to have the atomic CRUD operations contained within the object itself. In a complicated system encapsulating the data manipulation and separating the business logic from the data processing, has many benefits.

In my readings, I?ve come across a book, Patterns of Enterprise Application Architecture, which addresses the big picture of application architecture focusing on web development. It helped to clear up my data handling thoughts.

Posted by Elyse at 7:15 AM

October 13, 2003

Hospital Intranets

Congratulations to Mayo Clinic! Their hospital intranet has made Jakob Nielsen?s 10 Best Intranet?s of 2003. They apparently have a bed tracker of available beds on the hospital intranet, wonder how they did that....

A good item of note is the mention of usability design standards. I think consistency with the UI is exceptionally important. Also usability has to be determined by the actual users of the system, not the self ordained gurus. The best setup is to have templates for the CMS that match the usability standard.

Posted by Elyse at 12:29 PM

October 12, 2003

Frameworks

Recently, we have started to consider using a framework for web development. There are various free frameworks available for CF. The choices are:

Fusebox
Fusebox is a procedural calling framework. A recent sys-con articlue overview on the fusebox framework can be found here. Fusebox is a tried, tested, and implemented frameworks.

Mach II
MachII is a object oriented framework. It started out as fusebox MX, but was re-engineered to have CMFX act as an OO language. Another recent article overview can be found here. Also Sean Corfield appears to be a part of the initiative publishing the Mach II Development Guide. There is alot of momentum behind this framework, and the concept is sound. Although still needs to get out of the newborn stage.

CFObjects
CFObjects looks like it tried to make CF4.5 Object Oriented. Code not updated for CMFX or CFC's. Looks a little outdated.

OnTap
OnTap appears to be an event driven framework. It also utilizes the Cold Fusion Application Architecture, instead of attempting to be language independent. Will need to find out more.

MX Framework
Beta Version, no Generally available release.

If there are any others, please feel free to mention them.

Posted by Elyse at 3:16 PM

Encoding

Recently, the topic has come up at work regarding encoding standards. The college informatics programmer has proposed setting an encoding standard.

So of course, the next thing that occurs is research. I've found an interesting article that explains the basics of encoding. I think we are going to use Western Latin 1 for web development. What that means is easily changing the setting in DWMX to Western Latin 1 in the new document preferences, and setting the SQL Server 2000 collation setting to 1252. The problem being for our SQL Servers in order to change it, we are going to need to rebuild all of the databases and reload the data. I love Microsoft.

Posted by Elyse at 11:11 AM

Welcome

I'm going to start something new this month, and see how it goes. I've been debating with the idea of blogging for the past couple of months. A coworker of mine, Jacob Reider, does blogging on a regular basis, interested me in the idea.

From doing a lot of blog reading, there are quite a dispersion of blogs. Blogs have become a communication mechanism that go from dear diary for adults to useful daily informational reads. Hopefully, this blog will be more of the later.

As always these are my opinions, not those of my employer.

Posted by Elyse at 9:55 AM