Skip to content

1. Message

Angus Millar edited this page May 9, 2019 · 3 revisions

Parse an existing message

//Good idea to include the following using statement at the top of you source file.
using PeterPiper.Hl7.V2.Model;

//Parse a whole message into the object model from a string 
string MessageExample = "<This would be a HL7 V2 Message>"
var oHL7 = Creator.Message(MessageExample);

//Or, parse a whole message into the object model from a string list
String<List> MyMessageStringList = new String<List>();
MyMessageStringList.Add("<Populate the string list with a segment per item>");
var oHL7 = Creator.Message(MyMessageStringList);

//You can also tell the parser to only parse the MSH segment. 
//This can be useful when you need to move through many messages fast 
//to find a particular message creation date or Message Control ID.
string MessageExample = "<This would be a HL7 V2 Message>"
var oHL7 = Creator.Message(MessageExample, true);  

Create a new message

When creating a new message the bare minimum required by Peter Piper is the Message Type, Message Trigger & Message Version. This will generate a new message with a single MSH segment as follows:

MSH|^~&|||||20160317112000+1000||ORU^R01|4f3c300a-356a-42b4-a4f5-1afa7d4d0e3d|P|2.4|||AL|NE

Note: Peter piper has defaulted the message date & time to datetime.now() and allocated a GUID as the Message Control ID. You may then change anything as desired.

//The bare minimum to required start a new message Version, MessageType, MessageTrigger
var oHL7 = Creator.Message("2.4", "ORU", "R01");

//Or, Assign the Message Control Id on creation of the message
var oHL7 = Creator.Message("2.4", "ORU", "R01", "123456789");

//Or, Assign the Message Control Id and Message Structure on creation of the message
var oHL7 = Creator.Message("2.4", "ORU", "R01", "123456789", "ORU_R01");

//Or, clone an already parsed message to create a new instance of the message
string MessageExample = "<This would be an HL7 V2 Message>"
var oHL7MsgInstance1 = Creator.Message(MessageExample);
var oHL7MsgInstance2 = oHL7Msg1.Clone()

//Or, First create an MSH Segment instance, and then create a message from that segment instance.
//Just remember you must have the minimum data of: Message Type, Message Trigger & Message Version.
var MyMshSegment = Creator.Segment("MSH|^~\&|||||20160317112000+1000||ORU^R01|123456789|P|2.4|||AL|NE");
var oHL7 = Creator.Message(MyMshSegment);

Access basic message header information (MSH)

(MSH-10) Message Control ID

string MessageControlID = oHL7.Segment("MSH").Field(10).AsString;    

//Alternatively, you could you the MessageControlID property shortcut   
string MessageControlID = oHL7.MessageControlID;

(MSH-7) Message creation date & time

DateTimeOffset MessageDateTime = oHL7.Segment("MSH").Field(7).Convert.DateTime.GetDateTimeOffset();

//Alternatively, you could use the MessageCreationDateTime property shortcut 
DateTimeOffset MessageCreationDateTime = oHL7.MessageCreationDateTime;

(MSH-9.1 & MSH-9.2) Message type & Message Trigger

string MessageType = oHL7.Segment("MSH").Field(9).Component(1).AsString;
string MessageTrigger = oHL7.Segment("MSH").Field(9).Component(2).AsString;
    
//Alternatively, you could use the MessageType & MessageTrigger property shortcut 
string MessageType = oHL7.MessageType;
string MessageTrigger = oHL7.MessageTrigger;

(MSH-12) Message Version

string MessageVersion = oHL7.Segment("MSH").Field(12).AsString;
    
//Alternatively, you could use the MessageVersion property shortcut 
string MessageVersion = oHL7.MessageVersion;

HL7 V2 message example

