Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BSTSRPC

BSTSRPC.m

Go to the documentation of this file.
  1. BSTSRPC ;GDIT/HS/BEE - SNOMED Utilities - RPC Search ; 10 Aug 2012 9:24 AM
  1. ;;2.0;IHS STANDARD TERMINOLOGY;;Dec 01, 2016;Build 62
  1. ;
  1. Q
  1. ;
  1. ;
  1. ;Description
  1. ; Returns a list of SNOMED CT Terms matching the specified search string
  1. ;
  1. ;Input
  1. ; SEARCH - The string to search on
  1. ; PC - Return Parent/Children
  1. ;
  1. ;Output
  1. ; ^TMP("BSTSRPC") - Name of global (passed by reference) in which the data is stored.
  1. ;
  1. ;Variables Used
  1. ; UID - Unique TMP global subscript.
  1. ;
  1. N UID,BSTSII,SVAR,STS,II,%D,NMID
  1. ;
  1. S SEARCH=$TR(SEARCH,"|","^")
  1. S $P(SEARCH,U,5)=""
  1. S PC=$G(PC)
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BSTSRPC",UID))
  1. S SVAR=$NA(^TMP("BSTSRPC1",UID))
  1. K @DATA,@SVAR
  1. ;
  1. S BSTSII=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSRPC D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. D HDR
  1. ;
  1. ;Validate input
  1. I $G(SEARCH)="" G DONE
  1. ;
  1. ;Perform lookup
  1. S NMID=$P(SEARCH,U,3) S:NMID="" NMID=36
  1. S STS=$$SEARCH^BSTSAPI(SVAR,SEARCH)
  1. ;
  1. ;Output Results
  1. S II=0 F S II=$O(@SVAR@(II)) Q:II="" D
  1. . NEW PRBD,PRBT,CONC,DTS,FSND,FSNT,PRED,PRET,CHD
  1. . NEW ISA,ICD,SUB,SYN,MICD,D10,ISHDR,LAT,DFSTS,REPI
  1. . ;
  1. . ;Problem Description and Term
  1. . S PRBD=$G(@SVAR@(II,"PRB","DSC"))
  1. . S PRBT=$G(@SVAR@(II,"PRB","TRM"))
  1. . S CONC=$G(@SVAR@(II,"CON"))
  1. . S DTS=$G(@SVAR@(II,"DTS"))
  1. . S FSND=$G(@SVAR@(II,"FSN","DSC"))
  1. . S FSNT=$G(@SVAR@(II,"FSN","TRM"))
  1. . S PRED=$G(@SVAR@(II,"PRE","DSC"))
  1. . S PRET=$G(@SVAR@(II,"PRE","TRM"))
  1. . S ISHDR=$S(PRED=PRBD:"",1:"S")
  1. . S LAT=$S($G(@SVAR@(II,"LAT"))=1:1,1:0)
  1. . S DFSTS=$G(@SVAR@(II,"STS"))
  1. . S REPI=$S($G(@SVAR@(II,"EPI"))=1:1,1:0)
  1. . ;
  1. . ;ICD
  1. . S ICD="" I $D(@SVAR@(II,"ICD")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(@SVAR@(II,"ICD",ICNT)) Q:ICNT="" D
  1. ... NEW ICDE
  1. ... S ICDE=$G(@SVAR@(II,"ICD",ICNT,"COD"))
  1. ... S ICD=ICD_$S(ICD]"":$C(28),1:"")_ICDE
  1. . ;
  1. . ;ICD10
  1. . S D10=""
  1. . ;
  1. . ;Subsets
  1. . S SUB="" I $D(@SVAR@(II,"SUB")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(@SVAR@(II,"SUB",ICNT)) Q:ICNT="" D
  1. ... NEW SB
  1. ... S SB=$G(@SVAR@(II,"SUB",ICNT,"SUB"))
  1. ... S SUB=SUB_$S(SUB]"":$C(28),1:"")_SB
  1. . ;
  1. . ;Synonyms
  1. . S SYN=PRED_$C(29)_PRET_$C(29)_"Preferred"_$C(29)_"1" I $D(@SVAR@(II,"SYN")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(@SVAR@(II,"SYN",ICNT)) Q:ICNT="" D
  1. ... NEW TRM,DSC
  1. ... S TRM=$G(@SVAR@(II,"SYN",ICNT,"TRM"))
  1. ... S DSC=$G(@SVAR@(II,"SYN",ICNT,"DSC"))
  1. ... S SYN=SYN_$S(SYN]"":$C(28),1:"")_DSC_$C(29)_TRM_$C(29)_"Synonym"_$C(29)_2
  1. . ;
  1. . ;ISA
  1. . S ISA="" I $D(@SVAR@(II,"ISA")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(@SVAR@(II,"ISA",ICNT)) Q:ICNT="" D
  1. ... NEW DTS,CON,TRM,CIEN
  1. ... S DTS=$G(@SVAR@(II,"ISA",ICNT,"DTS")) Q:DTS=""
  1. ... S CON=$G(@SVAR@(II,"ISA",ICNT,"CON"))
  1. ... S TRM=$G(@SVAR@(II,"ISA",ICNT,"TRM"))
  1. ... S ISA=ISA_$S(ISA]"":$C(28),1:"")_DTS_$C(29)_CON_$C(29)_TRM
  1. ... ;
  1. ... ;BSTSv2.0;Added parents to expansion list
  1. ... Q:'PC
  1. ... S CIEN=$O(^BSTS(9002318.4,"D",NMID,DTS,"")) Q:CIEN=""
  1. ... I $$GET1^DIQ(9002318.4,CIEN_",",".03","I")'="P",$$GET1^DIQ(9002318.4,CIEN_",",".15","I")="" Q
  1. ... S SYN=SYN_$S(SYN]"":$C(28),1:"")_DTS_$C(29)_TRM_$C(29)_"Parent"_$C(29)_3
  1. . ;
  1. . ;BSTSv2.0;Added children to expansion list
  1. . ;Children
  1. . I PC S CHD="" I $D(@SVAR@(II,"CHD")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(@SVAR@(II,"CHD",ICNT)) Q:ICNT="" D
  1. ... NEW DTS,CON,TRM,CIEN
  1. ... S DTS=$G(@SVAR@(II,"CHD",ICNT,"DTS")) Q:DTS=""
  1. ... S CON=$G(@SVAR@(II,"CHD",ICNT,"CON"))
  1. ... S TRM=$G(@SVAR@(II,"CHD",ICNT,"TRM"))
  1. ... ;
  1. ... ;BSTSv2.0;Added parents to expansion list
  1. ... S CIEN=$O(^BSTS(9002318.4,"D",NMID,DTS,"")) Q:CIEN=""
  1. ... I $$GET1^DIQ(9002318.4,CIEN_",",".03","I")'="P",$$GET1^DIQ(9002318.4,CIEN_",",".15","I")="" Q
  1. ... S SYN=SYN_$S(SYN]"":$C(28),1:"")_DTS_$C(29)_TRM_$C(29)_"Child"_$C(29)_4
  1. . ;
  1. . S MICD=ICD
  1. . ;Save entry
  1. . S BSTSII=BSTSII+1,@DATA@(BSTSII)=PRBD_U_PRBT_U_PRED_U_PRET_U_CONC_U_DTS_U_FSND_U_FSNT_U_ISA
  1. . S @DATA@(BSTSII)=@DATA@(BSTSII)_U_ICD_U_SUB_U_D10_U_SYN_U_ISHDR_U_MICD_U_LAT_U_DFSTS_U_REPI_$C(30)
  1. ;
  1. DONE ;
  1. S BSTSII=BSTSII+1,@DATA@(BSTSII)=$C(31)
  1. Q
  1. ;
  1. USEARCH(DATA,SEARCH) ;EP - BSTS SNOMED UNIVERSE SEARCH
  1. ;
  1. ;BSTS*1.0*8;Moved to new routine to free up space
  1. D USEARCH^BSTSRPCU(.DATA,.SEARCH)
  1. Q
  1. ;
  1. ICD2SMD(DATA,INPUT) ;EP - BSTS ICD9 TO SNOMED
  1. ;
  1. ;Description
  1. ; Returns a list of SNOMED CT Terms matching the specified ICD9 code
  1. ;
  1. ;Input
  1. ; INPUT - "|" Delimited string
  1. ; [1] ICD9 Code
  1. ; [2] Subset(s) (Optional) - Include only concepts in these subsets
  1. ; (multiple subsets delimited by "~")
  1. ;
  1. ;Output
  1. ; ^TMP("BSTSRPC") - Name of global (passed by reference) in which the data is stored.
  1. ;
  1. ;Variables Used
  1. ; UID - Unique TMP global subscript.
  1. ;
  1. N UID,BSTSII,SVAR,STS,II,SUBSETS,SNAPDT,%D
  1. ;
  1. S INPUT=$G(INPUT,"")
  1. S INPUT=$TR(INPUT,"|","^")
  1. ;
  1. ;Strip off trailing "."
  1. S $P(INPUT,U)=$$TKO^BSTSUTIL($P(INPUT,U),".")
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BSTSRPC",UID))
  1. ;S SVAR=$NA(^TMP("BSTSRPC1",UID)) ;Switch to local
  1. K @DATA
  1. ;
  1. S BSTSII=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSRPC D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. D IHDR
  1. ;
  1. ;Validate input
  1. I $P(INPUT,U)="" G IDONE
  1. S SUBSETS=$P(INPUT,U,2) S:SUBSETS]"" SUBSETS="~"_SUBSETS_"~"
  1. S SNAPDT=$P(INPUT,U,3)
  1. ;
  1. ;Perform lookup - ICD9
  1. I $E($P(INPUT,U),1)'="?" S STS=$$ICD2SMD^BSTSAPI("SVAR",$P(INPUT,U)_"^BCIX^")
  1. ;
  1. ;Perform lookup - Text
  1. I $E($P(INPUT,U),1)="?" D
  1. . NEW STRING
  1. . S STRING=$E($P(INPUT,U),2,9999)
  1. . S STS=$$SEARCH^BSTSAPI("SVAR",STRING_"^F^^^^^BCIX")
  1. ;
  1. ;Output Results
  1. S II=0 F S II=$O(SVAR(II)) Q:II="" D
  1. . NEW CONC,DESC,PTERM,REL,SCHK,SUB,ICD
  1. . ;
  1. . ;Perform subset check to see it this Concept should be returned
  1. . S SCHK=0 I SUBSETS]"",$D(SVAR(II,"SUB")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(SVAR(II,"SUB",ICNT)) Q:ICNT="" D
  1. ... NEW SB
  1. ... S SB=$G(SVAR(II,"SUB",ICNT,"SUB"))
  1. ... I SUBSETS[("~"_SB_"~") S SCHK=1
  1. . I SUBSETS]"",'SCHK Q
  1. . ;
  1. . ;Get Concept ID
  1. . S CONC=$G(SVAR(II,"CON")) Q:CONC=""
  1. . ;
  1. . ;Get Description Id of Preferred Term
  1. . S DESC=$G(SVAR(II,"PRB","DSC")) Q:DESC=""
  1. . ;
  1. . ;Get Preferred Term
  1. . S PTERM=$G(SVAR(II,"PRB","TRM")) Q:PTERM=""
  1. . ;
  1. . ;ICD9
  1. . S ICD="" I $D(SVAR(II,"ICD")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(SVAR(II,"ICD",ICNT)) Q:ICNT="" D
  1. ... NEW ICDE
  1. ... S ICDE=$G(SVAR(II,"IC9",ICNT,"COD"))
  1. ... S ICD=ICD_$S(ICD]"":$C(28),1:"")_ICDE
  1. . ;
  1. . ;Initialize Relations Value
  1. . S REL=""
  1. . ;
  1. . ;Subsets
  1. . S SUB="" I $D(SVAR(II,"SUB")) D
  1. .. NEW ICNT
  1. .. S ICNT="" F S ICNT=$O(SVAR(II,"SUB",ICNT)) Q:ICNT="" D
  1. ... NEW SB
  1. ... S SB=$G(SVAR(II,"SUB",ICNT,"SUB"))
  1. ... S SUB=SUB_$S(SUB]"":$C(28),1:"")_SB
  1. . ;
  1. . ;Get ISA (Parents) first
  1. . I $D(SVAR(II,"ISA")) D
  1. .. NEW ICNT,PICD
  1. .. S ICNT="" F S ICNT=$O(SVAR(II,"ISA",ICNT)) Q:ICNT="" D
  1. ... NEW DTS,PDSC,PTRM,VR,STS,PCNC,SCHK
  1. ... ;
  1. ... ;Pull DTSId of Parent
  1. ... S DTS=$G(SVAR(II,"ISA",ICNT,"DTS")) Q:DTS=""
  1. ... ;
  1. ... ;Look up entry
  1. ... S STS=$$DTSLKP^BSTSAPI("VR",DTS_"^^^1")
  1. ... ;
  1. ... ;Perform subset check to see it this Concept should be returned
  1. ... S SCHK=0 I SUBSETS]"",$D(VR(1,"SUB")) D
  1. .... NEW ICNT
  1. .... S ICNT="" F S ICNT=$O(VR(1,"SUB",ICNT)) Q:ICNT="" D
  1. ..... NEW SB
  1. ..... S SB=$G(VR(1,"SUB",ICNT,"SUB"))
  1. ..... I SUBSETS[("~"_SB_"~") S SCHK=1
  1. ... I SUBSETS]"",'SCHK Q
  1. ... ;
  1. ... S PDSC=$G(VR(1,"PRE","DSC")) Q:PDSC=""
  1. ... S PTRM=$G(VR(1,"PRE","TRM")) Q:PTRM=""
  1. ... S PCNC=$G(VR(1,"CON")) Q:PCNC=""
  1. ... ;
  1. ... ;ICD9 - Parent
  1. ... S PICD="" I $D(VR(1,"IC9")) D
  1. .... NEW ICNT
  1. .... S ICNT="" F S ICNT=$O(VR(1,"IC9",ICNT)) Q:ICNT="" D
  1. ..... NEW ICDE
  1. ..... S ICDE=$G(VR(1,"IC9",ICNT,"COD"))
  1. ..... S PICD=PICD_$S(PICD]"":$C(26),1:"")_ICDE
  1. ... ;
  1. ... ;Set up output
  1. ... S REL=REL_$S(REL]"":$C(28),1:"")_"P"_$C(29)_PCNC_$C(29)_PDSC_$C(29)_PTRM_$C(29)_PICD
  1. . ;
  1. . ;Now get Children
  1. . I $D(SVAR(II,"CHD")) D
  1. .. NEW ICNT,CICD
  1. .. S ICNT="" F S ICNT=$O(SVAR(II,"CHD",ICNT)) Q:ICNT="" D
  1. ... NEW DTS,PDSC,PTRM,VR,STS,PCNC,SCHK
  1. ... ;
  1. ... ;Pull DTSId of Child
  1. ... S DTS=$G(SVAR(II,"CHD",ICNT,"DTS")) Q:DTS=""
  1. ... ;
  1. ... ;Look up entry
  1. ... S STS=$$DTSLKP^BSTSAPI("VR",DTS_"^^^1")
  1. ... ;
  1. ... ;Perform subset check to see it this Concept should be returned
  1. ... S SCHK=0 I SUBSETS]"",$D(VR(1,"SUB")) D
  1. .... NEW ICNT
  1. .... S ICNT="" F S ICNT=$O(VR(1,"SUB",ICNT)) Q:ICNT="" D
  1. ..... NEW SB
  1. ..... S SB=$G(VR(1,"SUB",ICNT,"SUB"))
  1. ..... I SUBSETS[("~"_SB_"~") S SCHK=1
  1. ... I SUBSETS]"",'SCHK Q
  1. ... ;
  1. ... S PDSC=$G(VR(1,"PRE","DSC")) Q:PDSC=""
  1. ... S PTRM=$G(VR(1,"PRE","TRM")) Q:PTRM=""
  1. ... S PCNC=$G(VR(1,"CON")) Q:PCNC=""
  1. ... ;
  1. ... ;ICD - Children
  1. ... S CICD="" I $D(VR(1,"IC9")) D
  1. .... NEW ICNT
  1. .... S ICNT="" F S ICNT=$O(VR(1,"IC9",ICNT)) Q:ICNT="" D
  1. ..... NEW ICDE
  1. ..... S ICDE=$G(VR(1,"IC9",ICNT,"COD"))
  1. ..... S CICD=CICD_$S(CICD]"":$C(26),1:"")_ICDE
  1. ... ;
  1. ... ;Set up output
  1. ... S REL=REL_$S(REL]"":$C(28),1:"")_"C"_$C(29)_PCNC_$C(29)_PDSC_$C(29)_PTRM_$C(29)_CICD
  1. . ;
  1. . ;Save entry
  1. . S BSTSII=BSTSII+1
  1. . S @DATA@(BSTSII)=CONC_U_DESC_U_PTERM_U_REL_U_SUB_U_ICD_$C(30)
  1. ;
  1. IDONE ;
  1. S BSTSII=BSTSII+1,@DATA@(BSTSII)=$C(31)
  1. Q
  1. ;
  1. IHDR ;
  1. NEW HDR
  1. S HDR="T00050CONCID^T00050DESC_ID^T00250PREF_TRM^T04096RELATIONS^T04096SUBSETS^T04096ICD9"
  1. S @DATA@(BSTSII)=HDR_$C(30)
  1. Q
  1. ;
  1. HDR ;
  1. NEW HDR
  1. S HDR="T00050PRB_DSC^T00250PRB_TRM^T00050PREF_DSC^T00250PREF_TRM^T00050CONCID^T00030DTSID^T00050FSN_DSC^T00250FSN_TRM"
  1. S HDR=HDR_"^T04096ISA^T04096ICD9^T04096SUBSETS^T0409610D^T04096SYNONYMS"
  1. S HDR=HDR_"^T00001ISA_SYN_HDR^T04096MAPPED_ICD^T00001PROMPT_LATERALITY^T00020DEFAULT_STATUS^T00001REQUIRE_EPISODICITY"
  1. S @DATA@(BSTSII)=HDR_$C(30)
  1. Q
  1. ;
  1. SUBSET(DATA,INPUT) ;EP - BSTS GET SUBSET LIST
  1. ;
  1. ;Description
  1. ; Returns a list of Subsets available to select from
  1. ;
  1. ;Input
  1. ; INPUT - P1 (Optional) - Namespace ID - Default to SNOMED US EXT (#36)
  1. ; - P2 (Optional) - LOCAL - Pass 1 to perform local listing, otherwise leave
  1. ; blank for remote listing
  1. ; - P3 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P4 (Optional) - IPL - Pass 1 to return only problem list subsets (SRCH*)
  1. ;
  1. ;Output
  1. ; ^TMP("BSTSRPC") - Name of global (passed by reference) in which the data is stored.
  1. ;
  1. ;Variables Used
  1. ; UID - Unique TMP global subscript.
  1. ;
  1. ;Always look LOCAL
  1. S $P(INPUT,"|",2)=1
  1. ;
  1. N UID,BSTSII,STS,II,VAR,IPL,%D
  1. ;
  1. S INPUT=$TR($G(INPUT),"|","^")
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BSTSRPC",UID))
  1. K @DATA
  1. ;
  1. S BSTSII=0
  1. S IPL=$P(INPUT,"^",4)
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSRPC D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S STS=$$SUBSET^BSTSAPI("VAR",$P(INPUT,U,1,3))
  1. ;
  1. ;Define header
  1. S @DATA@(0)="T04096SUBSET^T04096DISPLAY_SUBSETS"_$C(30)
  1. ;
  1. ;Loop through list and set up results
  1. S II="" F S II=$O(VAR(II)) Q:II="" D
  1. . ;
  1. . NEW DISPSB
  1. . ;
  1. . ;Filter for Integrated Problem List
  1. . I IPL,$E(VAR(II),1,4)'="SRCH" Q
  1. . S DISPSB=VAR(II) I $E(VAR(II),1,5)="SRCH " S DISPSB=$E(VAR(II),6,999)
  1. . ;
  1. . S BSTSII=BSTSII+1,@DATA@(BSTSII)=VAR(II)_U_DISPSB_$C(30)
  1. ;
  1. S BSTSII=BSTSII+1,@DATA@(BSTSII)=$C(31)
  1. Q
  1. ;
  1. CDSET(DATA,INPUT) ;EP - BSTS GET CODESETS
  1. ;
  1. ;Description
  1. ; Returns a list of Codesets available to select from
  1. ;
  1. ;Input
  1. ; INPUT - P1 (Optional) - LOCAL - Pass 1 to perform local listing, otherwise leave
  1. ; blank for remote listing
  1. ; - P2 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P3 (Optional) - Pass 1 to return codesets for the standalone search tool
  1. ;
  1. ; 10 ICD-9-CM
  1. ;X 32768 IHS
  1. ;X 32769 SNOMED CT to ICD-10-CM Old
  1. ;X 32770 ECLIPS
  1. ;X 32771 IHS VANDF
  1. ;X 32772 GMRA Signs Symptoms
  1. ;X 32773 GMRA Allergies with Maps
  1. ;X 35290 SNOMED CT US Ext to ICD-10-CM
  1. ;X 32774 IHS Med Route
  1. ; 1552 RxNorm R
  1. ; 36 SNOMED CT US Extension
  1. ; 30 SNOMED CT
  1. ; 5180 FDA UNII
  1. ;
  1. ;Output
  1. ; ^TMP("BSTSRPC") - Name of global (passed by reference) in which the data is stored.
  1. ;
  1. ;Variables Used
  1. ; UID - Unique TMP global subscript.
  1. ;
  1. N UID,BSTSII,STS,II,VAR,SA,%D
  1. ;
  1. S INPUT=$TR($G(INPUT),"|","^")
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BSTSRPC",UID))
  1. K @DATA
  1. ;
  1. S BSTSII=0
  1. S SA=$P(INPUT,"^",3)
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSRPC D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. S STS=$$CODESETS^BSTSAPI("VAR",$P(INPUT,U,1,2))
  1. ;
  1. ;Define header
  1. S @DATA@(0)="T00010CODE^T04096CODESET_NAME"_$C(30)
  1. ;
  1. ;Loop through list and set up results
  1. S II="" F S II=$O(VAR(II)) Q:II="" D
  1. . ;
  1. . NEW CODE,CODESET
  1. . ;
  1. . S CODE=$P(VAR(II),U)
  1. . S CODESET=$P(VAR(II),U,3)
  1. . ;
  1. . ;Filter for Standalone
  1. . I SA=1,CODE<32770,CODE>32667 Q
  1. . I SA=1,CODE=35290 Q
  1. . ;
  1. . ;Save entry
  1. . S BSTSII=BSTSII+1,@DATA@(BSTSII)=CODE_U_CODESET_$C(30)
  1. ;
  1. S BSTSII=BSTSII+1,@DATA@(BSTSII)=$C(31)
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. I $D(BSTSII),$D(DATA) S BSTSII=BSTSII+1,@DATA@(BSTSII)=$C(31)
  1. Q