Dear List-Members,

(Sorry, this has become a rather long posting, to give relevant context)

We, that is Project Team 40 
(http://www.cs.tut.fi/~varri/tc251/pt40/index.html) of CEN TC 251 "Health 
Informatics" (http://www.centc251.org/) Working Group IV 
(http://www.standards.nhsia.nhs.uk/centc251/wgiv/), try to define a file 
exchange format for biomedical data using ASN.1.

Thanks to the Larmouth book and other resources, we got a good start, 
despite zero previous ASN.1 experience of the team members.

When presenting our most recent draft at the last WGIV meeting, there 
were some voices, doubting the implementabilty of the file exchange 
format (FEF).

We did choose BER encoding and first sample programs are working 
right now, but they are all hand-coded, not using available ASN.1 tools or 
libraries. 

The skeptical voices now claimed, that there are three (rather essential) 
features of the FEF, which would limit/exclude the implementabilty using 
existing tools and libraries. As the availabilty of (free and commercial) 
tools and libraries was one factor to choose ASN.1 in the first place, this 
would be rather bad news.

1. Large files, general
The FEF files can grow rather large, not primarily because of millions of 
data elements (about 500 to 50000 primitive data elements are expected 
in a file), but by rather few (1 .. 50) very large primitive data elements 
holding the waveforms in a backward compatible binary format. In ASN.1 
these are just declared as OCTET STRING.

Issue raised: Existing tools/libraries will need to assemble the entire data 
structure in memory, including these BLOBs before writing and after 
reading the BER file. So this will easily overload virtual memory as file 
sizes approch the GB area. In addition primitive data elements larger 
than 4GB will not be supported in existing tools and libraries.

2. Large files, selective reading
Most application would be happy to select only part of the BER file to 
read into memory at a any time, using some selection analogous to 
XPATH: 
"[APPLICATION 5003]:2/[APPLICATION 5004]:4"
== "read only the fourth [APPLICATION 5004] data element within the 
second [APPLICATION 5003] data element"
This is easily possibly in my hand-crafted application (as it build on top 
of a XML library).

Issue raised: This functionality is not available in existing ASN.1 tools 
and libraries

3. Incomplete files or byte streams.
For some applications it would be very useful to be able to read the FEF 
file while it is still written to, decoding relevant parts when they become 
available. Of coure the indefinite length encoding must be used for this 
scenario.

Issue raised: This functionality is not available in existing ASN.1 tools 
and libraries, they will just give error messages that the file is not 
complete and won't return useful data, let alone be able to resume 
parsing when more data becomes available.

If anyone knowledgeable about the existing base ASN.1 tools and 
libraries, can comment about  the validity of these issues, it would be 
most helpful to us.

Regards,
Peter Jacobi




Reply via email to