What is the HL7 ZDS segment used for? - hl7

My very old HL7 parser has just hit a snag as it is now getting some messages with a ZDS segment present. It was easy to fix by adding a ZDS object to my parser, but I am trying to find out what it is used for. Googling hasn't helped much. This is a sample
ZDS|PERFORM|p0001236^PATEL^ATEST^^^^^^HHB_INOP_PRSNL^^^^OTHER|20100714101800|CD:653
ZDS|TRANSCRIBE|p0001236^PATEL^ATEST^^^^^^HHB_INOP_PRSNL^^^^OTHER|20100714101800|CD:653
ZDS|SIGN|p0001236^PATEL^ATEST^^^^^^HHB_INOP_PRSNL^^^^OTHER|20100714101912|CD:653
So, I'm interested in what each field is though looking at this sample data, it seems I don't lose much by just dropping the whole segment.

In HL7, all segments that begin with the letter Z are considered to be custom and are not defined further by the HL7 standard. You will need to find out what system is responsible for generating these ZDS segments and ask the owners of that system to provide you their specification.

As Scott said, "Z" segments are custom and can vary from vendor to vendor. In the Cerner realm, however, ZDS segments are typically used for "Document Succession" purposes -- a means of document version tracking and synchronization between two supportive systems.

The ZDS segment is used to communicate document endorsement information (actions done or to be done) in Unsolicited Document Results. only a specific solution of Millennium use it, so if you don't need just ignore it.

Related

What does ZCD segment refer to in HL7 message?

Does anyone know what ZCD may refer to? It is described as a segment with a link back to PreManage for the patient!
Can anyone please provide more details?
The Z segments (segments those begin with the letter "Z") are custom segments. Those are not defined in specifications. They vary from vendor to vendor. Vendor may publish a document explaining usage of segment. Two connected parties should know in advance and decide the usage by mutual understanding.
As those are custom, and if there is no way to know what data they contain, it may be safe to neglect them hoping the sender have not put critical data in it.
Please refer to this:
Z-segments can be inserted anywhere in the HL7 message. A popular approach is to place the Z-segment within a group of segments that contain similar information, such as insurance. Z-segments are also often placed at the end of the message. The advantage of doing so is that this placement prevents systems configured to parse “standard” HL7 format from requiring any configuration modifications in order to process the message. The application simply reads the segments in the order expected and then extracts the data from the Z-segment (if needed) via parser modifications.
Working with unexpected Z-segments
Sometimes systems may send unexpected Z-segments, whether or not they were part of the original specifications. Even if you are not interested in the data in the Z-segment, you may still (depending on its location) need to take the segment into account while testing and developing your interface.

What does pwn mean in server exploitation (in CTFs)?

Pwn - I know that this is a category in CTFs in which you exploit a server to find the flag.
there is a library called pwntools, it's a CTF framework and exploit development library in python.
What I can't understand is why is it called "PWN" and is it an abbreviation?
pwn is also owning/dominating someone, but does this definition fit?
Thanks for helping ^^
It is litereally just that. Owning the server. You're looking to far into it and forgetting the background in which this culture has risen.
In the context of internet/hacking slang, it indeed means that your server (or data or anything else) has been taken over control, that you "lost the game".
I think this is an abbreviation from "pawned", from the verb "to pawn", used in games, though I can't find a reliable and authoritative source for it (same as current wiktionary word article is stating).
I feel like it has roots in the chess game (where you used pieces called "pawns").
It sounds like "owned" and "punched". It might also be some invented word.

Print contents of rpg file in human-readable format

