GMRAIAL2 ;BPOIFO/JG - BUILD HL7 ORU^R01 MESSAGE FOR ALLERGIES - PART 2 ; 17 Mar 2006 11:55 AM
;;4.0;Adverse Reaction Tracking;**22,23,34**;Mar 29, 1996
; Creates HL7 V2.4 ORU^R01 message for allergy updates & assessments
;
; This routine uses the following IAs:
; #4248 - VDEFEL calls (controlled)
; #3630 - VAFCQRY calls (controlled)
; #4531 - ZERO^PSN50P41 (supported)
; #2574 - $$CLASS2^PSNAPIS (supported)
;
; This routine is called as a subroutine by GMRAIAL1
;
Q
;
ENTRY ; Entry point from GMRAIAL1
;
; Skip to OBX8 if doing an assessment
G OBX8:ALTYPE=2
;
; OBX 1 - Reactant
OBX1 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"AGENT"_HLFS
S $P(OUTX,HLFS,5)=$$HL7RC^GMRAIAL1($P(ALRDATA,U,2)),$P(OUTX,HLFS,11)=RSLTSTA
S X=$P(SITEPARM,U,6)_HLCM_$P(SITEPARM,U,5)_HLCM_"L",$P(OUTX,HLFS,15)=X
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX2 - Allergy Type
OBX2 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"ALLERGY TYPE"_HLFS
S X=$P(ALRDATA,U,20),VAL=X_HLCM F I=1:1:$L(X) D
. S Y=$E(X,I),Y=$S(Y="D":"DRUG",Y="F":"FOOD",Y="O":"OTHER",1:"")
. S VAL=VAL_Y S:I<$L(X) VAL=VAL_","
S VAL=VAL_HLCM_"L",$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
S X=$P(SITEPARM,U,6)_HLCM_$P(SITEPARM,U,5)_HLCM_"L",$P(OUTX,HLFS,15)=X
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX3 - GMR Allergy
; ALLERGIES FROM VA DRUG CLASS HAVE SPECIAL FORMAT FOR
; OBX-5
OBX3 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"GMR ALLERGY"_HLFS
S VAL="",X=$P(ALRDATA,U,3) G OBX4:X=""
I X'["50.605" D
. S VAL=$P($G(@("^"_$P(X,";",2)_$P(X,";",1)_",0)")),U)
. I VAL="" D ERR^VDEFREQ("No data in GMR Allergy file "_$P(X,";",2)_$P(X,";")_",0)") S ZTSTOP=1 Q
. I X["PSDRUG" S GMRAVUID=$P(X,";",1)_U_$P(SITEPARM,U,6)_"_"_50
. E D
. . S GMRAFILE=+$P($P(X,";",2),"(",2),GMRAIENS=+X_","
. . S GMRAVUID=$$GETVUID^GMRAIAL1(GMRAFILE,.01,GMRAIENS,1)
. S VAL=$P(GMRAVUID,U)_HLCM_VAL_HLCM_$P(GMRAVUID,U,2)
I X["50.605" D
. S GMRAIENS=$P(X,";"),Y=$$CLASS2^PSNAPIS(GMRAIENS)
. S GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
. S VAL=$G(VAL)_$P(GMRAVUID,U)_HLCM_$P(Y,U,2)_HLCM_$P(GMRAVUID,U,2)_HLCM_$P(Y,U)_HLCM_$P(Y,U,2)_HLCM_$P(SITEPARM,U,6)_"_50.605"
G RETURN:ZTSTOP
S $P(VAL,HLCM,2)=$$HL7RC^GMRAIAL1($P(VAL,HLCM,2)),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA ;34
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX4 - List of drug ingredients
OBX4 G OBX5:'$D(^GMR(120.8,KEY,2))
S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"DRUG INGREDIENTS"_HLFS
S IEN1=0,VAL="" F S IEN1=$O(^GMR(120.8,KEY,2,IEN1)) Q:'+IEN1 D
. S Y=^GMR(120.8,KEY,2,IEN1,0),GMRAVUID=$$GETVUID^GMRAIAL1(50.416,.01,Y_",",1)
. D ZERO^PSN50P41(Y,,,"GMRAING") ;34 Gets zero node of ingredient entry from 50.416
. S X=$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(^TMP($J,"GMRAING",Y,.01),U))_HLCM_$P(GMRAVUID,U,2),VAL=VAL_X_HLRP ;34
S VAL=$E(VAL,1,$L(VAL)-1),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX5 - Drug class
OBX5 G OBX6:'$D(^GMR(120.8,KEY,3))
S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"DRUG CLASSES"_HLFS
S IEN1=0,VAL="" F S IEN1=$O(^GMR(120.8,KEY,3,IEN1)) Q:'+IEN1 D
. S GMRAIENS=^GMR(120.8,KEY,3,IEN1,0),X=$$CLASS2^PSNAPIS(GMRAIENS)
. S GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
. S VAL=$G(VAL)_$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(GMRAVUID,U,2)_HLCM_$P(X,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(SITEPARM,U,6)_"_50.605"_HLRP ;34
S VAL=$E(VAL,1,$L(VAL)-1),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX6 - MECHANISM
OBX6 S X=$P(ALRDATA,U,14) G OBX7:X=""
S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"MECHANISM"_HLFS
S GMRAVUID=$$GETVUID^GMRAIAL1(120.8,17,X)
S VAL=$P(GMRAVUID,U)_HLCM_$S(X="A":"ALLERGY",X="P":"PHARMACOLOGIC",X="U":"UNKNOWN",1:"")_HLCM_$P(GMRAVUID,U,2)
S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; OBX7 - Reaction
OBX7 S IEN1=0 F S IEN1=$O(^GMR(120.8,KEY,10,IEN1)) Q:'+IEN1 D Q:ZTSTOP
. S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"REACTION"_HLFS
. S X=^GMR(120.8,KEY,10,IEN1,0),GMRAVUID=""
. S:$P(X,U,2)'="" GMRAVUID="^L"
. S:$P(X,U,2)="" $P(X,U,2)=$P($G(^GMRD(120.83,+X,0)),U)
. S:GMRAVUID'="^L" GMRAVUID=$$GETVUID^GMRAIAL1(120.83,.01,+X_",",1)
. S VAL=$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(GMRAVUID,U,2) ;34
. S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
. S $P(OUTX,HLFS,14)=$$TS^VDEFEL($P(X,U,4))
. S XX=$$XCN200^VDEFEL($P(X,U,3)) ;34
. F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II)) ;34
. S $P(OUTX,HLFS,16)=XX ;34
. S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; Skip assessment if allergy update
G OBX9:ALTYPE=1
;
; OBX8 - Assessment
OBX8 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"ASSESSMENT"_HLFS
I +ENTERR=1 S VAL=HLCM_"ENTERED IN ERROR"_HLCM G OBX8A ;34
S X=+$P(ALRDATA,U,2),GMRAVUID=$$GETVUID^GMRAIAL1(120.86,1,X)
S VAL=$P(GMRAVUID,U)_HLCM_$S(X=0:"NO KNOWN ALLERGIES",X=1:"YES",1:"")
S VAL=VAL_HLCM_$P(GMRAVUID,U,2)
OBX8A S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=$E("FW",1+ENTERR) ;34
I '+ENTERR S $P(OUTX,HLFS,14)=$$TS^VDEFEL($P(ALRDATA,U,4))
I '+ENTERR D ;Block added in 34
. S XX=$$XCN200^VDEFEL($P(ALRDATA,U,3))
. F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II))
. S $P(OUTX,HLFS,16)=XX
S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; Done if assessment
G RETURN:ALTYPE=2
;
; OBX9 - Comments
; One OBX for each comment
OBX9 S IEN=0 F S IEN=$O(^GMR(120.8,KEY,26,IEN)) Q:'+IEN D
. S ALRDATA=$G(^GMR(120.8,KEY,26,IEN,0)) G RETURN:ALRDATA=""
. ; Set up the static fields
. S X1=1_HLFS_"TX"_HLFS_"COMMENT"_HLFS
. S XX=$$XCN200^VDEFEL($P(ALRDATA,U,2)) ;34
. F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II)) ;34
. S $P(X1,HLFS,11)=RSLTSTA,$P(X1,HLFS,16)=XX ;34
. S $P(X1,HLFS,19)=$$TS^VDEFEL($P(ALRDATA,U)),X=$P(ALRDATA,U,3)
. S GMRAVUID=$$GETVUID^GMRAIAL1(120.826,1.5,X)
. S $P(X,HLCM,2)=$S(X="V":"VERIFIED",X="O":"OBSERVED",X="E":"ERRORED",1:"")
. S $P(X,HLCM)=+GMRAVUID,$P(X,HLCM,3)=$P(GMRAVUID,U,2)
. S $P(X1,HLFS,17)=X
. ;
. ; A comment may be more than one line
. S IEN1=0,VAL="" F S IEN1=$O(^GMR(120.8,KEY,26,IEN,2,IEN1)) Q:'+IEN1 D
. . S X=$$HL7RC^GMRAIAL1(^GMR(120.8,KEY,26,IEN,2,IEN1,0)),VAL=VAL_X_HLRP
. S:$E(VAL,$L(VAL))=HLRP VAL=$E(VAL,1,$L(VAL)-1)
. S OUTX=X1,$P(OUTX,HLFS,5)=VAL
. S S=S+1,OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
;
; Return to GMRAIAL1
RETURN Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRAIAL2 6452 printed Oct 16, 2024@17:40:17 Page 2
GMRAIAL2 ;BPOIFO/JG - BUILD HL7 ORU^R01 MESSAGE FOR ALLERGIES - PART 2 ; 17 Mar 2006 11:55 AM
+1 ;;4.0;Adverse Reaction Tracking;**22,23,34**;Mar 29, 1996
+2 ; Creates HL7 V2.4 ORU^R01 message for allergy updates & assessments
+3 ;
+4 ; This routine uses the following IAs:
+5 ; #4248 - VDEFEL calls (controlled)
+6 ; #3630 - VAFCQRY calls (controlled)
+7 ; #4531 - ZERO^PSN50P41 (supported)
+8 ; #2574 - $$CLASS2^PSNAPIS (supported)
+9 ;
+10 ; This routine is called as a subroutine by GMRAIAL1
+11 ;
+12 QUIT
+13 ;
ENTRY ; Entry point from GMRAIAL1
+1 ;
+2 ; Skip to OBX8 if doing an assessment
+3 if ALTYPE=2
GOTO OBX8
+4 ;
+5 ; OBX 1 - Reactant
OBX1 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"AGENT"_HLFS
+1 SET $PIECE(OUTX,HLFS,5)=$$HL7RC^GMRAIAL1($PIECE(ALRDATA,U,2))
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+2 SET X=$PIECE(SITEPARM,U,6)_HLCM_$PIECE(SITEPARM,U,5)_HLCM_"L"
SET $PIECE(OUTX,HLFS,15)=X
+3 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+4 ;
+5 ; OBX2 - Allergy Type
OBX2 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"ALLERGY TYPE"_HLFS
+1 SET X=$PIECE(ALRDATA,U,20)
SET VAL=X_HLCM
FOR I=1:1:$LENGTH(X)
Begin DoDot:1
+2 SET Y=$EXTRACT(X,I)
SET Y=$SELECT(Y="D":"DRUG",Y="F":"FOOD",Y="O":"OTHER",1:"")
+3 SET VAL=VAL_Y
if I<$LENGTH(X)
SET VAL=VAL_","
End DoDot:1
+4 SET VAL=VAL_HLCM_"L"
SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+5 SET X=$PIECE(SITEPARM,U,6)_HLCM_$PIECE(SITEPARM,U,5)_HLCM_"L"
SET $PIECE(OUTX,HLFS,15)=X
+6 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+7 ;
+8 ; OBX3 - GMR Allergy
+9 ; ALLERGIES FROM VA DRUG CLASS HAVE SPECIAL FORMAT FOR
+10 ; OBX-5
OBX3 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"GMR ALLERGY"_HLFS
+1 SET VAL=""
SET X=$PIECE(ALRDATA,U,3)
if X=""
GOTO OBX4
+2 IF X'["50.605"
Begin DoDot:1
+3 SET VAL=$PIECE($GET(@("^"_$PIECE(X,";",2)_$PIECE(X,";",1)_",0)")),U)
+4 IF VAL=""
DO ERR^VDEFREQ("No data in GMR Allergy file "_$PIECE(X,";",2)_$PIECE(X,";")_",0)")
SET ZTSTOP=1
QUIT
+5 IF X["PSDRUG"
SET GMRAVUID=$PIECE(X,";",1)_U_$PIECE(SITEPARM,U,6)_"_"_50
+6 IF '$TEST
Begin DoDot:2
+7 SET GMRAFILE=+$PIECE($PIECE(X,";",2),"(",2)
SET GMRAIENS=+X_","
+8 SET GMRAVUID=$$GETVUID^GMRAIAL1(GMRAFILE,.01,GMRAIENS,1)
End DoDot:2
+9 SET VAL=$PIECE(GMRAVUID,U)_HLCM_VAL_HLCM_$PIECE(GMRAVUID,U,2)
End DoDot:1
+10 IF X["50.605"
Begin DoDot:1
+11 SET GMRAIENS=$PIECE(X,";")
SET Y=$$CLASS2^PSNAPIS(GMRAIENS)
+12 SET GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
+13 SET VAL=$GET(VAL)_$PIECE(GMRAVUID,U)_HLCM_$PIECE(Y,U,2)_HLCM_$PIECE(GMRAVUID,U,2)_HLCM_$PIECE(Y,U)_HLCM_$PIECE(Y,U,2)_HLCM_$PIECE(SITEPARM,U,6)_"_50.605"
End DoDot:1
+14 if ZTSTOP
GOTO RETURN
+15 ;34
SET $PIECE(VAL,HLCM,2)=$$HL7RC^GMRAIAL1($PIECE(VAL,HLCM,2))
SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+16 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+17 ;
+18 ; OBX4 - List of drug ingredients
OBX4 if '$DATA(^GMR(120.8,KEY,2))
GOTO OBX5
+1 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"DRUG INGREDIENTS"_HLFS
+2 SET IEN1=0
SET VAL=""
FOR
SET IEN1=$ORDER(^GMR(120.8,KEY,2,IEN1))
if '+IEN1
QUIT
Begin DoDot:1
+3 SET Y=^GMR(120.8,KEY,2,IEN1,0)
SET GMRAVUID=$$GETVUID^GMRAIAL1(50.416,.01,Y_",",1)
+4 ;34 Gets zero node of ingredient entry from 50.416
DO ZERO^PSN50P41(Y,,,"GMRAING")
+5 ;34
SET X=$PIECE(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($PIECE(^TMP($JOB,"GMRAING",Y,.01),U))_HLCM_$PIECE(GMRAVUID,U,2)
SET VAL=VAL_X_HLRP
End DoDot:1
+6 SET VAL=$EXTRACT(VAL,1,$LENGTH(VAL)-1)
SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+7 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+8 ;
+9 ; OBX5 - Drug class
OBX5 if '$DATA(^GMR(120.8,KEY,3))
GOTO OBX6
+1 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"DRUG CLASSES"_HLFS
+2 SET IEN1=0
SET VAL=""
FOR
SET IEN1=$ORDER(^GMR(120.8,KEY,3,IEN1))
if '+IEN1
QUIT
Begin DoDot:1
+3 SET GMRAIENS=^GMR(120.8,KEY,3,IEN1,0)
SET X=$$CLASS2^PSNAPIS(GMRAIENS)
+4 SET GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
+5 ;34
SET VAL=$GET(VAL)_$PIECE(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($PIECE(X,U,2))_HLCM_$PIECE(GMRAVUID,U,2)_HLCM_$PIECE(X,U)_HLCM_$$HL7RC^GMRAIAL1($PIECE(X,U,2))_HLCM_$PIECE(SITEPARM,U,6)_"_50.605"_HLRP
End DoDot:1
+6 SET VAL=$EXTRACT(VAL,1,$LENGTH(VAL)-1)
SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+7 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+8 ;
+9 ; OBX6 - MECHANISM
OBX6 SET X=$PIECE(ALRDATA,U,14)
if X=""
GOTO OBX7
+1 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"MECHANISM"_HLFS
+2 SET GMRAVUID=$$GETVUID^GMRAIAL1(120.8,17,X)
+3 SET VAL=$PIECE(GMRAVUID,U)_HLCM_$SELECT(X="A":"ALLERGY",X="P":"PHARMACOLOGIC",X="U":"UNKNOWN",1:"")_HLCM_$PIECE(GMRAVUID,U,2)
+4 SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+5 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+6 ;
+7 ; OBX7 - Reaction
OBX7 SET IEN1=0
FOR
SET IEN1=$ORDER(^GMR(120.8,KEY,10,IEN1))
if '+IEN1
QUIT
Begin DoDot:1
+1 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"REACTION"_HLFS
+2 SET X=^GMR(120.8,KEY,10,IEN1,0)
SET GMRAVUID=""
+3 if $PIECE(X,U,2)'=""
SET GMRAVUID="^L"
+4 if $PIECE(X,U,2)=""
SET $PIECE(X,U,2)=$PIECE($GET(^GMRD(120.83,+X,0)),U)
+5 if GMRAVUID'="^L"
SET GMRAVUID=$$GETVUID^GMRAIAL1(120.83,.01,+X_",",1)
+6 ;34
SET VAL=$PIECE(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($PIECE(X,U,2))_HLCM_$PIECE(GMRAVUID,U,2)
+7 SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=RSLTSTA
+8 SET $PIECE(OUTX,HLFS,14)=$$TS^VDEFEL($PIECE(X,U,4))
+9 ;34
SET XX=$$XCN200^VDEFEL($PIECE(X,U,3))
+10 ;34
FOR II=2:1:7
SET $PIECE(XX,SEPC,II)=$$HL7RC^GMRAIAL1($PIECE(XX,SEPC,II))
+11 ;34
SET $PIECE(OUTX,HLFS,16)=XX
+12 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
End DoDot:1
if ZTSTOP
QUIT
+13 ;
+14 ; Skip assessment if allergy update
+15 if ALTYPE=1
GOTO OBX9
+16 ;
+17 ; OBX8 - Assessment
OBX8 SET S=S+1
SET OUTX=1_HLFS_"CE"_HLFS_"ASSESSMENT"_HLFS
+1 ;34
IF +ENTERR=1
SET VAL=HLCM_"ENTERED IN ERROR"_HLCM
GOTO OBX8A
+2 SET X=+$PIECE(ALRDATA,U,2)
SET GMRAVUID=$$GETVUID^GMRAIAL1(120.86,1,X)
+3 SET VAL=$PIECE(GMRAVUID,U)_HLCM_$SELECT(X=0:"NO KNOWN ALLERGIES",X=1:"YES",1:"")
+4 SET VAL=VAL_HLCM_$PIECE(GMRAVUID,U,2)
OBX8A ;34
SET $PIECE(OUTX,HLFS,5)=VAL
SET $PIECE(OUTX,HLFS,11)=$EXTRACT("FW",1+ENTERR)
+1 IF '+ENTERR
SET $PIECE(OUTX,HLFS,14)=$$TS^VDEFEL($PIECE(ALRDATA,U,4))
+2 ;Block added in 34
IF '+ENTERR
Begin DoDot:1
+3 SET XX=$$XCN200^VDEFEL($PIECE(ALRDATA,U,3))
+4 FOR II=2:1:7
SET $PIECE(XX,SEPC,II)=$$HL7RC^GMRAIAL1($PIECE(XX,SEPC,II))
+5 SET $PIECE(OUTX,HLFS,16)=XX
End DoDot:1
+6 SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
+7 ;
+8 ; Done if assessment
+9 if ALTYPE=2
GOTO RETURN
+10 ;
+11 ; OBX9 - Comments
+12 ; One OBX for each comment
OBX9 SET IEN=0
FOR
SET IEN=$ORDER(^GMR(120.8,KEY,26,IEN))
if '+IEN
QUIT
Begin DoDot:1
+1 SET ALRDATA=$GET(^GMR(120.8,KEY,26,IEN,0))
if ALRDATA=""
GOTO RETURN
+2 ; Set up the static fields
+3 SET X1=1_HLFS_"TX"_HLFS_"COMMENT"_HLFS
+4 ;34
SET XX=$$XCN200^VDEFEL($PIECE(ALRDATA,U,2))
+5 ;34
FOR II=2:1:7
SET $PIECE(XX,SEPC,II)=$$HL7RC^GMRAIAL1($PIECE(XX,SEPC,II))
+6 ;34
SET $PIECE(X1,HLFS,11)=RSLTSTA
SET $PIECE(X1,HLFS,16)=XX
+7 SET $PIECE(X1,HLFS,19)=$$TS^VDEFEL($PIECE(ALRDATA,U))
SET X=$PIECE(ALRDATA,U,3)
+8 SET GMRAVUID=$$GETVUID^GMRAIAL1(120.826,1.5,X)
+9 SET $PIECE(X,HLCM,2)=$SELECT(X="V":"VERIFIED",X="O":"OBSERVED",X="E":"ERRORED",1:"")
+10 SET $PIECE(X,HLCM)=+GMRAVUID
SET $PIECE(X,HLCM,3)=$PIECE(GMRAVUID,U,2)
+11 SET $PIECE(X1,HLFS,17)=X
+12 ;
+13 ; A comment may be more than one line
+14 SET IEN1=0
SET VAL=""
FOR
SET IEN1=$ORDER(^GMR(120.8,KEY,26,IEN,2,IEN1))
if '+IEN1
QUIT
Begin DoDot:2
+15 SET X=$$HL7RC^GMRAIAL1(^GMR(120.8,KEY,26,IEN,2,IEN1,0))
SET VAL=VAL_X_HLRP
End DoDot:2
+16 if $EXTRACT(VAL,$LENGTH(VAL))=HLRP
SET VAL=$EXTRACT(VAL,1,$LENGTH(VAL)-1)
+17 SET OUTX=X1
SET $PIECE(OUTX,HLFS,5)=VAL
+18 SET S=S+1
SET OUTX="OBX"_HLFS_OUTX
DO SAVE^GMRAIAL1
End DoDot:1
+19 ;
+20 ; Return to GMRAIAL1
RETURN QUIT