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

BQILKSMD.m

Go to the documentation of this file.
  1. BQILKSMD ;GDIT/HS/BEE - SNOMED Utilities ; 10 Aug 2012 9:24 AM
  1. ;;2.3;ICARE MANAGEMENT SYSTEM;**3,4**;Apr 18, 2012;Build 66
  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. ;
  1. ;Output
  1. ; ^TMP("BQILKSMD") - 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,BQII,SVAR,STS,II
  1. ;
  1. S SEARCH=$TR(SEARCH,"|","^")
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQILKSMD",UID))
  1. S SVAR=$NA(^TMP("BQILKSER",UID))
  1. K @DATA,@SVAR
  1. ;
  1. S BQII=0
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BQILKSMD 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 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
  1. . NEW ISA,ICD9,SUB,SYN,MICD,D10,ISHDR
  1. . ;
  1. . ;Problem Description and Term
  1. . S PRBD=$G(@SVAR@(II,"PRB","DSC"))
  1. . S PRBT=$G(@SVAR@(II,"PRB","TRM"))
  1. . W !,II,?10,"PRBD: ",PRBD,"|",PRBT
  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. . ;
  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
  1. ... S DTS=$G(@SVAR@(II,"ISA",ICNT,"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. . ;ICD9
  1. . S ICD9="" 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 ICD
  1. ... S ICD=$G(@SVAR@(II,"ICD",ICNT,"COD"))
  1. ... S ICD9=ICD9_$S(ICD9]"":$C(28),1:"")_ICD
  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" 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"
  1. . ;
  1. . S MICD=ICD9
  1. . ;Save entry
  1. . S BQII=BQII+1,@DATA@(BQII)=PRBD_U_PRBT_U_CONC_U_DTS_U_FSND_U_FSNT_U_ISA
  1. . S @DATA@(BQII)=@DATA@(BQII)_U_ICD9_U_SUB_U_D10_U_SYN_U_ISHDR_U_MICD_$C(30)
  1. ;
  1. DONE ;
  1. S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q
  1. ;
  1. HDR ;
  1. NEW HDR
  1. S HDR="T00050PRB_DSC^T00250PRB_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"
  1. S @DATA@(BQII)=HDR_$C(30)
  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(BQII),$D(DATA) S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q