MSH|^~\&|SUPER-LIS^2.16.840.1.113883.19.1^ISO|GOODPATH^4321^AUSNATA|Rhubarb-EMR^2.16.840.1.113883.19.4.2^ISO|GOODHOSP^2.16.840.1.113883.19.5^ISO|20150410112000+1000||ORU^R01^ORU_R01|P0000051504102331070|P|2.4|||AL|NE|AUS|8859/1
**PID**|1||2142363^^^GOODHOSP^MR~61405230941^^^AUSHIC^MC~WA123456B^^^AUSDVA^DVG~8003608833357361^^^AUSHIC^NI||PatientSurnameOne^FirstnameOne^MiddleNameOne^SufixOne^PrefixOne^^L~PatientSurnameTwo^FirstnameTwo^MiddleNameTwo^SufixTwo^PrefixTwo^^M||194506241031|M|||Unit 1^111 Nehta Street^Brisbane^^4000^AUS^H~Unit 2^222 NehtaTwo Street^Brisbane^^4000^AUS^B||^PRN^PH^^^^93235615|^WPN^CP^^^^0414778341
PV1|1|O|Ward1^RoomE8^Bed10^GOODHOSP&2.16.840.1.113883.19.5&ISO||||ABCB^DrASurname^DrAttending^^^Dr^^^SUPER-LIS~123456^DrASurname^DrAttending^^^Dr^^^GOODHOSP~2304227F^DrASurname^DrAttending^^^Dr^^^AUSHICPR|HIJK^DrASurname^DrReferring^^^Dr^^^SUPER-LIS~858595^DrASurname^DrReferring^^^Dr^^^GOODHOSP~2929016F^DrASurname^DrReferring^^^Dr^^^AUSHICPR
ORC|RE|112233^RhubarbOrders^2.16.840.1.113883.19.4.1.5^ISO|15P000005-123456^SUPER-LIS^2.16.840.1.113883.19.1.2^ISO|44556677^RhubarbOrdersGroupID^2.16.840.1.113883.19.4.1.4^ISO|CM||||201504100800+1000|||DFTR^DrBSurname^DrOrdering^^^Dr^^^SUPER-LIS~958678^DrBSurname^DrOrdering^^^Dr^^^GOODHOSP~4322581B^DrBSurname^DrOrdering^^^Dr^^^AUSHICPR~8003600000000000^DrBSurname^DrOrdering^^^Dr^^^AUSHIC^^^^^NPI||^WPN^PH^^^^0893412041|201504100730+1000
OBR|1|112233^RhubarbOrders^2.16.840.1.113883.19.4.1.5^ISO|15P000005-123456^SUPER-LIS^2.16.840.1.113883.19.1.2^ISO|26604007^Complete blood count^SCT^FBE^Full Blood Count^SUPER-LIS|||201504100930+1000||||||Patient has a history of severe gout caused by rhubarb.|201504101100+1000||DFTR^DrBSurname^DrOrdering^^^Dr^^^SUPER-LIS~958678^DrBSurname^DrOrdering^^^Dr^^^GOODHOSP~4322581B^DrBSurname^DrOrdering^^^Dr^^^AUSHICPR~8003600000000000^DrBSurname^DrOrdering^^^Dr^^^AUSHIC^^^^^NPI|^WPN^PH^^^^0893412041|||CP=N,DR=4322581B||201504101115+1000||HM|F||^^^201504100800+1000^^RT|2304227F^DrCopyASurname^DrCopyToA^^^Dr^^^AUSHICPR~0813266H^DrCopyBSurname^DrCopyToB^^^Dr^^^AUSHICPR~4628361B^DrCopyCSurname^DrCopyToC^^^Dr^^^AUSHICPR||||DRPRIH&DrSurname&PrincipalResultInterpreterHaem&&&DR&&&SUPER-LIS
OBX|1|NM|718-7^Hemoglobin^LN^HB^Haemoglobin^GOODPATH||145|g/L^^ISO+|130-180||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|2|NM|789-8^Erythrocytes^LN^RCC^Red Cell Count^GOODPATH||5.30|x10\S\12/L^^ISO+|4.50-6.50||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|3|NM|4544-3^Hematocrit^LN^HCT^HCT^GOODPATH||0.43|L/L^^ISO+|0.40-0.54||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|4|NM|^^^MCV^MCV^GOODPATH||81|fL^^ISO+|80-96||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|5|NM|^^^MCH^MCH^GOODPATH||27.4|pg^^ISO+|24.0-32.0||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|6|NM|^^^MCHC^MCHC^GOODPATH||338|g/L^^ISO+|320-360||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|7|NM|^^^PLAT^Platelet^GOODPATH||198|x10\S\9/L^^ISO+|150-400||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|8|NM|^^^WCC^White Cell Count^GOODPATH||12.1|x10\S\9/L^^ISO+|4.0-11.0|H|||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|9|NM|^^^NEUTS^Neutrophils^GOODPATH||9.3|x10\S\9/L^^ISO+|2.0-7.5|H|||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|10|NM|^^^LYMPHOS^Lymphocytes^GOODPATH||2.1|x10\S\9/L^^ISO+|1.0-4.0||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|11|NM|^^^MONOS^Monocytes^GOODPATH||0.7|x10\S\9/L^^ISO+|0.1-0.8||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|12|NM|^^^EOS^Eosinophils^GOODPATH||0.0|x10\S\9/L^^ISO+|0.0-0.4||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|13|NM|^^^BASOS^Basophils^GOODPATH||0.0|x10\S\9/L^^ISO+|0.0-0.2||||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
OBX|14|TX|TXT^TXT^AUSPDI^FBE^Full Blood Count^GOODPATH||CUMULATIVE REPORT~Req No:    P000001   P000002   P000003   P000004   P000005~  Date:   29/06/13  30/06/13  01/07/13  16/07/13  10/04/15~  Time:      07:37     08:23     08:20     19:20     23:30  Units    Ref Range~------------------------------------------------------------------------------~BLOOD COUNT~Hb            138       141       139       135       145   g/L      130-180~WCC           7.9       7.5       7.5       9.5      12.1H  x10\S\9/L  4.0-11.0~Plat          280       299       272       186       198   x10\S\9/L  150-400~MCV            87        88        86        86        81   fL       80-96~RCC          4.87      5.02      4.97      4.79      5.30   x10\S\12/L 4.50-6.50~HCT          0.42      0.44      0.43      0.41      0.43   L/L      0.40-0.54~MCH          28.3      28.1      28.0      28.2      27.4   pg       24.0-32.0~MCHC          327       320       326       328       338   g/L      320-360~RDW          13.8      13.9      14.0      14.3H     15.5H  %        11.0-14.0~MPV          10.7      10.8H     10.7      11.0H     11.2H  fL       6.4-10.7~Differential~Neut           3.9       3.6       3.7       4.6       9.3H x10\S\9/L  2.0-7.5~Lymph          2.9       2.9       2.7       3.6       2.1  x10\S\9/L  1.0-4.0~Mono           0.7       0.5       0.6       0.7       0.7  x10\S\9/L  0.1-0.8~Eos            0.5H      0.4       0.4       0.6H      0.0  x10\S\9/L  0.0-0.4~Baso           0.0       0.0       0.0       0.0       0.0  x10\S\9/L  0.0-0.2|||A|||F|||201504100930+1000|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
Clone this wiki locally