- GMRC101H ;SLC/DCM - SET UP HL-7 MESSAGE TO UPDATE OERR ORDERABLE ITEMS FILE WITH NEW CONSULT TYPE ;5/20/98 14:20
- ;;3.0;CONSULT/REQUEST TRACKING;**1,15**;DEC 27, 1997
- EN(ELC,RLECODE,ORDA,ORNAME,GMRCARRY,GMRCPRFX) ;entry point to set up HL-7 message to update orderable items file - file 101.43
- ;ELC=message type - MFN or UPD
- ;RLECODE=record level event code from table 180
- ;DA=IEN of procedure in ^ORD(101
- ;ORNAME=procedure name
- ;GMRCARRY=array of synonyms for procedure
- ;GMRCPRFX=prefix from ^ORD(101, i.e., "GMRCR " or "GMRCT "
- S MSH=$$MSH^GMRCHL7,$P(MSH,"|",3)=$S(GMRCPRFX="GMRCR ":"PROCEDURES",1:"CONSULTS"),$P(MSH,"|",9)="MFN"
- S MFI=$$MFI(RLECODE)
- S MFE=$$MFE(ELC,ORDA,ORNAME,GMRCPRFX)
- D ZSY(.GMRCARRY)
- D BUILD
- K HLQ,MFE,MSH,MFI,MSG,MSGND,ND,ND1,ND2,ZSY,SEP1,SEP2,SEP3,SEP4,SEP5
- Q
- BUILD ;build the HL-7 array into its export form
- S ND=1,MSG="GMRCMSG"
- S @(MSG_"("_ND_")")=MSH,ND=ND+1
- S @(MSG_"("_ND_")")=MFI,ND=ND+1
- S @(MSG_"("_ND_")")=MFE,ND=ND+1
- I $O(ZSY(0)) D
- .S ND1=0 F S ND1=$O(ZSY(ND1)) Q:ND1="" S @(MSG_"("_ND_")")=ZSY(ND1),ND=ND+1
- .K ND1
- .Q
- K ND
- Q
- ;
- MFI(MTP) ;set MFI HL-7 segment
- S MFI="MFI|123.3^GMRC PROCEDURE^99DD||"_MTP_"|||NE"
- Q MFI
- ;
- MFE(RSPLVL,ORXDA,GMRCPRNO,PFX) ;set MFE HL-7 segment
- N X
- S X="MFE|"_RSPLVL_"|||^^^"_ORXDA_"^"_GMRCPRNO_"^99PRC"
- Q X
- ZSY(ARRAY) ;set ZSY segment of the HL-7 segment; contains synonyms
- S ND1="",ND2=1
- F S ND1=$O(ARRAY(ND1)) Q:ND1="" S ZSY(ND2)="ZSY|"_ND2_"|"_ARRAY(ND1)_"|",ND2=ND2+1
- K ND,ND1
- Q
- SVC(SVCIEN,SVCNAME,EVCODE) ;format an HL-7 message that defines a new service
- ;SVCIEN=Service IEN from file 123.5
- ;SVCNAME=Service name, i.e., Medicine
- ;EVCODE=record level event code from HL-7 table 180
- K GMRCMSG
- S MSH=$$MSH^GMRCHL7,$P(MSH,"|",9)="MFN"
- S MFI="MFI|123.5^Request Services^99DD||"_$S(EVCODE="MUP":"UPD",1:"REP")_"|||NE"
- S MFE="MFE|"_EVCODE_"|||^^^"_SVCIEN_"^"_SVCNAME_"^99CON"
- I $L($O(^GMR(123.5,SVCIEN,2,"B",""))) D
- .S ND="",ND1=0 F S ND=$O(^GMR(123.5,SVCIEN,2,"B",ND)) Q:ND="" S ND1=ND1+1,GMRCARRY(ND1)=ND
- .D ZSY(.GMRCARRY)
- .Q
- D BUILD
- K GMRCARRY,ND,ND1,HLQ,MSG,MSH,MFI,MFE,SEP1,SEP2,SEP3,SEP4,SEP5,ZSY
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRC101H 2177 printed Jan 18, 2025@02:45:51 Page 2
- GMRC101H ;SLC/DCM - SET UP HL-7 MESSAGE TO UPDATE OERR ORDERABLE ITEMS FILE WITH NEW CONSULT TYPE ;5/20/98 14:20
- +1 ;;3.0;CONSULT/REQUEST TRACKING;**1,15**;DEC 27, 1997
- EN(ELC,RLECODE,ORDA,ORNAME,GMRCARRY,GMRCPRFX) ;entry point to set up HL-7 message to update orderable items file - file 101.43
- +1 ;ELC=message type - MFN or UPD
- +2 ;RLECODE=record level event code from table 180
- +3 ;DA=IEN of procedure in ^ORD(101
- +4 ;ORNAME=procedure name
- +5 ;GMRCARRY=array of synonyms for procedure
- +6 ;GMRCPRFX=prefix from ^ORD(101, i.e., "GMRCR " or "GMRCT "
- +7 SET MSH=$$MSH^GMRCHL7
- SET $PIECE(MSH,"|",3)=$SELECT(GMRCPRFX="GMRCR ":"PROCEDURES",1:"CONSULTS")
- SET $PIECE(MSH,"|",9)="MFN"
- +8 SET MFI=$$MFI(RLECODE)
- +9 SET MFE=$$MFE(ELC,ORDA,ORNAME,GMRCPRFX)
- +10 DO ZSY(.GMRCARRY)
- +11 DO BUILD
- +12 KILL HLQ,MFE,MSH,MFI,MSG,MSGND,ND,ND1,ND2,ZSY,SEP1,SEP2,SEP3,SEP4,SEP5
- +13 QUIT
- BUILD ;build the HL-7 array into its export form
- +1 SET ND=1
- SET MSG="GMRCMSG"
- +2 SET @(MSG_"("_ND_")")=MSH
- SET ND=ND+1
- +3 SET @(MSG_"("_ND_")")=MFI
- SET ND=ND+1
- +4 SET @(MSG_"("_ND_")")=MFE
- SET ND=ND+1
- +5 IF $ORDER(ZSY(0))
- Begin DoDot:1
- +6 SET ND1=0
- FOR
- SET ND1=$ORDER(ZSY(ND1))
- if ND1=""
- QUIT
- SET @(MSG_"("_ND_")")=ZSY(ND1)
- SET ND=ND+1
- +7 KILL ND1
- +8 QUIT
- End DoDot:1
- +9 KILL ND
- +10 QUIT
- +11 ;
- MFI(MTP) ;set MFI HL-7 segment
- +1 SET MFI="MFI|123.3^GMRC PROCEDURE^99DD||"_MTP_"|||NE"
- +2 QUIT MFI
- +3 ;
- MFE(RSPLVL,ORXDA,GMRCPRNO,PFX) ;set MFE HL-7 segment
- +1 NEW X
- +2 SET X="MFE|"_RSPLVL_"|||^^^"_ORXDA_"^"_GMRCPRNO_"^99PRC"
- +3 QUIT X
- ZSY(ARRAY) ;set ZSY segment of the HL-7 segment; contains synonyms
- +1 SET ND1=""
- SET ND2=1
- +2 FOR
- SET ND1=$ORDER(ARRAY(ND1))
- if ND1=""
- QUIT
- SET ZSY(ND2)="ZSY|"_ND2_"|"_ARRAY(ND1)_"|"
- SET ND2=ND2+1
- +3 KILL ND,ND1
- +4 QUIT
- SVC(SVCIEN,SVCNAME,EVCODE) ;format an HL-7 message that defines a new service
- +1 ;SVCIEN=Service IEN from file 123.5
- +2 ;SVCNAME=Service name, i.e., Medicine
- +3 ;EVCODE=record level event code from HL-7 table 180
- +4 KILL GMRCMSG
- +5 SET MSH=$$MSH^GMRCHL7
- SET $PIECE(MSH,"|",9)="MFN"
- +6 SET MFI="MFI|123.5^Request Services^99DD||"_$SELECT(EVCODE="MUP":"UPD",1:"REP")_"|||NE"
- +7 SET MFE="MFE|"_EVCODE_"|||^^^"_SVCIEN_"^"_SVCNAME_"^99CON"
- +8 IF $LENGTH($ORDER(^GMR(123.5,SVCIEN,2,"B","")))
- Begin DoDot:1
- +9 SET ND=""
- SET ND1=0
- FOR
- SET ND=$ORDER(^GMR(123.5,SVCIEN,2,"B",ND))
- if ND=""
- QUIT
- SET ND1=ND1+1
- SET GMRCARRY(ND1)=ND
- +10 DO ZSY(.GMRCARRY)
- +11 QUIT
- End DoDot:1
- +12 DO BUILD
- +13 KILL GMRCARRY,ND,ND1,HLQ,MSG,MSH,MFI,MFE,SEP1,SEP2,SEP3,SEP4,SEP5,ZSY
- +14 QUIT