Context
A friend of mine is having trouble printing source code to a human readable format.
The compiled (I assume) programs of their welding robot have the .rpg extension. They want to collect print-outs in human-readable format, possibly for backup or future reference.
Their supplier can provide the software that accomplishes this, be it at a considerable cost (and possibly: an annual license). Because of this, my friend decided to ask me if a easier/cheaper solution exists.
Examples & Pictures
The files can be read on the console of the robot, an example:
I've done some minor research and I'm fairly sure this is the Report Program Generator (RPG) language developed by IBM. The Assembly-like syntax seems to match; it might be one of the later versions of the language.
My friend has send me an example .rpg file, the contents seem binary with some string literals scattered throughout. Screenshot of the contents of an example file in hexadecimal:
The Question
There is not much, if any, clear information to be found online so I suppose I have multiple questions (for anyone that might know more about this):
Is this (first image) Report Program Generator (RPG) code?
Does the .rpg file contain compiled or processed code? Maybe an intermediate format?
Is it possible to convert files as shown in the example, back to source-code or human-readable format, kind of 'disassemble' it?
If anyone knows more, don't hesitate to give me any information or ask more details if necessary. Thanks in advance!
And maybe not an important question but still something that bugs me (and might indicate I'm on the wrong track):
If this is indeed an RPG program, why would the compiled/processed binary have the .rpg extension, shouldn't the source-file have that? This leads me to believe I'm either (a) assuming the wrong things (the language, etc...) or (b) this is an intermediate format, easier for machines to read, that has to be interpreted by some kind of runtime system.
I don't think that's any version of IBM's RPG language. RPG does have a MOVEL opcode, but it doesn't have any of the others.
Also, all the versions of the IBM language have been intended for business programming. I doubt that it would have been used for robotics.
My guess is that's a proprietary language of the company that makes the robot.
There are some similarities but it does not look like IBM RPG language.
RPG sources are in fact source physical file members. They are not stored in the "traditional" file system but in OS/400 libraries. Therefore RPG sources have no extension. They can be converted to Integrated File System stream file though.
I can't answer this question I'm afraid as it's unknown language to me.
I expect possibly that the OP misidentifies the file type/extension; that the extension is actually .prg, and the files serve as instructions for a Panasonic Industrial Welding Robot. The following forum [drilled down to Panasonic Robots] bills itself as the biggest Industrial Robots Supportforum worldwide!; perhaps a good place to ask about those images provided in the OP, and the inquiry about getting source from what appears to be a binary instruction stream.
FWiW, the first image seems to show that the Ezed utility [on the console] gives that human-readable format, so then the question might be how to get that saved and then how to transfer that elsewhere; e.g. what type of comm ports and file transfer utilities are available from whatever platform/OS.

Can an HL7 message contain MLLP?

I'm not entirely sure that this is the right place for it - if so, this question should be "Where should I ask this question?" ;)
I have some code I'm maintaining that is parsing out HL7 and MLLP. It opens the MLLP message and sends it to the HL7 parser. Which sends it right back to the MLLP parser. As you can imagine, this goes poorly, quickly.
I'm fairly new to HL7/MLLP, but I'm really confused and also pretty sure that HL7 shouldn't contain another MLLP message. If this is allowed, could I get a link/quote to some documentation stating that?
Just use escape sequences to mask the MLLP codes
see http://www.hl7standards.com/blog/2006/11/02/hl7-escape-sequences/
But if you only want to send more than one HL7-Message in just one MLLP envelope, I would use batch processing with FHS and BHS segments
While perhaps not the same as the issue you are describing, it is not uncommon for HL7 messages to end up being double wrapped in MLLP envelopes. This is particularly if the message is transitioning through another system. (say from a billing system, through an EHR)
a standard envelope is
<VT>...hl7data...<FS><CR>
but a double wrapped message will look like this
<VT><VT>...hl7data...<FS><CR><FS><CR>
It's just something to look out for. And should be corrected by the system in the middle unwrapping and rewrapping the message correctly.

Setting up help for a Delphi app

What's the best way to set up help (specifically HTML Help) for a Delphi application? I can see several options, all of which has disadvantages. Specifically:
I could set HelpContext in the forms designer wherever appropriate, but then I'm stuck having to track numbers instead of symbolic constants.
I could set HelpContext programmatically. Then I can use symbolic constants, but I'd have more code to keep up with, and I couldn't easily check the text DFMs to see which forms still need help.
I could set HelpKeyword, but since that does a keyword lookup (like Application.HelpKeyword) rather than a topic jump (like Application.HelpJump), I'd have to make sure that each of my help pages has a unique, non-changing, top-level keyword; this seems like extra work. (And there are HelpKeyword-related VCL bugs like this and this.)
I could set HelpKeyword, set an Application.OnHelp handler to convert HelpKeyword requests to HelpJump requests so that I can assign help by topic ID instead of keyword lookup, and add code such as my own help viewer (based on HelpScribble's code) that fixes the VCL bugs and lets HelpJump work with anchors. By this point, though, I feel like I'm working against the VCL rather than with it.
Which approach did you choose for your app?
When I first started researching how to do this several years ago, I first got the "All About help files in Borland Delphi" tutorial from: http://www.ec-software.com/support_tutorials.html
In that document, the section "Preparing a help file for context sensitive help" (which in my version of the document starts on page 28). It describes a nice numbering scheme you can use to organize your numbers into sections, e.g. Starting with 100000 for your main form and continuing with 101000 or 110000 for each secondary form, etc.
But then I wanted to use descriptive string IDs instead of numbers for my Help topics. I started using THelpRouter, which is part of EC Software's free Help Suite at: http://www.ec-software.com/downloads_delphi.html
But then I settled on a Help tool that supported string ID's directly for topics (I use Dr. Explain: http://www.drexplain.com/) so now I simply use HelpJump, e.g.:
Application.HelpJump('UGQuickStart');
I hope that helps.
We use symbolic constants. Yes, it is a bit more work, but it pays off. Especially because some of our dialogs are dynamically built and sometimes require different help IDs.
I create the help file, which gets the help topic ID, and then go around the forms and set their HelpContext values to them. Since the level of maintenance needed is very low - the form is unlikely to change help file context unless something major happens - this works just fine.
We use Help&Manual - its a wonderful tool, outputting almost any format of stuff you could want, doc, rtf, html, pdf - all from the same source. It will even read in (or paste from rtf (eg MSWord). It uses topic ID's (strings) which I just keep a list of and I manually put each one into a form (or class) as it suits me. Sounds difficult but trust me you'll spend far longer hating the wrong authouring tool. I spent years finding it!
Brian

Resources