Activity for MJB van Ettinger

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    The code has been altered to support these files using a different character set in .NET (core), I think the assemblies also have been uploaded to NuGet

  • MJB van Ettinger MJB van Ettinger modified ticket #28

    Issue importing XML file exported from MAC 5500

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #28

    Yes, this is the solution. DateTime format is configurable for support of different localication. Age is send over as a fixed field, I looked at it and it isn't implemented in the MUSE-XML format, probably because the field doesn't exist in MUSE-XML.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    I finally found out the issue here. In .NET (core) the encodings aren't (pre)loaded like they are in .NET framework. I will add an update to the sources to solve this, probably today. Have to fix some stuff so it will compile with .NET8.0 as well.

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #27

    The code was prepared for .NET5.0 so maybe this is caused by changes in dependencies, but there is another possibility. You might be using the .NET framework solutions in stead of the new (core) .NET solutions. The PDF generated uses a hard coded textual layout. So you are on the right track by compiling it for your own format is the right track (currently at least).

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi, I could take a look at this issue, but maybe you can provide me with an example (SCP-ECG file) to pick up this issue. With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    It appears 64 chars is the specifications maximum limit for a segment of the PN segment (PersonName). I think this exception is on purpose to adhere to the standard.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Shortest sample code, I can write for this: using ECGConversion; string srcFormat = "SCP-ECG"; string dstFormat = "DICOM"; string srcPath = args[0]; string dstPath = args[1]; if (ECGConverter.Instance.waitForFormatSupport(srcFormat) && ECGConverter.Instance.waitForFormatSupport(dstFormat) && File.Exists(srcPath)) { IECGReader reader = ECGConverter.Instance.getReader("SCP-ECG"); using (IECGFormat src = reader.Read(srcPath)) { // here you might need to add configuration code for dst format if (ECGConverter.Instance.Convert(src,...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    I sadly don't have access to a GE based ECG system with a SQL database. I'm not actively looking into this, so no results for me.

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #24

    I forgot to respond to your request. My question is are you sure the Assemblies are properly loaded. This is an issue in ASP.NET with IIS as well. You could manually load the assemblies by using the following function: ECGConversion.ECGConverter.AddPlugins("use_a_path");

  • MJB van Ettinger MJB van Ettinger modified ticket #25

    PDF of ECG is not plotting the waves similar to EcgViewer app display

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #25

    Hi, The ECG viewer uses: ECGTool.NormalizeSignal to take the median value of a lead and correct the values in each lead. The result is that (on most ECG recordings), the lead will be perfectly aligned in the 3x4 like format. However the PDF plugin does not use this functionality. It has not been build into the plug-in (yet), but if you can program you could provide the leads to the PDF plug-in so you can get a similar result.

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #23

    It would appear the measurements are not in the right location, but I would have to verify this against the HL7 v3 stylesheet (.xsd) to be sure.

  • MJB van Ettinger MJB van Ettinger modified ticket #23

    getGlobalMeasurements not work

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #23

    I will look into this issue, thanks for supplying an example file.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Luca, The viewer does not support changing paper speed. However you can zoom in on the displayed recording (by using right-mouse-click). Effectively that is very similar to increasing speed and gain at the same time. For the PDF export there is an configuration item (speed) to do this. It looks like the output however will fall back into Regular when you change this field. Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger modified ticket #22

    ECG DICOM conversion to PDF

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #22

    I'm not 100% sure, but for me the PDF plug-in appears to be working. However it might be the fact that plug-ins are loaded in a separate thread. Use: ECGConversion.ECGConverter.Instance.waitForFormatSupport("PDF") (returns true when support is loaded) Other approach might be to wait for all loading of all plug-ins, but I prefer the specific wait.

  • MJB van Ettinger MJB van Ettinger modified ticket #19

    ECG core logic migration to .NET core latest version(5 or 6)

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #19

    I have no experience with NuGet packages, but I think these packages are available now. I'm going to close this support ticket, but let me know if there is any issue or bug with the latest release (and packages).

  • MJB van Ettinger MJB van Ettinger modified a comment on ticket #19

    So by now all (active) projects now have support for .NET5 projects. Thoughest part was ECGViewer and iTextSharp, but it appears to be working just fine with .NETCore (and newer).

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #19

    So by now all supported projects now have support for .NET5 projects. Thoughest part was ECGViewer and iTextSharp, but it appears to be working just fine with .NETCore (and newer).

  • MJB van Ettinger MJB van Ettinger modified ticket #19

    ECG core logic migration to .NET core latest version(5 or 6)

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #19

    I just did point 1 & 4. I did some basic testing, but maybe you can look at it with more accuracy.

  • MJB van Ettinger MJB van Ettinger modified ticket #19

    ECG core logic migration to .NET core latest version(5 or 6)

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #19

    2 & 3 are done. Will look into 1 & 4 soon.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Julio, I realize now i did not add a configuration item for this in the CSV export. I will be adding this although it might be a while before i will release an update of the Toolkit. Are you familiar with C#/development. Because you could use the CalculateTwelveLeads (and/or CalculateFifteenLeads) function (part of the ECGConversion.ECGSignals.Signals class) in the toolkit to do this yourself. Otherwise I could provide you with a patch for the CSVExport. Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Graham, I know what causes this issue. The detection of the lead is based upon the value in CodeValue (Tag: 0x0008, 0x0010). I remember that i programmed this based on this section because the Text label was harder to match, because of the addition of the prefix "Lead '. What i found in CodeValue of this section was referenct to a specific paragraph in the SCP-ECG standard. The value: 61 refers to the Lead III in the that enumaration specified at paragraph: 5.6.3-9. Or at least that was the way...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Just released a new version of the ECG Toolkit. So please let me know if this works for you.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Richard, My experience with GE is only the MUSE-XML files. These files contain base64 encoded array of shorts (2 byte). No compression used at all. The easiest way to determine whether any compression is used in these Object_WAVEFORM is to compare size of the data. If there is no compression used then the size should be same across multiple waveform entries. Only difference that can arise is when the length of signal is different. When compression is used the length of the field will change because...

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Simple Apps

    Ah, you are using the UnknownECGReader so that means it isn't issue 1, because UnknownECGReader waits for all plug-in to be loaded. So most likely solution 2 might still solve your issue, but another option might be the missing of another plug-in (or assembly). DICOM might have become dependent of the PDF plug-in in recent versions. So you could add iTextSharp.dll and ECGCpluginPDF.dll. But also be sure to use the correct version of log4net and dicom-cs

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Ah, you are using the UnknownECGReader so that means it isn't issue 1, because UnknownECGReader waits for all plug-in to be loaded. So most likely solution 2 might still solve your issue, but another option might be the missing of another plug-in (pr assembly). DICOM might have become dependent of the PDF plug-in in recent versions. So you could add iTextSharp.dll and ECGCpluginPDF.dll. But also be sure to use the correct version of log4net and dicom-cs

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Hi Chris, I can think of two reasons this might not work as it should: 1. You don't wait for the plug-in to be loaded. 2. You're making an Web application and DLL is not loaded because of the way ASP.NET works (each assembly is loaded in a separate folder in IIS) This is the solution for the first issue: ECGConverter.waitForFormatSupport("DICOM"); This is the solution for the second issue: ECGConverter.AddPlugins([path_to_bin_folder]); With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Open Discussion

    Hi Dimitri, The system works by using interfaces. These interfaces can be distinguished by 3 levels. First two levels are used to abstract the reading of an ECG recording (these IECGReader and IECGFormat). The final level of interfaces is used for converting: * IDemographics * ISignals * IDiagnostics * IGlobalMeasurements * ILeadMeasurements Each of these interfaces gives you a standardized (close to SCP-ECG specs) way to set and get specific parts of an ECG file/recording. When converting a recording...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Open Discussion

    Hi Dimitri, The system works by using interfaces. These interfaces can be distinguished by 3 levels. First two levels are used to abstract the reading of an ECG recording (these IECGReader and IECGFormat). The final level of interfaces is used for converting: IDemographics, ISignals, IDiagnostics, IGlobalMeasurements, and * ILeadMeasurements Each of these interfaces gives you a standardized (close to SCP-ECG specs) way to set and get specific parts of an ECG file/recording. When converting a recording...

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Help

    Hi Remi, Just did a commit that fixes the issue with provided file. Do you want/need a patch or is committed code enough for you? With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Help

    Hi Remi, Just did a commit that fixes the issue with provided file. Do you a patch or is committed code enough for you? With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Remi, Just did a commit that fixes the issue with provided file. Do you a patch or is committed code enough for you? With Best Regards, Maaarten

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Help

    Hi, I looked at this file. I looks like GE did some changes to the formatting. Well I can read the ECG data with some changes to the code. But the additional measurements information will not yet interpreted. That would require some bigger changes to the code. Would it be enough if only Global measurements and Signals are available, for what you want to do? With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi, I looked at this file. I looks like GE did some changes to the formatting. Well I can read the ECG data with some changes to the code. But the additional measurements information will not yet interpreted. That would require some bigger changes to the code. Would it be enough if only Global measurements and Signals be enough for what you want to do? With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Open Discussion

    Hi Dimitri, Data can (and might) be lost when converting. DICOM is a very extensive format originally developed for interchange and storage of medical images. aECG which was originally part of the HL7v3 effort. HL7 v3 was a very extensive document description which was intended to be able to exchange every aspect of a medical record between 2 (or multiple) systems. Both these formats contain so many fields and options that some data contained in file can easily be lost. However the exact loss of...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi Remi, Are you sure this is the format you require for you MUSE-XML files. Because I think it might be different dependent on you localization. You should however be ware when you make the correct formatting for hour location that it is case sensitive and you can find more on .NET docs: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings Also are you using the latest build or the current from GIT, because there might be some relevant bug fixes in the...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Open Discussion

    Hi Dimitri, The system was designed around SCP-ECG format. So that format is leading in the transfer of the most/all fields. For converting between DICOM and aECG (HL7) you should be aware that both formats might include much more fields then are specified in SCP-ECG. However my exprience is that the SCP-ECG standard is very extensive in its description of resting ECG recordings. With best regards. Maarten

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    I assume an App refers to creating an Phone or Tablet application. I think there are two approaches possible to use these libraries/code: - Web-based application (run al the C# code on the webserver) Using HTML5 canvas to visualize, like this example: http://www.vanettinger.info/webecg/ - Xamarin.NET mobile-apps: https://dotnet.microsoft.com/apps/xamarin/mobile-apps I have no experience with the last option but I think it is what would work the best. Although I suspect you will have to rewrite the...

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Simple Apps

    Hi Dimitri, The C# ECG Toolkit can be used to convert ECG from-to many different formats. You can do this using the ECGViewer.exe (manually), but also using the ECGTool.exe from command-line (or scripted): > ECGTool.exe -I SCP-ECG in-file.scp DICOM out-file.dcm Otherwise you can also use the assemblies and write your own application using these converison functions. In any case I advice you to use the CURRENT from the GIT repository, because it has got some nice new feature (and also some bugs patched)....

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Hi Dimitri, The C# ECG Toolkit can be used to convert ECG from-to many different formats. You can do this using the ECGViewer.exe (manually), but also using the ECGTool.exe from command-line (or scripted): ECGTool.exe -I SCP-ECG in-file.scp DICOM out-file.dcm Otherwise you can also use the assemblies and write your own application using these converison functions. In any case I advice you to use the CURRENT from the GIT repository, because it has got some nice new feature (and also some bugs patched)....

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    Hi, I see that you used lowercase Ms for the date, but those should be uppercase Ms. So I would expect you should use dd-MM-yyyy instead of dd-mm-yyyy. I hope that will solve your issue. With Best Regards, Maarten

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Simple Apps

    I have received a similar questions before. You're aware the DICOM and HL7 aECG support only works when the plugin is available in the folder of the ECGViewer.exe? So you should have the following files in the folder of your ECGViewer.exe: ECGConversion.dll ECGCpluginDICOM.dll ECGCpluginaECG.dll

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Simple Apps

    I have received a similar questions before. You're aware the DICOM and HL7 aECG support only works when the plugin is available in the folder of the ECGViewer.exe? So you should have the following files in the folder of your ECGViewer.exe: ECGConversion.dll ECGCpluginDICOM.dll * ECGCpluginaECG.dll

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    I have received a similar questions before. You're aware the DICOM and HL7 aECG support only works when the plugin is available in the folder of the ECGViewer.exe? So you should have the following files in the folder of your ECGViewer.exe: ECGConversion.dll ECGCpluginDICOM.dll * ECGCpluginaECG.dll

  • MJB van Ettinger MJB van Ettinger modified a comment on ticket #18

    Great to get feedback before next release, so let me know what your comparison shows. Also I just read your orignal request again and do you also want to be able to export the signals after applying a filter?

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #18

    Great to get feedback before next release, so let me know what your comparison shows. Alos I just read your orignal request again and do you also want to be able to export the signals after applying a filter?

  • MJB van Ettinger MJB van Ettinger modified ticket #16

    Implement AccessionNr and StudyID

  • MJB van Ettinger MJB van Ettinger modified ticket #21

    ECGDraw exception when adding to DateTime

  • MJB van Ettinger MJB van Ettinger modified ticket #23

    ECG not visible near the end in longer ISHNE recordings (ECGViewer)

  • MJB van Ettinger MJB van Ettinger modified ticket #18

    ECG Viewer - Gain setting

  • MJB van Ettinger MJB van Ettinger modified ticket #24

    ECG Statements contains questionmarks when string has non-ASCII characters.

  • MJB van Ettinger MJB van Ettinger modified ticket #18

    Mains / muscle filters

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #18

    Added quite some code to enable filtering in ECGViewer and PDF export. Will be part of next release. I'm not sure when the next release will be, but probably somewhere in the next 4 weeks.

  • MJB van Ettinger MJB van Ettinger modified ticket #16

    Trouble opening MUSE-XML -file

  • MJB van Ettinger MJB van Ettinger modified ticket #15

    query/retrieve DICOM SCP?

  • MJB van Ettinger MJB van Ettinger modified ticket #14

    Shciller ECG

  • MJB van Ettinger MJB van Ettinger modified ticket #13

    Thesis

  • MJB van Ettinger MJB van Ettinger modified ticket #8

    Info request

  • MJB van Ettinger MJB van Ettinger modified ticket #6

    Need viewer for MAC

  • MJB van Ettinger MJB van Ettinger modified ticket #3

    PDF creatio in landscape format

  • MJB van Ettinger MJB van Ettinger modified ticket #9

    CardioControl MDW, SCP-ECG conversion

  • MJB van Ettinger MJB van Ettinger modified ticket #18

    Mains / muscle filters

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #18

    I've found an example for a Butterworth-filter (independent of sample rate) on codeprojects which looks to do the trick, are you still interested in filter capabilities for the ECGViewer? I think you would like to have 0.1-40 Hz bandpass-filter or do you want something else?

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    There are some changes done to the StoreSCU code. It is now able to send multiple DCM files (and manipulate data per file, through callback function). But there are still issues with the sending of DICOM files. Error handling still needs a lot of improvement. By the way in my first response I gave the changes in the C# ECG Toolkit.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    The underlying value is the same. So it will still work in dicom-cs and the file should work for other DICOM readers (that still support this Big Endian mode). So renaming should work, but it is a retired mode so there might be (future) applications that will not support these files.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    My guess is you can use the UIDs.ExplicitVRBigEndianRetired (instead of UIDs.ExplicitVRBigEndian) eventough it is currently Retired according to specification of the DICOM standard.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    There have been a couple of changes to the DICOM-ECG plug-in. The beginning of the SOP UID and Series UID previously used a fixed magical value, this is now configurable. Besides this there is also a DICOM-PDF support, to make this work in combination with DICOM-waveforms files there is also some configuration for "SOP UID" and "Series UID ". Other changes to the code are: support for a version history of the Diagnostic Statements (based on CERNER files) both 12 and 15 leads ECG should now use "UIDs.TwelveLeadECGWaveformStorage"...

  • MJB van Ettinger MJB van Ettinger posted a comment on ticket #18

    Sorry to say I'm not an expert in implementing filters. Would be a nice additional feature, but don't think I will be able to add this properly myself.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    I have used the ECGDraw functions to make an Image (System.Drawing.Bitmap). That image can be generated on the fly. Let the browser display that image. Ohter appoach could be to send signals (arrays of shorts) using JSON (or XML) and use HTML5 drawing capabilities.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Ah yes, you should always check whether right assemblies are loaded. IECGReader _ECGDicomReader = new UnknownECGReader(); var ECG = _ECGDicomReader.Read(@"ECG.scp [filepath]"); IECGFormat writeFile = ECG; if (ECGConversion.ECGConverter.Instance.waitForFormatSupport("DICOM")) { ECGConversion.ECGConfig cfg = ECGConversion.ECGConverter.Instance.getConfig("DICOM"); cfg["UID Prefix"] = "1.2.345.6.7.89012.3.45.6"; // this is just an example of a configuration item you can be set if (ECGConversion.ECGConverter.Instance.Convert(ECG,...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    Ok you will have to convert the read file befor writing it to another file. For DICOM files this can be done by the following lines: IECGReader _ECGDicomReader = new UnknownECGReader(); var ECG = _ECGDicomReader.Read(@"ECG.scp [filepath]"); IECGFormat writeFile = ECG; ECGConversion.ECGConfig cfg = ECGConversion.ECGConverter.Instance.getConfig("DICOM"); cfg["UID Prefix"] = "1.2.345.6.7.89012.3.45.6"; // this is just an example of a configuration item you can be set if (ECGConversion.ECGConverter.Instance.Convert(ECG,...

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Help

    I think the provided code is pretty clear how to generate an SCP-ECG file, but beware there has to be some consistency between all provided leads (instances of Signal) and you must copy in the right AVM, sample rate (SPS) and samples into each instance of the Signal class. If you want me give you more specific support you can provide me with your current code. I'm always willing to take look at a specific issue.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Open Discussion

    Nope, CSV is output only. But you can parse CSV yourself and use the ISignals and IDemographics interfaces to insert data into any output format. So with some C# coding it is possible.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Open Discussion

    Hi, yeah the CSV reader was never implemented. CSV is a output only format in this toolkit. So if you want to do this you will have to implement reading the CSV file yourself. The original reason for the absense of this feature is that CSV output contains only signals and all other formats have requirements regarding provided demographic information.

  • MJB van Ettinger MJB van Ettinger posted a comment on discussion Simple Apps

    This is what you are talking about (see attached image). You can detect these features with a specialised detector. There is no code for this included in the C# ECG Toolkit. But physionet and BioSig might provide code to do this. Also you can take a look at conference papers from CinC. Other people have done this before and written about there findings, maybe there efforts can help you.

  • MJB van Ettinger MJB van Ettinger modified a comment on discussion Simple Apps

    Entry: https://sourceforge.net/p/ecgtoolkit-cs/discussion/873772/thread/6c12faf6/#f6c4 describes how to write the GlobalMeasurements to a ECG file. // make a diagnostic statement object ECGConversion.ECGDiagnostic.Statements stat = new ECGConversion.ECGDiagnostic.Statements(); // here you add the statement and its status stat.statement = new string[] { "my statement", "UNCONFIRMED" }; stat.confirmed = false; stat.time = DateTime.Now; // set statement to the ECG file format.Diagnostics.setDiagnosticStatements(stat);...

1 >
MongoDB Logo MongoDB