...
Excerpt |
---|
IMPORTANT: It is mandatory that a Noah 4 business system support export of Noah data in nhax format. IMPORTANT: Please Notice that Noah from pre 4.12 and again from 4.14 supports UTF-16 when importing. We strongly recommend the use of UTF-8. Please beware that UTF-16 is only supported when importing nhax / enhax; nowhere else is it supported in Noah, e.g., Public and Private blobs, etc. In 4.12 and 4.13 UTF-16 data can be imported by first importing on a pre-4.12 Noah and then exporting from that version again. Then the data will be in UTF-8 and can be imported on any Noah version.
The Noah 4 Extended Native format (Nhax) is an extension of the older NOAH 3 Native format. It is not a compatible format, but is based on the same base blob’s and elements (sections). The SDK contains source code for a Nhax viewer, as well as an xsd file describing the XML of the patient xml data. The XML sections must have enough information on the encoding to ensure portability. Enhax is a variation of Nhax, with password protected compression. See description later in this document. Data StorageThe Noah 4 Native format is a mix of binary data, and compressed XML data, each put into a BLOB section/record: The following sections are defined. internal enum NHAxFileSections { ROOTSECTION = 0x0201, PATIENTDIRECTORY, USERSECTION, MISCSECTION, PATIENTSECTION } ;
ROOT_SECTIONThe ROOT_SECTION begins at File offset 0, and is the entry point to get information. [StructLayout(LayoutKind.Sequential, Size = (8 + 8 + 8 + 8)), Serializable] internal struct RootxSection { [MarshalAsAttribute(UnmanagedType.I8)] internal long MagicNumber; // A magic number for better identification [MarshalAsAttribute(UnmanagedType.I8)] internal long PatientDirectoryOffset; // File offset to the Patient directory [MarshalAsAttribute(UnmanagedType.I8)] internal long UserOffset; // File offset to the User section [MarshalAsAttribute(UnmanagedType.I8)] internal long MiscOffset; // File offset to the misc section }
MagicNumber = 0x00AABBCCDD009988; PATIENTDIRECTORYThe PatientDirectory contains patient information on each patient in the file. The PatientRecordOffset is the file offset to where the PATIENTSECTION resides for the patient. The XML for the patient is the same as for PATIENTSECTION, except that the PatientRecordOffset attribute must be applied .and that it only contains that patient’s demographic data. Other sections of the xml (Sessions, PatientModuleSetupData, PatientComments, PatientIdentification ) can/should be omitted. <?xml version="1.0" encoding="utf-16"?> <Patients> <Patient PatientNo="0000001" PatientGUID="132f2fa8-94a6-4a2d-a6e9-f207599ba41b" CreateDate="2011-02-01T08:17:39" UserInitials="ABC" FirstName="John" LastName="Smith" Gender="0" PatientRecordOffset="40" /> <Patient PatientNo="0000002" PatientGUID="81A77DDF-5827-467f-BBA8-778CB703EC8C " CreateDate="2011-02-01T09:27:29" UserInitials="ABC" FirstName="John" LastName="Jonson" Gender="0" PatientRecordOffset="1879" /> </Patients> PATIENTSECTIONThe PATIENTSECTION contains all the information on the patient in XML. This section contains all the data related to the Patient (Demographic, Sessions, Comments, SetupData, and Identification) See the NhaxFormat.xsd for further details. USERSECTIONThe USERSECTION contains all the UserInitials for the patients in XML. <?xml version="1.0" encoding="utf-16"?> <Users> <User> <Initials>ABC</Initials> <Name>ABC</Name> <UserName>ABC</UserName> </User> </Users> MISCSECTIONNot used, but available for expansion. Enhax FormatEnhax is supported in the SDK source code for the Nhax viewer. Enhax is the same as Nhax, except that it uses password protected compression. It is implemented using SharpZipLib with AESKeySize set to 256, compression level set to 9 (range: 0-9) and compression type is 'Deflated'. |
...