*------------------------------------------------------------ * Description: Basic HL7 Parse * Parameters: <para>, <req/opt>, D=<def>, <desc> * Return: * Use: *------------------------------------------------------------ * Id Date By Description * 1 07/11/2007 GLR Initial Creation * *------------------------------------------------------------ TEXT TO lcHL7 noshow MSH|^~\&|Medinotes|CP|External||20070705154008||DFT^P03|468D4AD320F3|P|2.4|||AL||| EVN|P03|20070705154008|20070705154008 PID|1|11384|468AE48A7926||Johengen^Jay||20051108000000|||||||||||| PV1|1|O|Ambulatory Surgery Center^^^^^^^^Ambulatory Surgery Center||||^Cardio^Full|||||||||||||||||||||||||||||||||||||20070705154008|||||| ORC|SN| FT1|1|||20070705154008||CG||||||||||^^^Ambulatory Surgery Center|||250.00^Diabetes Mellitus Without Mention Of Complication, Type II Or Unspecified Type, Not Stated As Uncontrolled^I9|^Cardio^Full|||||99212^Office Or Other Outpatient Visit For The Evaluation And Management Of An Established Patient, Which Requires At Least Two Of These Three Key Components: A Problem Focused History; A Problem Focused Examination; Straightforward Medical Decision Making. Counseling And/Or Coordination Of Care With Other Providers Or Agencies Are Provided Consistent With The Nature Of The Problem(s) And The Patient's And/Or Family's Needs. Usually, The Presenting Problem(s) Are Self Limited Or Minor. Physicians Typically Spend 10 Minutes Face-To-Face With The Patient And/Or Family.^C4| DG1|1||250.00^Diabetes Mellitus Without Mention Of Complication, Type II Or Unspecified Type, Not Stated As Uncontrolled^I9|||F ENDTEXT #DEFINE CRLF CHR(13)+CHR(10) *07/11/2007 16:17:14- GLR ------------------------- * validate the stream *-------------------------------------------------- IF LEFT(lcHL7,3)="MSH" *07/11/2007 16:16:56- GLR ------------------------- * each line is object in the collection *-------------------------------------------------- PRIVATE loHL7 loHL7 = CREATEOBJECT("Empty") *07/11/2007 16:18:36- GLR ------------------------- * get delimiters *-------------------------------------------------- ADDPROPERTY(loHL7, "Delimiters", SUBSTR(lcHL7,4,5) ) LOCAL pnLevel pnLevel = 0 *07/11/2007 16:17:30- GLR ------------------------- * walk down the list *-------------------------------------------------- LOCAL i, laHL7[1] FOR i=1 TO ALINES(laHL7,lcHL7,.T.,CRLF) *07/11/2007 16:20:56- GLR ------------------------- * create object, and assign unique name *-------------------------------------------------- LOCAL lcName AS String lcName = LEFT(laHL7[i],3)+SYS(2015) ADDPROPERTY(loHL7, lcName, CREATEOBJECT("Empty")) ParseLine( EVALUATE("loHL7."+lcName), laHL7[i], pnLevel ) NEXT ELSE ? "Not a HL7 stream" ENDIF RETURN loHL7 *------------------------------------------------------------ * Description: * Parameters: <para>, <req/opt>, D=<def>, <desc> * Return: * Use: *------------------------------------------------------------ * Id Date By Description * 1 07/11/2007 GLR Initial Creation * *------------------------------------------------------------ PROCEDURE ParseLine LPARAMETERS toObj, tcLine, tnLevel LOCAL laLine[1], lcDelimiter AS String , j tnLevel = tnLevel + 1 lcDelimiter = SUBSTR(loHL7.delimiters, tnLevel,1) FOR j=2 TO ALINES(laLine, tcLine, .F., lcDelimiter) ADDPROPERTY(toObj, "prop"+TRANSFORM(j), laLine[j]) IF SUBSTR(loHL7.delimiters, tnLevel+1,1) $ laLine[j] ADDPROPERTY(toObj, "obj"+TRANSFORM(j), CREATEOBJECT("Empty") ) ParseLine( EVALUATE("toObj."+"obj"+TRANSFORM(j)), laLine[j], tnLevel ) ENDIF NEXT ENDPROC