I am supposed to add some new messages for user interaction, but my god the edge cases. The edge cases!
You should see the "workflow" for the lab I'm programming an LIS for.
There are edge cases for edge cases for edge cases. My transition methods are like a hundred if statements and status checks. I just got a new one a few minutes ago.
"If I send an item from this station to a previous station it's not going back to my station it's going to another station". Sure that makes sense that it should return back to the original station but now I have to create 3 new statuses to hold the values that will tell the system to return back to the initial station.
I'm not in the medical field (yet), but this thread got me thinking:
Man, electronic medical records are scary. The standards are complicated hydraxian mess, and computer technology operates on a seriously different timescale than human life. We're trying to standardize and normalize and pipe into databases the medical history of people who've been around for longer than computers have existed. XML was defined in '98 and we're already largely replacing it with JSON. We're storing the medical records of babies today that are going to live well into the 22nd century. This is going to be a shitshow.
It was created in 2005, only ten years ago, and if it were designed today it wouldn't be anything like what it is now. More computer science innovation will happen over the lives of the babies that are born today than has happened over the entire history of computer science. How did anyone think this was a good idea?
The JSON alternative to the XML CCD documents is a prototype put forth by FHIR. No one's really using it yet. And it's still covered with these fucking codes.
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
Personally, I think the scary aspect is how committed people are to specific EMR technology. I've said this before, but I used to work at a hospital that moved onto an EMR system like in the 70s, and they're still stuck on that same system, because it's so incredibly hard to move off of it. These systems are not being designed with any capability for evolution/upgrade built in, and it's not clear to me that there's any organization with the political power to push through changes, at least like the W3C or ICANN or something.
Like, even if they're choosing good, solid technology now, they're still not future-proofed against changes in medical practice. We're going to be handcuffed by these systems in more ways than one.
Part of the requirements of meaningful use is that the system has to give the ability to export patient data, and your system has to also be able to import patient data in the same format.
not a doctor, not a lawyer, examples I use may not be fully researched so don't take out of context plz, don't @ me
Right, but your own issues with trying to suss out a many-to-many relationship converting between ICD10 and SNOMED is exactly the kinds of problems I think we'll face pretty shortly down the road. Except then it will be ICD10 into SNOMED2 from some bastard xml format into god knows what. And how many times are we going to have to do this until we decide on One True Classification and One True Encoding?
It doesn't help that the kind of problems this is causing now are bad enough that there isn't good commercial software to handle this problem so doctors offices are relying on in-house solutions. How many subtle differences will there be between one office's solution and another?
Right, but your own issues with trying to suss out a many-to-many relationship converting between ICD10 and SNOMED is exactly the kinds of problems I think we'll face pretty shortly down the road. Except then it will be ICD10 into SNOMED2 from some bastard xml format into god knows what. And how many times are we going to have to do this until we decide on One True Classification and One True Encoding?
It doesn't help that the kind of problems this is causing now are bad enough that there isn't good commercial software to handle this problem so doctors offices are relying on in-house solutions. How many subtle differences will there be between one office's solution and another?
So back when I worked for a hospital, they had kinda recently merged with another hospital under government mandate. For something like ten years, they tried to move the smaller hospital onto the same EMR system as the bigger hospital, at one point even putting a call out for people to work voluntary OT transcribing patient information manually (I think?). At the end of the ten years, the two hospitals un-merged... and their EMR systems had never been unified.
I've just successfully merged our two repos into one, managed all the conflicts, got everyone to re-clone and rebuild, cleaned out all of our feature branches, and things are starting to look good.
Part 1 of implementing better code control.
Part 2 is implementing a dedicated QA branch outside of master and dev, that we can stage items on. Release always being the last set of released items. dev -> QA -> release
Part 3 is world domination.
Browserify is killing me... I get 3 or 4 builds at ~10s and then it jumps to 14 then 30 then over a minute.
We recently switched our current big project at work over to webpack from browserify due to build times going crazy. It's way faster. If I manage to ever get any free time I'll probably switch my current toy project over to it as well.
I'm messing with C# for the first time in a damn decade, so I'm pretty much starting over from scratch.
Took me a good fifteen minutes to figure out why using Console.Read() to pause execution acted all weird inside a while-loop:
while (true)
{
Console.WriteLine("Durr");
Console.Read();
}
This writes Durr once on the first iteration... and twice on every iteration after that. Because apparently CRLF being two characters matters there. I could mash X characters before hitting enter and it'd write X+2 Durrs... but not until AFTER I hit enter. What the heck is up with that?
Using ReadKey() or ReadLine() instead works as intended.
The ReadLine method, or the KeyAvailable property and ReadKey method are preferable to using the Read method.
Oh really.
I assume that method is really more intended for reading off of more fixed streams, like file inputs. Even through it has limited utility on the command line, the standard input is stored as a TextReader, and TextReaders have a Read method, so it makes sense for Console to have a Read method as well to pass through to it.
Edit: Your program may even be designed to have an input stream piped into it as the normal method of operation, in which case reading in character by character instead of line by line makes perfect sense.
Nrrrgh, worse yet, what little validation they have is actually interfering with my custom validation so I just have to remove the HTML5 validation altogether. Fuck you Apple.
Posts
Good programming (and security!) is all about the edge cases... well, mainly after the normal paths are working.
Especially with user interaction. What happens if the user clicks these 5 things... but in a random order?!?!??!
And if we didn't have any customers, then we wouldn't have any problems! Well, maybe only one problem.
But one problem is less than many problems! :P
Check in? Use a kiosk.
Check out? Use a kiosk.
Vitals gathering? Doctor can do that.
Records gathering? Put in a request, send it to the hospital/doctors office via fax.
Automatically drop patient records based off keyword searches in the documents themselves.
You should see the "workflow" for the lab I'm programming an LIS for.
There are edge cases for edge cases for edge cases. My transition methods are like a hundred if statements and status checks. I just got a new one a few minutes ago.
"If I send an item from this station to a previous station it's not going back to my station it's going to another station". Sure that makes sense that it should return back to the original station but now I have to create 3 new statuses to hold the values that will tell the system to return back to the initial station.
Man, electronic medical records are scary. The standards are complicated hydraxian mess, and computer technology operates on a seriously different timescale than human life. We're trying to standardize and normalize and pipe into databases the medical history of people who've been around for longer than computers have existed. XML was defined in '98 and we're already largely replacing it with JSON. We're storing the medical records of babies today that are going to live well into the 22nd century. This is going to be a shitshow.
I've posted a few excerpts before.
They have XML structure like a normal document, but then they go on to describe the element with an ID to HL7's stuff.
So if you have something like <Patient><street></street><phone></phone></Patient>
Each of those would have a "namespace" that describes what exactly a 'patient' is in the hl7 database.
https://www.hl7.org/fhir/terminologies-v2.html
And there they all are.
Once you click into them you'll see an OID.
Practically every single node has one of those OIDs attached.
It is a fucking eyesore.
Also: Ew, they have xml in their json.
Like, even if they're choosing good, solid technology now, they're still not future-proofed against changes in medical practice. We're going to be handcuffed by these systems in more ways than one.
It doesn't help that the kind of problems this is causing now are bad enough that there isn't good commercial software to handle this problem so doctors offices are relying on in-house solutions. How many subtle differences will there be between one office's solution and another?
So back when I worked for a hospital, they had kinda recently merged with another hospital under government mandate. For something like ten years, they tried to move the smaller hospital onto the same EMR system as the bigger hospital, at one point even putting a call out for people to work voluntary OT transcribing patient information manually (I think?). At the end of the ten years, the two hospitals un-merged... and their EMR systems had never been unified.
Part 1 of implementing better code control.
Part 2 is implementing a dedicated QA branch outside of master and dev, that we can stage items on. Release always being the last set of released items. dev -> QA -> release
Part 3 is world domination.
C#, Winforms (or WPF, but WPF has a bit of a learning curve)
Install this:
https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Select a Windows form application underneath the C# language, drag and drop, read some tutorials:
https://msdn.microsoft.com/en-us/library/dd492132.aspx
I'll give that a try, thanks.
We recently switched our current big project at work over to webpack from browserify due to build times going crazy. It's way faster. If I manage to ever get any free time I'll probably switch my current toy project over to it as well.
It's now tied in first place with Internet explorer as my least favorite browser.
Chrome/Firefox/Edge are really great browsers.
http://www.npr.org/sections/health-shots/2015/10/01/444789785/struck-by-a-macaw-now-theres-a-medical-diagnosis-code-for-that
Took me a good fifteen minutes to figure out why using Console.Read() to pause execution acted all weird inside a while-loop:
while (true) { Console.WriteLine("Durr"); Console.Read(); }This writes Durr once on the first iteration... and twice on every iteration after that. Because apparently CRLF being two characters matters there. I could mash X characters before hitting enter and it'd write X+2 Durrs... but not until AFTER I hit enter. What the heck is up with that?
Using ReadKey() or ReadLine() instead works as intended.
Oh really.
I assume that method is really more intended for reading off of more fixed streams, like file inputs. Even through it has limited utility on the command line, the standard input is stored as a TextReader, and TextReaders have a Read method, so it makes sense for Console to have a Read method as well to pass through to it.
Edit: Your program may even be designed to have an input stream piped into it as the normal method of operation, in which case reading in character by character instead of line by line makes perfect sense.
Making progress...
Nrrrgh, worse yet, what little validation they have is actually interfering with my custom validation so I just have to remove the HTML5 validation altogether. Fuck you Apple.
i dont even....microsoft ahead of the curve..wtf
PARKER, YOU'RE FIRED! <-- My comic book podcast! Satan look here!
WHERE GETH
WHAT HAPPENED
PARKER, YOU'RE FIRED! <-- My comic book podcast! Satan look here!
It begins.
Does phpstorm/webstorm do this?