November 30, 2003
Issue Handling after an upgrade
After upgrading any system, issues always arise. No matter how much testing is done, something is always not examined during testing. It's just one of the facts of life. So anticipating how to find these issues, before hand should be apart of the live plan.
The first step is determining how to capture the issue. For our recent CFMX upgrade, we had several methods. Users would call the help desk, and that issue would be routed to our group. In addition, we placed a site wide error handler within CFMX. This error handler emailed us the IP address, the browser info, the time of the error, the referring page, the page causing the error, the query string on the page, and the error message. We also had people clicking through the site to find issues.
The second step is how to route and resolve the issue. All issues should go to a triage person. This role needs to be filled for the whole time. (A lesson learned) The triage person is quickly able to diagnosis the severity of the issue. Is this a quick fix, here you go, or do we need to get a better handle and analyze the full impact? The triage person either fixes the issue or routes the issue to 2nd level support. 2nd level support isn't tied up in the myriad of issues, they have the time to properly analyze, code, test, and release the fix. The issue prioritization is also essential, if it is a user identified problem they are first on the list, second is grouping the error handler issues, those that occur most frequently to the sparsely occurring.
The next step is to see where else this issue will impact that hasn't been captured, and preemptively resolve those issues.
After executing the plan, review it, and see where it can be improved and where it was a hindrance. Admitting mistakes, allows others to learn from them, and the company doesn't have to incur the cost of the mistake again.
Finally, the last step is to explain to the questioners, why this happened and how it can be preemptively captured in either testing or releasing the next time. Whenever there is an issue, there is always a questioner. It is inevitable, the two are dependent factors, and one never occurs with out the other.
Remind the questioner, that due to the action plan for issue resolution, the customer issue was resolved in anywhere from 5 minutes to xx time, and had an average of yy. The customer was also aware that someone was working to resolve their problem, immediately.
Seriously, providing a stable environment to the users is the most important thing, and having a plan in place to cover the hickups that are incurred is a worthy exercise.
November 29, 2003
Macromedia Central Licensing
The Macromedia Central License appears to be very ambiguous for development. There are three options.
The try-buy program that provides a daily reminder and credit card purchase. If the app doesn't include the instant messaging component, Macromedia takes 20% of the price plus service fees. If the pod includes the instant messaging component, Macromedia's fee goes up to 25% of the price plus service collection fees.
The capacity license program that allows purchase in blocks of 100 user Capacity Packs at $2000.
For applications, that are not created for the purpose of generating revenues directly or indirectly, then they are Free.
Questions surrounding the license are highlighted here.
November 28, 2003
The power of Central
If you haven't taken the time to try Macromedia's new central application, its worth trying out. Jeremy Allaire has posted a recent article that details how central will aid in the Internet 2.0 trend, and Mike Chambers has given details that the presence SDK, AOL instant messenger and ICQ messaging functionality, will be released this winter.
What is Central? Central is almost like a separate brower, that limits where people can go. There is no url address bar, just a Button Bar of the applications (or in central terms pods) you have installed.
I like several of the free pods that have been created for it.
The best is the Blog Reader. Any rss feed can be added to the blog reader, when it is up and running. The blog reader goes and automatically checks for any new posts to blogs or sites. You can also store your entries by cateories. I have the following categories setup, technology, Microsoft blogs, Macromedia blogs, Healthcare blogs, news, and investing, some are defaults of the install others I've added. For instance, I added the technology category then added the rss feeds from MSDN, Macromedia, DevNet, Oracle Technology, CFLIB, and XML Hack. Now the Blog Reader notifies me, in a short time after articles are added to these sites. It is an excellent content update notification tool. Under News, there are default rss feeds installed for the New York Times and CNN. Unfortunately none of our local news authorities have rss feeds from their site, or I would of added them also. Now the app is a little bit clunky, the scroll utility on your mouse won't work with it, and you have to hide the windows tool bar when adding new rss feeds. Also if you have it maximized, you can't access the category or recently updated feeds listboxes. (don't run it maximized). But over all it is a great app.
My next favorite is FiRe. It is a text / xml search and replace tool. See that nicely spaced xml post yesterday. Thank you FiRe.
With Central's ability to provide a rich client interface, separated from the services and data, and the thrust to move central to handhelds also. This is an application worthy of checking out.
November 27, 2003
An XML Formulary
Last week, Microsoft released a nice how to incorporate an xml schema into a template. The article continues to use the xml schema incorporated template to create xml documents. You can find the guide here.
So why is this significant? As I've previously mentioned, the redundant work in multiple areas for hospital wide documentation is significant. The power of XML could really cut down on this redundancy. The power of XML standardization for example,
Here could be the start of an xml schema for drugs
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>
Drug Sheet for formulary
</xsd:documentation>
</xsd:annotation>
<xsd:element name="Drug" type="DrugType"/>
<xsd:complexType name="DrugType" mixed="true">
<xsd:sequence>
<xsd:element name="GenericDrugName" type="xsd:string" minOccurs="1"/>
<xsd:element name="RetailDrugName" type="xsd:string" minOccurs="1"/>
<xsd:element name="DosageForms" type="DosageFormTypes" minOccurs="1">
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DosageFormTypes">
<xsd:element name="DosageForm" minOccurs="1">
<xsd:complexType>
<xsd:element name="Form" type="xsd:string" minOccurs="1"/>
<xsd:element name="DosageFormats" type="xsd:DosageType" minOccurs="1"/>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
<xsd:complexType name="DosageType">
<xsd:sequence>
<xsd:element name="Dose" type="xsd:string" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
And here is a sample xml document for Benadryl (formulary example here)
<Drug>
<GenericDrugName>Diphenhydramine HCL</GenericDrugName>
<RetailDrugName>Benadryl</RetailDrugName>
<DosageForms>
<DosageForm>
<Form>Tablets</Form>
<DosageFormats>
<Dose>25mg</Dose>
<Dose>50mg</Dose>
</DosageFormats>
</DosageForm>
<DosageForm>
<Form>Chewable Tablets</Form>
<DosageFormats>
<Dose>12.5mg</Dose>
</DosageFormats>
</DosageForm>
<DosageForm>
<Form>Capsules</Form>
<DosageFormats>
<Dose>25mg</Dose>
<Dose>50mg</Dose>
</DosageFormats>
</DosageForm>
<DosageForm>
<Form>Syrup, Elixir, and Solution</Form>
<DosageFormats>
<Dose>12.5mg/5ml</Dose>
</DosageFormats>
</DosageForm>
<DosageForm>
<Form>Liquid</Form>
<DosageFormats>
<Dose>6.25mg/5ml</Dose>
<Dose>12.5mg/5ml</Dose>
</DosageFormats>
</DosageForm>
</DosageForms>
</Drug>
Now, here is the power, once we have this definition completed.
The pharmacists can make changes in word a tool everyone is familiar with, and save document in xml format. No learning a new tool, and no more synchronizing every document. Just modified the .dot to have it look for a new version of the .dot for bug fixes, and push the xml file to all needed locations.
That xml file goes to an XML database.
That xml file can be read by a web application then viewed on the intranet, and be searched upon in a web application, at a significant level of ganularity.
That xml file can go off to the publishing company for the booklet of the inhouse formulary.
Probably with the db you can send the XML file to be imported to the palms of the medical students.
When changes are made, it is to one central place, and we are synchronizing with everyone. What a wonderful thing. Coming up with ideas is easy, implementing this idea, that's hard. But you could reuse the pattern you created for the policy and procedures, infection control, lab services directory, I think you get the idea.
Have a Happy Thanksgiving!
November 26, 2003
Database Design
When designing a database, use the single version not the plural of the name of the table. For instance, if you have a table that is full of people, call the table, tblPerson, not tblPeople. Why? Well for cardinality reasons, when deciding how to normalize the database, this convention gives a clearer tip to the relationship being either one to one, one to many, or many to many. For example, let's say we have a database, with a couple of tables, tblCustomer, tblDemographic, and tblVisit. One customer can have many visits, and a customer can have many demographics. The convention makes it just a little bit clearer when discerning the database schema.
The other item is to prefix database tables.
- For tables, try using tbl
- For views, try using vw
- For queries, try using qry
- For stored procedures, try using sp
These prefixes do a couple of things, when you are long gone and at that 6 figure job you deserve :), individuals reviewing your code, can easily determine what they are looking for, when it breaks. Also reserved words will never affect your application, who's going to make a reserved word tblfile vs file?
November 25, 2003
Enterprise Wide Change Management
One of the basic functions of change management is to review, and be aware of changes that are planned on being introduced into the infrastructure of an institution. Also it is beneficial to be able to plan and schedule the release of those changes with minimized risk. It is a good sound process, but what if we expanded its scope from just technical changes, like software release and router replacements, to also include business process changes?
For example, one of the recent innovations that was approved by the FDA was drug eluting stents. Then new procedure and DRG codes were released. This dataset then needed to be uploaded into the billing and abstracting systems. Then I'm also guessing that a reimbursement rate had to be established, and that was probably discussed with the insurance companies. In addition there was probably training at the physician, coding, and biller levels. What if every change here went through a changemanagement process, when the procedure is planned to be performed, the uploading of the dataset, and the new business agreement. This way the business process and the technical process use the same utility to introduce changes. In the end it provides a historical view to the complete change for the new procedure. Also this becomes an ideal auditing tool when looking for improvements within processes.
Imagine the possiblity of changes with regulatory compliance. There would be a full scope of the changes introduced into the business. A central universal process would also improve communication overall for the institution.
The pitfall here, is that process would need to be robust and easy, and definitely not encumber the business from making changes to a process when needed.
November 24, 2003
4.5.2 to CFMX 6.1
We successfully upgraded another box to CFMX 6.1 this morning. This one had been a little more difficult than the previous upgrade.
First, we were able to create a staging box for this upgrade, and we went through two rounds of user testing. (One for CFMX and one for CFMX 6.1)
On our first attempt to upgrade, we attempted to follow the upgrade pattern of the staging area. We planned on upgrading to CMFX, then updater 3, and finally progress to CFMX 6.1. Unfortunately, after upgrading to CFMX, we encountered the ColdFusion MX Application Server service terminated with service-specific error 2, and that pretty much stopped us. After trying a few things, it was time to bring production back online. Considering that this hadn't happened in the stage process, we were a little bewildered.
We all went off to do research and discuss the problem. The plan became to go directly to CFMX 6.1, and shut off any non-vital services, and it went very smoothly this morning.
Lessons learned throughout this upgrade process are as follows:
- <cfexecute> and pkzip don't work together any more. A nice tag, <cfx_zip>, does all of the functionality of pkzip. It works great on CFMX 6.1.
- For Access DBs with memo fields, that you would like to display, the driver should be the Unicode driver within the DSN setting, and verify that CLOB and BLOB are checked.
- With the unicode driver, access queries need to be reviewed and tested. Certain words like file are now reserved, and need to be referred to as [file].
- An immediately after live plan is vital.
Our immediately after live plan was to test the site by having several users, click through the entire site, then funnel the errors to one person that triages the issues. The triage person can either make an immediate change if it is obvious, doesn't take more than five minutes, or forward the issue on to the 2nd level support individuals. Here the issue is analyzed, reprecussions of the change are determined and tested, then the resolution is moved live to start the cycle again. The difficult issues end up here, and the beauty of the plan is that the people have time to review the issues without being overwhelmed with simplistic errors.
November 23, 2003
System Monitoring
One of the most overlooked aspects of implementing a system, is monitoring its functionality when it is live.
The reasoning for monitoring is that within healthcare systems, one system depends on many to function properly. To get data to all of the systems that require the data, the data needs to go through many different routes. For example to get your laboratory results in the clinical data repository, your information gets entered into the registration system, then proceeds to the interface engine, which forwards it on to the laboratory system. The laboratory system then send an order status update to the interface engine, which sends the update to the registration system. The registration system then send the confirmation of your information to the interface engine and on to the laboratory system, which sends the actual result to the interface engine and finally to the clinical data repository. There are a lot of steps in this process that are interdependent. I didn't even go into the network connectivity and server functionality. Having the ability to monitor a interconnected system's functionality at the data integrity level (meaning we sent this did you get this where you expected) and at the level of date entry functionality helps to create a reliable functioning system. It also helps to alert the proper individuals quickly when an issue has occurred.
Users need to have faith in the system, and they don't want or need to understand all of the interdependent steps. They want to be assured that what they enter gets to where they expect. Having the same information entered on several test patients in a production system helps this process. After all 1% of an applications downtime can cost a 500-bed hospital 1.4 million a year. (statistic from Healthcare Informatics, April 2002, "The Toll of Downtime") That is 87.6 cumulative hours for the year for application's available 24 hours a day 7 days a week.
Another aspect of this when implementing systems, is to be considerate of all of the interdependent parts, and try to minimize unnecessary functionality until needed.
For example, if you are implementing a routing system for distributed printing for the transcription system. Wait until you print to more than just one printer in the transcriptionist's department.
November 22, 2003
Thanks Again
At Scott's suggestion, I've added the link to the rss feed. Also added a list serve, so that people can be emailed updates to this site, and my email if anyone wants to say hello.
Thanks for everyone's input. A couple of brains are better than one.
Healthcare Vendors don't promote a sense of community
One of the items that constantly amazes me is the Healthcare IT vendors not creating a sense of community among their technical users. What do I mean? Well, lets look at company's like Microsoft and Macromedia. What items do they offer to their users?
First, both have a developer's website. Take a look, this is Macromedia's and this is Microsoft's homepage. Try to find the portion of the website that is for developers. Found it? good. What is one of the first items you see? For me it is the list of tips, tricks, and company news. An ongoing list of ways to use and manipulate their products.
Second, both have how to articles. What to know how to do this? Place a search here, and you will find something similar. Heck go to google, and you will get hits galore.
Third, both have a running list of issues with the product. Yes, there are bugs, but they are not hidden within the company's database. They are out in the world for all to see.
Fourth, both have a place for developers to exchange ideas, discuss problems encountered, and receive help from other users of the product. Best of all this is a searchable listing, to help you find others who might of had the same problem you did.
Fifth, both are active in creating usergroups for their products with the community. There is a cf user group, and an asp.net user group within Albany, NY. I don't have to travel to boca raton to hear about a product, and best of all the updates aren't yearly, they are monthly.
I think that is enough points, but you can see, the companies are proactive in providing a sense of community among the users of the product. Also, all of these items are freely available to the public. There was no login required to view any of the websites. If you are researching a product, you can get alot of information this way.
Now, the two websites I am mentioning, I have no familiarity with the product or the vendor. I am just looking for an easily discoverable technical community without having to speak to the company and get a sales pitch. I believe these sites are indicative of the industry. I am choosing Eclipsys Corp's new SunriseXA clinical software suite, because it is developed with .net, and Quovadx's integration engine, because it used to be cloverleaf, and I want to see what's new. Now take a look at Eclipsys and Quovadx's website. Try to find the technical IT professionals website. Found it? good, I didn't. I found a login screen at a customers only type link. Please let me know where it is.
Do you even see a place for a technical professionals website? A list of how to articles? How about a running list of known issues with the product? Or a searchable forum for technical professional to communicate? Any idea of users, who are using the product locally? Any place you can go and talk to technical users of the product? Is all of this hidden behind that mysterious customers only link?
In most cases, in my experience, which I re-iterate has not been with these products, all of this information is not hidden behind the mysterious customer's only link. Mainly, it is the technical manuals, and when was the last time a technical person read a manual? It is like the analysis technique of last resort. I read em, but I try a heck of alot of things before hand, including all of the forementioned resources in addition to calling the vendor to ask how and arguing that the answer to that question is within our support agreement. So if you find me in my cube reading the vendor's manual, again and again, trying to find some hint that will help the current production problem. I am desperate and my team and I are at the end of our bag of tricks.
The sense of technical community using a product is missing from HealthCare Products. Sometimes I would even go as far to say it is deliberately hidden for either consulting support reasons, the thought of releasing vital company secrets, the prevention of users releasing private health care information, or the fear that different institutions technicians would talk to each other.
However, imho, I think it would be a good thing to have this information publicly available. From using it with Macromedia and Microsoft, I think it is priceless, and your users would appreciate it.
November 21, 2003
More blog comments on Blackstone
Rob Brooks-Bilson has posted some new possible features of the anticipated release here.
I've snipped the list below, but be sure to check his blog for comments.
- cfform tags as flash components
- cfgroup to create, layout and group form fields
- Flash based forms within cfml
- Tab navigators within the cfgroup tag
- Accordion panes within cfgroup
- Binding text fields to the data grid in Flash based forms
- Reporting via a cfdocument tag. Handles tables, divs, headers, pagination, etc. All layout done via HTML, and the output can automatically be converted to PDF.
It sounds like the release is in early development according to Sean Corfield.
November 20, 2003
A Hospital's CMS Implementation
Tech Republic has posted a case study of UMass Memorial Health Care System's implementation of a Content Management System, PaperThin's CommonSpot Content Server.
Lessons learned to a successful implementation is the early support of the marketing department. "The marketing people are in a better position to justify the business benefit of the Web, then IT people." From a business perception view, a CMS is a nifty technology IS wants to implement. Marketing has a better tools and positioning to portray the benefits of a customer oriented website.
Thanks!
I'd like to say thanks to Jacob Reider for linking to this blog and for the positive feed back. I've been lucky enough to receive positive feedback from a couple people this week about this blog, and thank you.
Fight Workplace Demotivation
I received a flyer in the mail yesterday. On the cover is a catch phrase, "Fight WorkPlace Demotivation, Fire UnHappy Employees". The flyer is from Despair, Inc. The company offers a satiric take on the motivational posters commonly seen.
However, demotivation in the workplace is a problem. No one likes dealing with grumpy, annoyed, exasperated, and impatient people. There are times when attitudes are constantly negative. That is inexcusable. If you do find yourself working in a toxic energy dump or you are a toxic energy dump, a good place to find a direction is the book, Fish!. Fish is about finding the fun at work, and sharing it with your customers and co-workers. Its well worth the quick read or listen.
November 19, 2003
Hype Cycle
Ever hear of a Hype Cycle? Before today, I hadn't so I did a little research at the gartner site.
A Hype Cycle is a graphical representation of the adoption and risks cycle of an application versus the hype that surrounds it.
There are five phases of the cycle
- Technology Trigger
- Peak of Inflated Expectations
- Trough of Disillusionment
- Slope of Enlightenment
- Plateau of Productivity
In order to minimize risk to the infrastructure and business community, one can use the hype cycle to help evaluate when to jump onto the bandwagon as detailed in this article here.
I don't think the hype cycle is to limit innovation. The purpose of the hype cycle seems to be a mechanism to evaluate where in the technological lifecycle the return is greatest and the risk is minimized.
For instance, Central was just released this morning. It is a great idea to separate the presentation from the service layer of an application. However, I'm not going to develop a central application to do bed management with in the hospital next week. I'm going to wait a little while, let others find the issues first. Then when I see a non critical process that could benefit from a central solution, I will recommend it. After we get a little education and experience under our belts, then we can look at that technology as a solution for a more visible application such as bed management.
A better example is we are evaluating vendor applications to do wiki. We have several applications:
- A Client Server vb 4 application version 2.0 been around since 1996.
- A Web Based application version 9.0 now using flash instead of DHTML been around since 1997.
- An AIX application version 12 first developed in 1997.
- A Asp.Net application version 1.07 being built currently.
Item 1 is in the Plateaus of Productivity stage, but it does appear as if the company is developing or even maintaining the product.
Item 2 and 3 are either in slope of enlightenment or the plateaus of productivity stage.
Item 4 is in the technology peak of expectations or somewhere in the troughs of disillusion.
I think this mechanism of evaluation adds value to the choosing of an application.
A New Version, "BlackStone"
From looking at the blogging sessions of MAX, a new version of ColdFusion is on the horizon. Just in time too, I have had concerns about ColdFusion's future recently. Hopefully, Macromedia will place the MAX conference presentation in the live docs.
New Features may include:
- source code protection
- better reporting
- a new web framework model
For more information check out the following blog entries:
Ben Forta's blog entry on his presentation of "Blackstone"
Matt Liotta's comment on "Blackstone"
Ray Camden's Blog Entry on Max
A blogger among us
An case study worth reading is HBR's A blogger in their midst. (September 2003, Reprint R0309A)
The case study is of a CEO discovering about a blogger released confidential information in the blogger's promoting of the company's latest gizmo.
The case study accounts for a blogger, who is 1 in 50,000 who daily updates their blog. Majority of blogs appear to be whimsically started and abandoned. (statistic from perseus)
In the commentary on the case study, HBR has 4 professionals from different backgrounds review and comment on the actions they would recommend. I haven't asked for premission to distribute the article, but their recommendations are very insightful.
In blogging, the lines are blurred. Blogs present a very public forum to comment on everything, and with the growth rate of blogs being exponential. The speedy grass roots dispersion of information is both powerful and plaguing.
When dispersing information, follow your company's privacy policy otherwise you may end up like the ex-MS temporary employee blogger. Also have a some respect for your audience, who knows it may one day be your own mother or your boss.
Macromedia Releases Central
Macromedia has released central as a new business model in the central SDK. Looks like it is time to learn flash as Central is a way of extending Flash and rich internet applications. Any body know of a good book or class for Flash 2004?
The industry acceptance of central is looking good. There is even a macromedia and aol partnership.
According the wsj, Macromedia's new business revenue model is letting us develop the products with a free tool, and then obtaining 20-25% of the recently developed product's generated revenue. So what does that mean for non-profit corporations inhouse development?
November 18, 2003
Jacob Nielsen's The Ten Most Violated Homepage Design Guidelines
Last Week Jacob Nielsen came out with the Ten Most Violoated Homepage Design Guidelines.
Let's see how we do here:
- Emphasize what your site offers that's of value to users and how your services differ from those of key competitors. Not done here
- Use a liquid layout that lets users adjust homepage size. Done Here
- Use color to distinguish visited and unvisited links. Done Here
- Use graphics to show real content, not just to decorate your homepage. . Not done here
- Include a tag line that explicitly summarizes what the site or company does Done Here
- Make it easy to access anything recently featured on your homepage. Done Here
- Include a short site description in the window title. Done Here
- Don't use a heading to label the search area; instead use a "Search" button to the right of the box. Not done here
- With stock quotes, give the percentage of change, not just the points gained or lost. Not done here
- Don't include an active link to the homepage on the homepage. Not done here
So we get half on the default install of movabletype. Not too bad.
Service the Customer
Online payment gets money to the Institution faster! This is referring to the article, Hospitals Find It Pays to Be Connected, in the Health Care Collector, November 2003.
The article points out that hospitals will see benefits in reduced telephone calls, lower postage, faster payments, and increased patient satisfaction. These are all benefits, however reduced telephone calls and increased patient satisfaction are primary benefits to any web provided service. It would be great if the hospital website was a focus of the institution as a means to provide information and services to our customers and the community. Customers for the website is broadly focused. The customers are from the family looking for local clinical trials to treat a disease to medical students studying to become physicians. The problem is these are intangible benefits, which are hard to ascertain the correct ROI to properly propose the idea and gain sponsorship. However there are key items that we strategically want to do, to improve our customer experience. For the rule is simple, treat the customer, as you want to be treated, because one day you will be a customer. And the ease of online payments for any customers in any service-based organization is very beneficial for the customer and for the institution. The customer has an easy mechanism to track and tally their bill, and a central location for finding information regarding questions. The institution decreases AR days, and frees someone's time to get something else done! To borrow a management phrase its WIN WIN :)
One for the Desktop, One for the Web
On Jesse Ezell's blog there is a very interesting post about the differences between LongHorn and Flex.
The gist of it is that Microsoft is focusing on the PC and developing applications for the PC and Macromedia is focusing on a web based solution. Some very good points are raised within the posting.
Personal preference is that I prefer a web based solution. I've been there, done that with dll hell, and I would like to avoid it in the future. It is a waste of time and money to go update 30 -200 department PCs manually. How often a year do we do that, not as often as needed because of the manpower required. On average for vendor thick client applications, we update the PC's three times a year. Some vendors go as high as 9 updates a year, others as low as 1. Why don't we automate the push down? Because the vendor with the most frequent updates software package doesn't work that way, it has a bug from the vendor and still doesn't work. (And people complain about microsoft)
The other item is vendor applications arguing with other applications. Sure you can use our product on the pc, just don't bring up MS excel at the same time. Your PC will crash. Why? something conflicts somewhere, but we are researching it.
Yeah, I'll stick with the browser based applications when the solution is available.
reFindAll and reFindNoCaseAll
Ben Forta has posted two new tags at cflib.
reFindNoCaseAll returns all the matches (case insensitive) of a regular expression within a string.
reFindAll returns all the matches of a regular expression within a string.
November 17, 2003
Royale is now Flex
Macromedia has updated its Royale project code name to Flex. It has also released a breeze presentation and several whitepapers on the functionality and ROI of Flex.
Flex seems to work between the flash player client and a J2EE server, websphere, weblogic, or jrun, to provide a rich user interface. With Flex, the MXML file is converted to .swf and presented to the user. The MXML file, which looks alot like a XAML, allows easy implementation of data validation, reusability, and data maintenance from a variety of providers. A full blown release is expected in the first half next year, but beta program applications are being offered.
Things that I would like to see:
- Which version of flash player needs to be installed in the enterprise? It would be nice if it was one of the older versions, however a new version of flash with MXML is more cost effective than a new computer with XAML
- Is this client side verification or server side verification?
- For either on a data verification change how do you prevent the user from re-entering the entire page? (I'm thinking it is user element based, like the onvalidation in vb)
The power of this in a healthcare arena would be having a webservice to be used for all data validation aspects in the UI. Otherwise with healthcare institution's best of breed approach to application implementation, I don't foresee a real benefit considering the standard is to interface the same data elements to all of the systems instead of one data store.
November 16, 2003
Custom Error Pages
One of the goals of a website is to provide a pleasurable experience for the users so that they will visit again.
But sometimes errors occur due to problems in coding, unhandled errors, site too busy, and other incidents. These will cause a default error page. There are also coding errors that can be captured in site wide error handlers. When these occur, it is good practice to provide your users with an error page. The error page should consist of possible reasons for the error, and what the user can do next. In addition links to other portions of the site should be provided.
Authentication
The four main types of computer security are:
- Something you know
- Something that you have
- Something that you are
- Someplace where you are
The something that you know, normally relates to a password or a memory question. This mechanism is also very easily implemented. Something you have or something you are, is a lot more difficult relating implementing due to expensive means such as a physical token or finger print in a non-profit organization. However the someplace where you are can be economically implemented for in house networks by allowing access for users to particular IP addresses. This addition will really help to secure systems.
In Healthcare and IT cost is always a large concern. Patient Privacy has always been a chief concern of hospitals, even more so with the HIPAA security regulation. So for in house applications, passwords have normally been the main mechanism of authentication from the vendors. But in order to add an extra layer of security, cheaply without purchasing a smart card system or a fingerprint scan, what if as a part of security maintenance, we limited the user to 5 or 8 ip addresses they can utilize an application. So we would maintain the access points of the application in addition to the password security.
November 15, 2003
Its more than the babelfish
Did a little browsing of the XMethods site this morning. XMethods is a public listing of web services. The try it feature is indispensible, and there are several valuable tools for data verification. At your convenience one can preview the full list here. There are web services for ICD9, ICD10, and HCPC code verification. Zipcode, credit cards and email verification can also be done through a webservice.
Hosting DNS
DynDNS.org provides useful services for hosted websites.
The Secondary DNS can redirect your site, when the hosted primary DNS goes down either purposefully or not.
Static DNS assigns a generic DNS name to an IP address. Very useful for hosted development servers especially considering the price is free.
November 14, 2003
Architecting an Application
One of the basic points in analysis is determining what is actually needed for a computer application. Don?t analysis for the latest gizmos and technology you would like to implement, analyze what data is entered, how the data is maintained, and what information is needed from the data. Make sure, there are clear established requirements for the application before implementing it. Revisit with the users the data entry, data lifecycle, and reporting requirements, many times before building or buying. If one of the three items is missing, there is going to be a problem.
November 13, 2003
URL Hacking
One of the side affects mentioned yesterday with the GET method is that the values are appended to the url. Sometimes malicious individuals attempt to append other information to the url.
www.anticlue.net\portal\index.php?id=7&type=blog;drop sysinfo;
This would attempt to drop the sysinfo table from the db.
In order to prevent hacks such as these. Try validating the values.
For example in CF, use the <cfqueryparam> tag.
Select * from tbl where
type = <cfqueryparam value="#url.type#" type="CF_SQL_VARCHAR">
AND ID = <cfquerypara value="#url.ID# type="CF_SQL_INTEGER">
In PHP, try to search the string for the ; and return only the validated info.
function cleanURL($urlparam)
{
$urlLength = strpos($urlparam, ";") - 1;
$urlparam = substr($urlparam, 0, $urlLength);
$urlparam = EscapeShellCmd($urlparam);
return $urlparam;
}
November 12, 2003
Post and Get
One of the most common confusion points is whether to use the method of post or get for form submission. Normally a default of post is best however if you need the reasons.
It is best to use the POST method when there are desired outcomes of the action. For instance adding the data to the db, or setting the form values to session or request scoped variables. Also if you are wary of the length of the url and query string exceeding 1024 with the form fields. Otherwise use the GET method, but the form submission information will be appended to the url.
November 10, 2003
MySQL DB Properties
Recently, I have been examining the dbms of MySQL. A couple of items of note have arise when using MySQL with a web application.
First, MySQL utilizes table locking strategy instead of row level locks. This aspect causes an issue when you have several people entering data in a web application. DeadLocks will occur, so be careful in utilizing this choice.
Second, MySQL has no views, stored procedures, or triggers. All queries must be manually coded within the application.
November 6, 2003
Instant Messenger and the Enterprise
Instant Messaging is a wonderful thing. It provides new level of communication to business, and it is a very useful tool. I'm on the phone with someone, and if I don't know the answer to their question. I can instantly instant message five people who may. I need to have a quick conversation between 3 or 4 people, and it is only an IM chat room away.
IM does have its downfalls some people abuse the tool. You always have to be aware that it is not a connection-oriented method of communication like talking with the person. You lose the body language of a conversation, and sometime sarcastic remarks need to be explained and justified. As always be aware of your audience.
However, I have always been concerned in using commercial products like AOL, MS messenger, and ICQ. If the information we are communicating is for the business, why are we using a public Internet method to do so? I've mentioned building one in house, having the ability to archive conversations, and keeping secure information secure. In addition an in-house solution would prevent exposure when worms are created for IM. However, this did not hit high on the list of items, and there are other priorities.
But good news has arrived! Novell has created an instant messaging tool for the enterprise. Techrepublic has done a positive review.
Tracking Changes in Access 2000
When working with data, one of the main questions that always arise is who updated it last and when. Here is a trick I use to do it in Access databases.
First, I add the fields to the table I want to track on DateModified and WhoModified. Then, I add the fields to the query that runs the data entry form.
In my data entry form, frmEntry, I add the following code to save when the save button is clicked.
Forms![frmEdit]![txtDateModified] = Now()
Forms![frmEdit]![txtWhoModified] = OSUserName()
Next, I add the module for the function OSUserName() and use the following code, which was found at the Access Web Site.
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function OSUserName() As String
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If (lngX > 0) Then
OSUserName = Left$(strUserName, lngLen - 1)
Else
OSUserName = vbNullString
End If
End Function
Finally in the form control, I turn off the tab stop and set the default value for the fields to be:
txtDateModified = Now()
txtWhoModified = OSUserName()
so that adding new records already has a value to show to the user that they are updating it.
November 5, 2003
XAML and LongHorn
Wow! What a great idea. The next version of Windows, LongHorn, will be utilizing XAML, Extensible Application Markup Language. What a great and ingenious way of separating the UI from the Business Logic, Data, and Network Connectivity. This article really hits upon the high points and ease of XAML.
For an overall view, these posters were handed out at the PDC conference. (No, I didn't get the chance to go)
The LongHorn Architecture Overview
The WinFX Developer Preview
However, how different is Microsoft XAML from Macromedia's Central and Royale?
November 4, 2003
Cheap Server Monitoring
A nice little desktop tool for operations to monitor the server is located here.
What would be really cool is to do this as a Web App. No Client installs and constant monitoring what a wonderful thing.
Mach II 1.07
Over the weekend, a new version of Mach II was released. Along with a new version of the Mach II Development Guide.
If you are like me and have questions on Mach-II, I think visiting the fusebox forum on Mach-ii will be helpful.
November 3, 2003
Quote Farm
Did a search on HW Kenton, and came across a quote farm and another excellent quote.
HW Kenton:
"At some point you have to decide whether you're going to be a politician or an engineer. You cannot be both. To be a politician is to champion perception over reality. To be an engineer is to make perception subservient to reality. They are opposites. You can't do both simultaneously."
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 |
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
August 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
November 2005
October 2005
September 2005
August 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
December 2003
November 2003
October 2003
Macromedia Central Licensing
The power of Central
An XML Formulary
Database Design
Enterprise Wide Change Management
4.5.2 to CFMX 6.1
System Monitoring
Thanks Again
Healthcare Vendors don't promote a sense of community
More blog comments on Blackstone
A Hospital's CMS Implementation
Thanks!
Fight Workplace Demotivation
Hype Cycle
A New Version, "BlackStone"
A blogger among us
Macromedia Releases Central
Jacob Nielsen's The Ten Most Violated Homepage Design Guidelines
Service the Customer
Joel on Software
David Ross
Edward Prevost
Martin Fowler
The Health Care Blog
The Tales of Hoffman
The Business Word
Medical Rants
Christina's Considerations
Paul Levy
RSS feed




