article-20h-interview.mw - tgtimes - The Gopher Times HTML git clone git://bitreich.org/tgtimes git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/tgtimes DIR Log DIR Files DIR Refs DIR Tags DIR README --- article-20h-interview.mw (7107B) --- 1 .SH 20h 2 Breaking free from medical devices 3 .2C 122v 4 . 5 .PP 6 Unlike most USB gadgets around, medical devices require a specification 7 to be proven fit for handling patients data. 8 This makes doctor-hacking difficult for the sake of better control 9 over what is allowed for medical use. 10 . 11 .PP 12 While this may sound as a non-starter for many, not all doctors are 13 discouraged. 14 Interview with 20h: 15 . 16 .QP 17 You are __20h__, a doctor in Falken, the best village to live in 18 in Germany, is that correct? 19 . 20 .PP 21 Yes. 22 . 23 .QP 24 You managed to do some hacking around a medical device. 25 What was it? 26 How did it help you in your diagnostics? 27 . 28 .PP 29 I wrote \fCrfcommd\fR to have my spirometer print out the results 30 to a standard printer. 31 It helps me having a more detailed view on the results. 32 . 33 .PP 34 The normal printout is just like 8 centimeters wide. 35 Now it is A4. 36 . 37 .PP 38 I plan on using rfcommd to read out ECG data from a ECG for further 39 analysis. 40 . 41 .PP 42 The collecting computer is a gentoo hardened on x86_64, with a 43 standard bluetooth dongle, sending the print jobs via TCP/IP to a 44 network printer. 45 . 46 .PP 47 For printing there is a cups installation, converting the PCL output 48 of the spirometer to postscript for the network printer. 49 . 50 .QP 51 What software were provided to collect the data on a computer? 52 On which kind of system was that running? 53 . 54 .PP 55 Before rfcommd there was no collection of the data. 56 The spirometer has some built-in printer, 57 which is very expensive and the printout is small. 58 . 59 .QP 60 Are you using it often? 61 . 62 .PP 63 I/We are using it every day for printing out spirometry (lung 64 function) results. 65 . 66 .PP 67 By the way. 68 A secondary function why rfcommd has filters: We have 69 a sterilization device, which has a serial printout of sterilization 70 runs. 71 . 72 .PP 73 This is what rfcommd does print out too. 74 . 75 .PP 76 The features of rfcommd moved from: Accept every rfcomm request to 77 having filters per device mac, was because of those two devices. 78 . 79 .PP 80 But it will allow to have the ecg readout as a filter for free. 81 . 82 .QP 83 It had limited interaction, and yet you managed to made it available 84 from a linux computer. 85 How did you do it? 86 . 87 .PP 88 First I had a python script using pybluez to offer some bluetooth 89 printer service, which bluetooth clients connect to and send print 90 jobs. 91 . 92 .PP 93 But I migrated this to some C implementation and generalized it as 94 rfcommd so it is more modular for me and others can reuse it too. 95 . 96 .PP 97 Bluez stack had some rfcomm client application, but it was removed 98 in newer version because they hate commandline users. 99 . 100 .QP 101 Was it difficult? How long did it take? 102 . 103 .PP 104 Digging around bluetooth is difficult. 105 It looks similar to TCP/IP, but is its own terminology, protocols 106 and principles. 107 Look at rfcommd for how to announce some service. 108 . 109 .PP 110 It took me two weekends to write rfcommd as it is now. 111 . 112 .QP 113 What would you advise to designers of such devices to make everyone's 114 life easier? 115 . 116 .PP 117 If you mean medical devices: Please open source all firmware and 118 open up all schematics. 119 In ten years you will be dead or in pension but still people can 120 extend or update your devices. 121 . 122 .PP 123 And second: Never have specific assumptions and fool end users into 124 costly standard. 125 You never know better than your users. 126 . 127 .PP 128 For example in the spirometry description, they say, that only some 129 bluetooth printers are compatible. 130 . 131 .PP 132 This is due to the bluetooth standard not having defined, \fBwhat\fR 133 is sent to bluetooth printers. 134 . 135 .PP 136 It should be the minimum, to define this, as it is in the USB 137 printing standard. 138 . 139 .QP 140 What kind of protocol interface would have been the easiest? 141 . 142 .PP 143 The easiest protocol interface, also considering security and data 144 protection standard, would be ssh over TCP/IP. 145 Everyone knows SSH, it can be integrated into everything and it is 146 easily upgradable to newer security standards. 147 . 148 .QP 149 What does it permits to do that was not possible before? 150 . 151 .PP 152 With the spirometry data ready as simple text data, I can further 153 process it using standard unix tools, in case I ever need this. 154 . 155 .QP 156 Are other people using it in the practice as well? Even indirectly? 157 . 158 .PP 159 My nurses use it mainly. 160 They press the »print« button on the spirometry device and it prints 161 the results. 162 . 163 .PP 164 I, as doctor, only see the printed out results and explain them to 165 patients. 166 . 167 .QP 168 Does she have to use command line interface for that? 169 . 170 .PP 171 No, it's all practical. 172 The spirometer starts its bluetooth client for rfcommd and rfcommd 173 runs the spirofilter printing filter script, which invokes lpr(1). 174 . 175 .QP 176 Are there many situations like that, where cumbersome interfaces 177 makes life harder for working with medical devices? 178 . 179 .PP 180 Yes, it's built into all medical devices to enforce proprietary and 181 expensive Windows software to be bought. 182 . 183 .PP 184 For example the newer version of my ECG device has some undocumented 185 network mode. 186 The ECG standard I will be using over serial was defined in 1990. 187 Since then old devices only got bluetooth and ethernet, but did 188 nothing else new. 189 . 190 .PP 191 The price stayed the same, of course. 192 . 193 .QP 194 Do you think designers would benefits themself from offering another 195 interface that is easier to use? 196 . 197 .PP 198 In the short term viewpoint it protects you from competitors to 199 enter the market. 200 But in the long run, this now stops me from easily processing patient 201 data for further research. 202 I am using a 25 yr old ECG and some 10 yr old spirometer. 203 . 204 .QP 205 Are there any similarities in other devices to reuse the existing 206 work you just did? 207 . 208 .PP 209 Yes. 210 Bluetooth is the new hype in medical devices. 211 All those smart devices for body measurement are for example BLE, 212 some insecure bluetooth standard to read out key=value from bluetooth 213 clients. 214 Some bled(8) should be easy to write. 215 . 216 .PP 217 Nearly every medical device still has some serial port, either for 218 communication or measurement. 219 . 220 .PP 221 For measurement this will never die out, since raw data is required. 222 . 223 .PP 224 And some serial2bluetooth, that's what I am using for my practical 225 examples. 226 . 227 .QP 228 Would it have been possible to build such device yourself from 229 parts, but with sane interfaces instead? 230 . 231 .PP 232 Building such a device is not the hard part. 233 The hard part is licensing the device as being a medical device. 234 . 235 .PP 236 I am, as a doctor, am allowed to license some medical device for 237 my patients. 238 But if I'd want to sell or give this device to some other doctor, 239 I'd need some EU medical device license. 240 . 241 .PP 242 This is a complex process. 243 . 244 .PP 245 You have severial medical device classes. 246 Some always require some EU-wide licensing. 247 . 248 .PP 249 The logic of some ECG is very simple. 250 But licensing it for selling is what makes it expensive and/or keeps 251 the competition low. 252 . 253 .QP 254 What do you advise to people also stuck with cumbersome device, but 255 without reverse engineer superpowers? 256 . 257 .PP 258 Force the device producers to open up standards. 259 Write into contracts, that devices have to be interoperable, so 260 producers need to adapt. 261 . 262 .PP 263 It's the same for software. 264 If you can't write it on your own, force them to open up standards, 265 because you want to extend the software. 266 . 267 .PP 268 For extension of software, reverse engineering is legal.