New Journey of SDeT QA, a dash of UI/UX, and Pure Software Development

My more recent theme I've noticed in my career was an emphasis on communication and soft skills which I can confidently say that many in the tech industry do not possess. Even more so now with A.I. being front and center as a disrupter, I believe that it highlights more and more for the need of proper soft skills to be of higher priority. This also applies for non-tech and just a general reflection of white collar office environments where few organizations and leadership encourage / foster compassionate  work teams, and to a certain degree: competent leadership, which then translates to job satisfaction all around.

With that said though, I had an epiphany on my tech blog writing in wanting these initial paragraphs to lean towards a "TL;DR" (too long, didn't read) in case you choose not to indulge in my longer prose.

TL;DR

Basically I got a chance to experience a full product owner, UI/UX, pure software developer role, and of course my native QA / SDeT prowess, when trying to interact with my fiance, who was trying to build a tool to be able to quickly spit out a repetitive healthcare related MDS (Minimum Data Set) notes. It evolved from MS Word with VB Script Macros (my fiance's initial idea), and finally to an easy to port and host web application powered by JS and CSS.

Sample generated generic notes:
MDS Quarterly NOTE
ARD: 10/1/26
RESIDENT SUMMARY:
Resident prefers to be called John Smith. The resident is 76 years old. The following was collected through observation and interaction with the resident, weekly interdisciplinary team reports, and MDS interviews with the resident and staff.
COGNITION:
Resident is alert and oriented x4. SW approached John Smith to complete the BIMS assessment, with a score of 3/15. SW proceeded to staff interviews and review of the chart. SW will continue to monitor for any changes in cognition and adjust the care plan accordingly.
MOOD:
SW completed the PHQ-2 to 9 assessment with 10/27, indicating moderate depression. Staff and SW will continue to monitor mood and emotional well-being as indicated.
BEHAVIOR:
Resident's behavior is stable. No physical, verbal or other behaviors noted or reported. Staff will continue to monitor for changes in behavior and response to treatment.
INTERVENTIONS:
KGH staff continue to provide encouragement, assistance, and support to promote resident independence, autonomy, and sense of control whenever possible. Additional interventions are outlined in the person-centered care plan and activity notes.
DISCHARGE:
John Smith is appropriate for long-term care placement based on current care needs. Care conference held with family present.
ADVANCE DIRECTIVES:
No changes to advance directives. POLST code status is 
DNR / COMFORT-FOCUSED TREATMENT. DPOA specifies decision maker is Jane Doe.

 

The Start: VB Macros within MS Word

The history of this endeavor was from my fiance as she needed a more efficient way to generate the Minimum Data Set (MDS) notes which are relatively repetitive and was based on editing a write-up template, replacing PII (Personally Identifiable Information), PHI (Private Health Information), and other miscellaneous residential observations. These notes would then be updated into a proprietary resident web application. On average it would take about 15 minutes if this was done manually, and potentially prone to errors during editing. With the tool, it would take about 2 minutes or less navigating all of the drop-downs, and to then generate the text.

It wasn't my idea, however my fiance said / asked me if there was a way to do a VBA macro within a MS Doc. I said it can & I'm really rusty with my VBA forms & coding (I haven't touched VBA since college, circa 2001), however I knew that MS 360's Co-Pilot could probably generate majority of the VBA coding in a flash. I did throw caution and let her know that there are security issues / risks when it comes to using & authorizing Macros in a document, especially since this may be used within a health facility, and will definitely need her non-profit organization's internal IT review to audit & approve the VBA Macro for use.

This was a very fun experiment and adventure as I got a chance to play a full suite roles of: Product Owner, self proclaimed UI/UX, software developer, & practicing Agile. I also noticed how similar this adventure was with my cumulative work experience, where the client (my fiance) and I struggled to both understand what's being asked and what's being delivered. I know for the most part I tried to break it down into tangible pieces, trying to understand what the repetitive write-up would look like and where the potential drop-down parameters were. My fiance (even I am occasionally guilty of this) immediately dove deep into the nitty-gritty without properly explaining where text are standard / repetitive, while naming proper terminologies, what each of their significance represents, and what the variables / drop-downs would be.


Once I was able to decipher what was needed to be delivered, I then went to town with other niceties. I definitely felt agile as I was able to quickly go through a few iterations & demo to the stakeholder (my fiance), tapped into my UI/UX experience from a QA perspectives with color coded action buttons along with notification feedback resulting from these buttons and entry fields, and potential customer flows / actions.

Below is the initial pilot / Proof of Concept (PoC) / Minimal Viable Product (MVP) via VBA Macro within the MS Word doc. Feel free to checkout the code from my github link shared earlier.








My fiance had shared this with her non-profit organization workplace's IT director and since it wasn't a high priority item, it was never fully vetted. By this time, I felt that there was an easier way to do it, with readily available technology and relatively secure way to achieve the same result. This was also a learning opportunity as I wasn't as familiar with JavaScript to help power a fully front-end type solution without needing a back-end server to serve up the html web application.

The Evolution: HTML with JS and CSS

Now comes the new tech "kung fu" of sorts: I utilized Co-Pilot via VS Code & Claude AI to help translate the generated VBA Macro into full fledged HTML & JS (and later on CSS). When I fed the information, with proper detailed instructions, constraints, and expectations, Claude performed wonderfully by transforming the VBA into a fully working, 2 files of HTML & a *.js file (css was separated later on).

Here's a look at the html & JS (and CSS in action):


From the sample generated text, I went ahead and had a drop-down for the various fields that have known ranges of input while the Assessment Reference Date (ARD) calendar was limited to valid dates from today and back to a year ago, no future dates are allowed. 
The potential audit from King County ensures that all resident MDS notes are current. 


The DPOA (Designated Power of Attorney) name and resident name were capped at 30 characters as it is standard the North America. Also for the Age, according to my fiance there is a chance (though very slim, for an elderly care facility) that there might be residents age 18 and by my estimation, I made a judgement calla and would say that age 110 would be the upper limit that made most sense.

The 2 drop-downs: Orientation and BIMS, are related to Cognition, and it didn't make sense for an end user to still be able to select an entry for BIMS (so the user chooses "Resident Declined to participate in BIMS assessment" in the Orientation drop-down) so it automatically greyed / grayed out the BIMS drop-down, with a default of "resident declined to participate in assessment. SW proceeded to staff interviews." Same rules goes for the case when the resident does participate in the Cognition interview, Orientation has 4 valid values and the "declined BIMS" within the BIMS drop-down is present, but not something you can select.


To make the UI/UX even more friendly, I decided to make sure that the action buttons are color (colour) coded. What I think made most sense for this limited scope tool was to be able to Generate the Note, Copy the resulting generated Note, call the web browser's Print modal (so you can either print "export" the whole page in PDF else send it to your favorite printer) and a Clear red button to reset everything. I hope & feel that the colors chosen for these action buttons made most sense, similar to a "Go" / "OK" represented by green (to copy the note), and a red "WARNING" / "Cancel" which draws a cautionary irreversible action of sorts.

In these buttons, I did build JS to do a "showToast" so that the user gets a feedback when successfully copying the note, and also a warning when no notes have been generated and the user simply hits the Copy Note.




Security Built In

I will say that this is one of my "I know what I don't know" area, and potentially just know enough to be aware of it, and to make sure I try my best to continue to learn and build as well as I can. HTML + JS +CSS still has the potential of being a malicious code as compared to VBA Macros, JS can still be exploited especially if it's a man in the middle  type attack and or plain substitution of the JS. I have been doing some research on how to potential combat this, and my thoughts on this is to probably encode a SHA256 so that the package involved can at least be verified that it hasn't been tampered with. I did do my best due diligence and had assistance from A.I. to help craft the following:
  • Checking for both free form name fields to not have excessive special characters and stops SQL injection
  • Age is numeric integers only with hard upper and lower limits
  • Separating the JS and CSS into static folder rather than having it embedded in the HTML in the initial P.O.C. design
There are a few more potential polishing points which will potentially be ongoing but this is where it stands as is.

The QA & SDeT Things

My forte & superpower has always been RobotFramework as my go to automation tool. I have been needing to upskill to Cypress.io and Playwright anyway, so this was my opportunity to further practice my Prompt Engineering and learning these 2 other test automation frameworks. I almost have a perfect MVP product which I control & built, to my next logical step was to learn and test my automation against it.

What I noticed from the RobotFramework via prompt engineering, it's a high chance that the LLM / training was based on an older syntax as I saw it calling depreciated (but thankfully still executable) methods like the screen capture command. This is where I'd caution other newer QA / SDeTs of really knowing your craft instead of blindly accepting AI generated code, and as usual, always test your tests.

While still learning the ways of Cypress and Playwright, I did notice some interesting nuances. Cypress is NPM / Node JS driven and did want to ensure that the html was being hosted before it started the automation tests. Playwright is also interesting, it did also utilize Node JS, and I did notice that during running the tests, it felt that it had more fidelity and ability to test through and through without too much issues.

I noticed how fast having a full on test suite of all permutations and combinations made the test set huge, as I had wanted to ensure that all cases covered. When I saw how massive it was and the time it took to test, even with parallel testing via spun up test bots, I knew there had to be a smarter way to do this. Using an older desktop (shocker! I-5 3.2 GHz HP Compaq Elite 8300, suped up 2TB SDD & maxed out 32 GB RAM), my system did struggle with the requested parallel testing demand. 

The solution for this was something I've seen / experienced in prior testing strategies (circa 2014) where test scenarios were pretty specific with test data and objectives, which does cover for the most part, all potential scenarios. It is called pairwise testing, I learned that as the formal nomenclature which I can see more than ever how important it is as it helps me "work smart" and be more efficient with the number of test cases and to cover more ground.

Summary & the future

I hope to spend a little more time continuously developing this nifty app and the related testing automation as I continue to inspire others to come take a look at this as a stepping stone to doing their own fun little projects and to continue to grow.

Comments

Popular Posts