- INHUT2 ; cmi/flag/maw - 16 Oct 98 15:11 GIS utilities ; [ 05/09/2002 11:06 AM ]
- ;;3.01;BHL IHS Interfaces with GIS;**1**;JUN 01, 2002
- ;COPYRIGHT 1991-2000 SAIC
- ;
- Q
- ;
- ISNAMSPC(X) ;is the value properly name spaces according to current
- ;GIS specifications
- N NAMSPC,PATMAT,RON,ROF
- I " HL HL7 DGM TEST "[(" "_$P(X," ")_" ") Q 1
- S RON=$P(DIJC("RON")," ",2),ROF=$P(DIJC("ROF")," ",2)
- S @("RON="_RON),@("ROF="_ROF)
- ;Modified for IHS
- W RON_"Invalid Name-space!"_ROF S Y=.01 Q 0
- ;D MESS^UTWRD(RON_"Invalid Name-space!"_ROF) S Y=.01 Q 0
- ;
- ISNS(X) ;is the input value properly name spaced
- ;input:
- ; X --> input value of the .01 field
- ; "Grandfather" existing Transactions and Destinations
- ;cmi/flag/maw modified for namespace type
- N INAME,INDAD S INDAD=0
- F I=1:1 S INAME=$T(EXCLUDE+I) Q:INAME'[";;" D Q:INDAD
- .I $P(INAME,";;",2)=X S INDAD=1
- Q:INDAD 1
- Q:$P(X," ")="" 0
- ;Q $O(^INRHNS("B",$P(X," "),""))
- I $O(^INRHNS("B",$P(X," "),""))="" Q 0
- I $O(^INRHNS("B",$P(X," ",3),""))="" Q 0
- I $O(^INRHNS("ADS",$P(X," ",2),""))="" Q 0
- Q 1
- ;
- EXCLUDE ;List of existing entries to exclude from namespace requirement
- ;;ANATOMIC PATHOLOGY
- ;;MASTER FILE NOTIFICATION
- ;;IV ORDER
- ;;LAB ORDER
- ;;PATIENT APPOINTMENT
- ;;PRESCRIPTION
- ;;RAD ORDER
- ;;RADIOLOGY PROCEDURE
- ;;INCOMING ACK
- ;
- MHC(X) ;Return number embedded in string value of MHCMIS .01 field
- ;1-Called from ISNS to validate entry to Int. Destination File.
- ;2-Called from MHCMIS transmitter (INHVMTR) to identify correct dest.
- ;3-Called from Input Transform of MHCMIS SITE PARAMTER FILE
- ; INPUT: X=String value of .01 field
- ; RETURN: Number embedded in the string
- ;Allow the basic MHCMIS entry for Int. Dest. File.
- ;Basic MHCMIS entry corrosponds to IEN 1 of MHCMIS SITE PARM FILE
- I X="MHCMIS" Q 1
- ;Force other MHCMIS entries to include a number
- S OK=$TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ()/ ","")
- Q OK
- ;
- MSG ;message display for Interface Name Space control
- N HON,HOF,INI,DWLRF,DWLB,DY
- S HON=$P(DIJC("H")," ",2),HOF=$P(DIJC("L")," ",2)
- S @("HON="_HON),@("HOF="_HOF)
- S INI="",DY=$Y-1,DWLRF="INS",DWLB="2^"_DY_"^10^78",DWL="SWZF"
- S @DWLRF@(1)=" Valid Name-spaces:"
- F I=2:1 S INI=$O(^INRHNS("B",INI)) Q:INI="" D
- .S @DWLRF@(I)=" "_HOF_INI_HON,@DWLRF@(I,0)=""
- D ^DWL W HOF
- Q
- ;
- UNIQUE(X) ;See if ID is being used already
- ; Input:
- ; X --> input value of Unique ID
- ; Returns 0-ID does not exist
- ; 1-ID exists
- Q '$D(^INRHT("ID",X,DA))
- UNQ(DA) ;Set unique ID Called from DD 4000,.01
- ; DA - IEN
- N INCNT,INID,%VOL,X,DR,DIE,INLAST
- N DG,DB,DIL,DLB,DIE17,DGO,DOW,DNM,DQ,DIEZ,D0,D1,D2,D3,D4,D5,D6,D7,X
- I $P(^INRHT(DA,0),U,4)="" D
- .S %VOL=$G(^%ZOSF("VOL")),%VOL=$E(%VOL,$L(%VOL))
- .S:%VOL="" %VOL="?"
- .S INLAST=%VOL_999
- .S INID=$O(^INRHT("ID",INLAST),-1),INCNT=+$E(INID,2,4)+1
- .S INCNT=%VOL_$$PAD(INCNT,3,0)
- .S DR=".04///^S X=INCNT",DIE="^INRHT("
- .D ^DIE
- Q
- CONV ;Conversion routine to add unique id's
- N DA
- S DA=0 F S DA=$O(^INRHT(DA)) Q:'DA S $P(^INRHT(DA,0),U,4)=""
- S DA=0 F S DA=$O(^INRHT(DA)) Q:'DA D UNQ(DA)
- Q
- PAD(X,Y,Z) ;Pad front with whatever you want to pad with
- ; input: X - String you are padding
- ; Y - Pad to this size
- ; Z - What to PAD it with
- N INHPAD
- S INHPAD="",$P(INHPAD,Z,Y+1)="",X=$E(X,1,Y)
- Q $E(INHPAD,1,Y-$L(X))_X
- FMHELP(DP,D) ;Fileman help utility
- ; DP - File/Sub file Number
- ; D - Field Number
- N DZ,DQ,DV,DG,%,%X,Z,X,DIE2,DL,Y,DIC,DIE,DU
- S (DIC,DIE)=$G(^DIC(DP,0,"GL")),DIC(0)="E"
- S (X,DZ)="?",DQ=1,DQ(1)=$G(^DD(DP,D,0))
- ; If not a multiple
- I '$P(DQ(1),U,2) S DV=$P(DQ(1),U,2)
- S DU=$P(DQ(1),U,3)
- D Q^DIE2
- Q
- PARSEG(INSRCTL,INSEGNM) ; Parse a segment
- ; INPUT:
- ; INSRCTL (required):
- ; Array containing the raw segment data to be parsed
- ; located under the HL7 namespaced node represented by
- ; the second parameter.
- ; ex. INSRCTL("MSH")=...
- ; INSEGNM HL7 segment name (required):
- ; Valid HL7 segment name to be used to identifiy which
- ; node of the input array will be parsed.
- ; ex. PARSEG^INHUT2(.INSRCTL,"MSH")
- ; where INSRCTL("MSH")="MSH^\|~&^^^^..."
- ;
- ; OUTPUTS:
- ; INSRCTL("Segment Name"_"Field number"): Field value found in segment
- ; NOTE: This output is raw HL7 format, not FileMan/CHCS format.
- ;
- Q:'$L($G(INSEGNM))
- Q:'$D(INSRCTL(INSEGNM))
- N INDELIM,INCOMP,INSUBCOM,INREP,INOFFSET,INSEG
- S INDELIM=$G(INSCTRL("INDELIM")),INCOMP=$G(INSRCTL("INCOMP"))
- S INSUBCOM=$G(INSRCTL("INSUBCOM")),INREP=$G(INSRCTL("INREP"))
- ;If delimiters are not defined get them
- I INDELIM=""!(INCOMP="")!(INSUBCOM="")!(INREP="") D ;
- . I $D(INSRCTL("MSH")) S INDELIM=$E(INSRCTL("MSH"),4),INCOMP=$E(INSRCTL("MSH"),5),INSUBCOM=$E(INSRCTL("MSH"),6),INREP=$E(INSRCTL("MSH"),7)
- . E S INDELIM=$$FIELD^INHUT,INCOMP=$$COMP^INHUT,INSUBCOM=$$SUBCOMP^INHUT,INREP=$$REP^INHUT
- . S INSRCTL("INDELIM")=INDELIM,INSRCTL("INCOMP")=INCOMP,INSRCTL("INSUBCOM")=INSUBCOM,INSRCTL("INREP")=INREP
- Q:INDELIM=""!(INCOMP="")
- ;If MSH, field numbering is a tiny bit different.
- S INOFFSET=$S(INSEGNM="MSH":2,1:1),INFIELDS=$L(INSRCTL(INSEGNM),INDELIM)
- M INSEG=INSRCTL(INSEGNM)
- F INFLD=INOFFSET:1:INFIELDS S INSRCTL(INSEGNM_INFLD)=$$PIECE^INHU(.INSEG,INDELIM,.INFLD)
- D:$D(INSRCTL(INSEGNM))>9 ;
- . F I=1:1 Q:'$D(INSRCTL(INSEGNM,I)) D
- . . S INFIELDS=$L(INSRCTL(INSEGNM,I),INDELIM)+INFLD
- . . F INFLD=INFLD:1:INFIELDS S INSRCTL(INSEGNM_INFLD)=$$PIECE^INHU(.INSEG,INDELIM,.INFLD)
- M INSRCTL(INSEGNM)=INSEG
- Q
- GETSEG(UIF,INSEGNM,INSTANCE) ; Get segment from UIF
- ; Called by S INSRCTL("MSH")=$$GETSEG^INHUT(12345,"MSH")
- ;
- ; INPUTS:
- ; UIF (required): The IEN of the UIF from which to extract the segment.
- ; INSEGNM (required):
- ; The valid HL7 segment name to be used to identify
- ; which node of the UIF is requested.
- ; INSTANCE (optional, default=1)
- ; The instance of the segment desired.
- ;
- ; OUTPUT:
- ; 0 If segment not found,
- ; 1 if segment found in message,
- ;
- ; INSRECTL(INSEGNM)
- ; Returns the Segment requested. (With overflow) in the INSRCTL array.
- ;
- Q:$G(UIF)="" 0 Q:$G(INSEGNM)="" 0
- N INLINE,INDATA,INCR,INCNT
- K INSRCTL(INSEGNM)
- S INLINE=0,INCNT=0 S:'$G(INSTANCE) INSTANCE=1
- F D GETLINE^INHOU(UIF,.INLINE,.INDATA,0,.INCR) Q:'$D(INDATA) D
- . I $E(INDATA,1,3)=INSEGNM S INCNT=INCNT+1 M:INCNT=INSTANCE INSRCTL(INSEGNM)=INDATA Q
- Q (0<$D(INSRCTL(INSEGNM)))
- BPSTAT(INBKGNM,INSRVR) ;-determine status of GIS background process, given name
- ;Input: INBKGNM - name of background process to determine status
- ; INSRVR - server number (not currently supported)
- ;Output: Status message string of given background process name
- ; piece 1 => status (1 - running ; 0 - not running)
- ; piece 2 => status message
- ; piece 3 => last run update ($H format)
- ; piece 4 => last time a message was processed ($H format)
- ; piece 5 => ien of background process
- ;
- N INBKGIEN,INBKGST,INBGKSTR
- I $G(INBKGNM)="" Q "0^Process name not specified"
- S INBKGIEN=$O(^INTHPC("B",INBKGNM,0))
- I 'INBKGIEN Q "0^Unknown Process"
- I '$P($G(^INTHPC(INBKGIEN,0)),U,2) Q "0^Process inactive^^^"_INBKGIEN
- S INBKGST=$$VER^INHB(INBKGIEN)
- S INBKGSTR=$S(INBKGST=1:"1^Running",INBKGST=-1:"0^Signaled to Terminate",1:"0^Not Running")
- S INBKGSTR=INBKGSTR_U_$P($G(^INRHB("RUN",INBKGIEN)),U,1)_U_$P($G(^INRHB("RUN",INBKGIEN)),U,3)_U_INBKGIEN
- Q INBKGSTR
- ;
- INHUT2 ; cmi/flag/maw - 16 Oct 98 15:11 GIS utilities ; [ 05/09/2002 11:06 AM ]
- +1 ;;3.01;BHL IHS Interfaces with GIS;**1**;JUN 01, 2002
- +2 ;COPYRIGHT 1991-2000 SAIC
- +3 ;
- +4 QUIT
- +5 ;
- ISNAMSPC(X) ;is the value properly name spaces according to current
- +1 ;GIS specifications
- +2 NEW NAMSPC,PATMAT,RON,ROF
- +3 IF " HL HL7 DGM TEST "[(" "_$PIECE(X," ")_" ")
- QUIT 1
- +4 SET RON=$PIECE(DIJC("RON")," ",2)
- SET ROF=$PIECE(DIJC("ROF")," ",2)
- +5 SET @("RON="_RON)
- SET @("ROF="_ROF)
- +6 ;Modified for IHS
- +7 WRITE RON_"Invalid Name-space!"_ROF
- SET Y=.01
- QUIT 0
- +8 ;D MESS^UTWRD(RON_"Invalid Name-space!"_ROF) S Y=.01 Q 0
- +9 ;
- ISNS(X) ;is the input value properly name spaced
- +1 ;input:
- +2 ; X --> input value of the .01 field
- +3 ; "Grandfather" existing Transactions and Destinations
- +4 ;cmi/flag/maw modified for namespace type
- +5 NEW INAME,INDAD
- SET INDAD=0
- +6 FOR I=1:1
- SET INAME=$TEXT(EXCLUDE+I)
- IF INAME'[";;"
- QUIT
- Begin DoDot:1
- +7 IF $PIECE(INAME,";;",2)=X
- SET INDAD=1
- End DoDot:1
- IF INDAD
- QUIT
- +8 IF INDAD
- QUIT 1
- +9 IF $PIECE(X," ")=""
- QUIT 0
- +10 ;Q $O(^INRHNS("B",$P(X," "),""))
- +11 IF $ORDER(^INRHNS("B",$PIECE(X," "),""))=""
- QUIT 0
- +12 IF $ORDER(^INRHNS("B",$PIECE(X," ",3),""))=""
- QUIT 0
- +13 IF $ORDER(^INRHNS("ADS",$PIECE(X," ",2),""))=""
- QUIT 0
- +14 QUIT 1
- +15 ;
- EXCLUDE ;List of existing entries to exclude from namespace requirement
- +1 ;;ANATOMIC PATHOLOGY
- +2 ;;MASTER FILE NOTIFICATION
- +3 ;;IV ORDER
- +4 ;;LAB ORDER
- +5 ;;PATIENT APPOINTMENT
- +6 ;;PRESCRIPTION
- +7 ;;RAD ORDER
- +8 ;;RADIOLOGY PROCEDURE
- +9 ;;INCOMING ACK
- +10 ;
- MHC(X) ;Return number embedded in string value of MHCMIS .01 field
- +1 ;1-Called from ISNS to validate entry to Int. Destination File.
- +2 ;2-Called from MHCMIS transmitter (INHVMTR) to identify correct dest.
- +3 ;3-Called from Input Transform of MHCMIS SITE PARAMTER FILE
- +4 ; INPUT: X=String value of .01 field
- +5 ; RETURN: Number embedded in the string
- +6 ;Allow the basic MHCMIS entry for Int. Dest. File.
- +7 ;Basic MHCMIS entry corrosponds to IEN 1 of MHCMIS SITE PARM FILE
- +8 IF X="MHCMIS"
- QUIT 1
- +9 ;Force other MHCMIS entries to include a number
- +10 SET OK=$TRANSLATE(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ()/ ","")
- +11 QUIT OK
- +12 ;
- MSG ;message display for Interface Name Space control
- +1 NEW HON,HOF,INI,DWLRF,DWLB,DY
- +2 SET HON=$PIECE(DIJC("H")," ",2)
- SET HOF=$PIECE(DIJC("L")," ",2)
- +3 SET @("HON="_HON)
- SET @("HOF="_HOF)
- +4 SET INI=""
- SET DY=$Y-1
- SET DWLRF="INS"
- SET DWLB="2^"_DY_"^10^78"
- SET DWL="SWZF"
- +5 SET @DWLRF@(1)=" Valid Name-spaces:"
- +6 FOR I=2:1
- SET INI=$ORDER(^INRHNS("B",INI))
- IF INI=""
- QUIT
- Begin DoDot:1
- +7 SET @DWLRF@(I)=" "_HOF_INI_HON
- SET @DWLRF@(I,0)=""
- End DoDot:1
- +8 DO ^DWL
- WRITE HOF
- +9 QUIT
- +10 ;
- UNIQUE(X) ;See if ID is being used already
- +1 ; Input:
- +2 ; X --> input value of Unique ID
- +3 ; Returns 0-ID does not exist
- +4 ; 1-ID exists
- +5 QUIT '$DATA(^INRHT("ID",X,DA))
- UNQ(DA) ;Set unique ID Called from DD 4000,.01
- +1 ; DA - IEN
- +2 NEW INCNT,INID,%VOL,X,DR,DIE,INLAST
- +3 NEW DG,DB,DIL,DLB,DIE17,DGO,DOW,DNM,DQ,DIEZ,D0,D1,D2,D3,D4,D5,D6,D7,X
- +4 IF $PIECE(^INRHT(DA,0),U,4)=""
- Begin DoDot:1
- +5 SET %VOL=$GET(^%ZOSF("VOL"))
- SET %VOL=$EXTRACT(%VOL,$LENGTH(%VOL))
- +6 IF %VOL=""
- SET %VOL="?"
- +7 SET INLAST=%VOL_999
- +8 SET INID=$ORDER(^INRHT("ID",INLAST),-1)
- SET INCNT=+$EXTRACT(INID,2,4)+1
- +9 SET INCNT=%VOL_$$PAD(INCNT,3,0)
- +10 SET DR=".04///^S X=INCNT"
- SET DIE="^INRHT("
- +11 DO ^DIE
- End DoDot:1
- +12 QUIT
- CONV ;Conversion routine to add unique id's
- +1 NEW DA
- +2 SET DA=0
- FOR
- SET DA=$ORDER(^INRHT(DA))
- IF 'DA
- QUIT
- SET $PIECE(^INRHT(DA,0),U,4)=""
- +3 SET DA=0
- FOR
- SET DA=$ORDER(^INRHT(DA))
- IF 'DA
- QUIT
- DO UNQ(DA)
- +4 QUIT
- PAD(X,Y,Z) ;Pad front with whatever you want to pad with
- +1 ; input: X - String you are padding
- +2 ; Y - Pad to this size
- +3 ; Z - What to PAD it with
- +4 NEW INHPAD
- +5 SET INHPAD=""
- SET $PIECE(INHPAD,Z,Y+1)=""
- SET X=$EXTRACT(X,1,Y)
- +6 QUIT $EXTRACT(INHPAD,1,Y-$LENGTH(X))_X
- FMHELP(DP,D) ;Fileman help utility
- +1 ; DP - File/Sub file Number
- +2 ; D - Field Number
- +3 NEW DZ,DQ,DV,DG,%,%X,Z,X,DIE2,DL,Y,DIC,DIE,DU
- +4 SET (DIC,DIE)=$GET(^DIC(DP,0,"GL"))
- SET DIC(0)="E"
- +5 SET (X,DZ)="?"
- SET DQ=1
- SET DQ(1)=$GET(^DD(DP,D,0))
- +6 ; If not a multiple
- +7 IF '$PIECE(DQ(1),U,2)
- SET DV=$PIECE(DQ(1),U,2)
- +8 SET DU=$PIECE(DQ(1),U,3)
- +9 DO Q^DIE2
- +10 QUIT
- PARSEG(INSRCTL,INSEGNM) ; Parse a segment
- +1 ; INPUT:
- +2 ; INSRCTL (required):
- +3 ; Array containing the raw segment data to be parsed
- +4 ; located under the HL7 namespaced node represented by
- +5 ; the second parameter.
- +6 ; ex. INSRCTL("MSH")=...
- +7 ; INSEGNM HL7 segment name (required):
- +8 ; Valid HL7 segment name to be used to identifiy which
- +9 ; node of the input array will be parsed.
- +10 ; ex. PARSEG^INHUT2(.INSRCTL,"MSH")
- +11 ; where INSRCTL("MSH")="MSH^\|~&^^^^..."
- +12 ;
- +13 ; OUTPUTS:
- +14 ; INSRCTL("Segment Name"_"Field number"): Field value found in segment
- +15 ; NOTE: This output is raw HL7 format, not FileMan/CHCS format.
- +16 ;
- +17 IF '$LENGTH($GET(INSEGNM))
- QUIT
- +18 IF '$DATA(INSRCTL(INSEGNM))
- QUIT
- +19 NEW INDELIM,INCOMP,INSUBCOM,INREP,INOFFSET,INSEG
- +20 SET INDELIM=$GET(INSCTRL("INDELIM"))
- SET INCOMP=$GET(INSRCTL("INCOMP"))
- +21 SET INSUBCOM=$GET(INSRCTL("INSUBCOM"))
- SET INREP=$GET(INSRCTL("INREP"))
- +22 ;If delimiters are not defined get them
- +23 ;
- IF INDELIM=""!(INCOMP="")!(INSUBCOM="")!(INREP="")
- Begin DoDot:1
- +24 IF $DATA(INSRCTL("MSH"))
- SET INDELIM=$EXTRACT(INSRCTL("MSH"),4)
- SET INCOMP=$EXTRACT(INSRCTL("MSH"),5)
- SET INSUBCOM=$EXTRACT(INSRCTL("MSH"),6)
- SET INREP=$EXTRACT(INSRCTL("MSH"),7)
- +25 IF '$TEST
- SET INDELIM=$$FIELD^INHUT
- SET INCOMP=$$COMP^INHUT
- SET INSUBCOM=$$SUBCOMP^INHUT
- SET INREP=$$REP^INHUT
- +26 SET INSRCTL("INDELIM")=INDELIM
- SET INSRCTL("INCOMP")=INCOMP
- SET INSRCTL("INSUBCOM")=INSUBCOM
- SET INSRCTL("INREP")=INREP
- End DoDot:1
- +27 IF INDELIM=""!(INCOMP="")
- QUIT
- +28 ;If MSH, field numbering is a tiny bit different.
- +29 SET INOFFSET=$SELECT(INSEGNM="MSH":2,1:1)
- SET INFIELDS=$LENGTH(INSRCTL(INSEGNM),INDELIM)
- +30 MERGE INSEG=INSRCTL(INSEGNM)
- +31 FOR INFLD=INOFFSET:1:INFIELDS
- SET INSRCTL(INSEGNM_INFLD)=$$PIECE^INHU(.INSEG,INDELIM,.INFLD)
- +32 ;
- IF $DATA(INSRCTL(INSEGNM))>9
- Begin DoDot:1
- +33 FOR I=1:1
- IF '$DATA(INSRCTL(INSEGNM,I))
- QUIT
- Begin DoDot:2
- +34 SET INFIELDS=$LENGTH(INSRCTL(INSEGNM,I),INDELIM)+INFLD
- +35 FOR INFLD=INFLD:1:INFIELDS
- SET INSRCTL(INSEGNM_INFLD)=$$PIECE^INHU(.INSEG,INDELIM,.INFLD)
- End DoDot:2
- End DoDot:1
- +36 MERGE INSRCTL(INSEGNM)=INSEG
- +37 QUIT
- GETSEG(UIF,INSEGNM,INSTANCE) ; Get segment from UIF
- +1 ; Called by S INSRCTL("MSH")=$$GETSEG^INHUT(12345,"MSH")
- +2 ;
- +3 ; INPUTS:
- +4 ; UIF (required): The IEN of the UIF from which to extract the segment.
- +5 ; INSEGNM (required):
- +6 ; The valid HL7 segment name to be used to identify
- +7 ; which node of the UIF is requested.
- +8 ; INSTANCE (optional, default=1)
- +9 ; The instance of the segment desired.
- +10 ;
- +11 ; OUTPUT:
- +12 ; 0 If segment not found,
- +13 ; 1 if segment found in message,
- +14 ;
- +15 ; INSRECTL(INSEGNM)
- +16 ; Returns the Segment requested. (With overflow) in the INSRCTL array.
- +17 ;
- +18 IF $GET(UIF)=""
- QUIT 0
- IF $GET(INSEGNM)=""
- QUIT 0
- +19 NEW INLINE,INDATA,INCR,INCNT
- +20 KILL INSRCTL(INSEGNM)
- +21 SET INLINE=0
- SET INCNT=0
- IF '$GET(INSTANCE)
- SET INSTANCE=1
- +22 FOR
- DO GETLINE^INHOU(UIF,.INLINE,.INDATA,0,.INCR)
- IF '$DATA(INDATA)
- QUIT
- Begin DoDot:1
- +23 IF $EXTRACT(INDATA,1,3)=INSEGNM
- SET INCNT=INCNT+1
- IF INCNT=INSTANCE
- MERGE INSRCTL(INSEGNM)=INDATA
- QUIT
- End DoDot:1
- +24 QUIT (0<$DATA(INSRCTL(INSEGNM)))
- BPSTAT(INBKGNM,INSRVR) ;-determine status of GIS background process, given name
- +1 ;Input: INBKGNM - name of background process to determine status
- +2 ; INSRVR - server number (not currently supported)
- +3 ;Output: Status message string of given background process name
- +4 ; piece 1 => status (1 - running ; 0 - not running)
- +5 ; piece 2 => status message
- +6 ; piece 3 => last run update ($H format)
- +7 ; piece 4 => last time a message was processed ($H format)
- +8 ; piece 5 => ien of background process
- +9 ;
- +10 NEW INBKGIEN,INBKGST,INBGKSTR
- +11 IF $GET(INBKGNM)=""
- QUIT "0^Process name not specified"
- +12 SET INBKGIEN=$ORDER(^INTHPC("B",INBKGNM,0))
- +13 IF 'INBKGIEN
- QUIT "0^Unknown Process"
- +14 IF '$PIECE($GET(^INTHPC(INBKGIEN,0)),U,2)
- QUIT "0^Process inactive^^^"_INBKGIEN
- +15 SET INBKGST=$$VER^INHB(INBKGIEN)
- +16 SET INBKGSTR=$SELECT(INBKGST=1:"1^Running",INBKGST=-1:"0^Signaled to Terminate",1:"0^Not Running")
- +17 SET INBKGSTR=INBKGSTR_U_$PIECE($GET(^INRHB("RUN",INBKGIEN)),U,1)_U_$PIECE($GET(^INRHB("RUN",INBKGIEN)),U,3)_U_INBKGIEN
- +18 QUIT INBKGSTR
- +19 ;