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

PXRMTXIM.m

Go to the documentation of this file.
  1. PXRMTXIM ;SLC/PKR - Taxonomy import/create routines. ;13-Aug-2015 12:21;du
  1. ;;2.0;CLINICAL REMINDERS;**26,1005**;Feb 04, 2005;Build 23
  1. ;==========================================
  1. CRETAX(FLAGS,TXDATA,ERRMSG) ;Create a taxonomy based on the data in TXDATA.
  1. ;The following TXDATA nodes are required:
  1. ;NAME, CLASS, and SOURCE.
  1. ;The SPONSOR node is optional, it is a pointer to the Sponsor file.
  1. ;Codes to include in the taxonomy are specified as
  1. ;TXDATA("CODE",CODESYS,CODEP)=FMT^UID
  1. ;where CODESYS is one of the following: 10D, 10P, CPT, ICD, ICP, SCT.
  1. ;CODEP is either the code or its IEN, except for SCT where it must be
  1. ;the code. FMT is "E" if CODEP is the code and "I" if it is the
  1. ;pointer. UID is 1 if the code can be used in a dialog and 0 or null
  1. ;if it cannot.
  1. N CDATA,CODE,CODEP,CODESYS,CODESYST,DESC,IENS,FDA,FDAIEN,FMT,MSG
  1. N RESULT,SAVEOK,TC,TEMP,UID
  1. S DESC(1,0)="This taxonomy was automatically generated from "_TXDATA("SOURCE")_"."
  1. S IENS="+1,"
  1. S FDA(811.2,IENS,.01)=TXDATA("NAME")
  1. S FDA(811.2,IENS,2)="DESC"
  1. S FDA(811.2,IENS,100)=TXDATA("CLASS")
  1. I $D(TXDATA("SPONSOR")) S FDA(811.2,IENS,101)=TXDATA("SPONSOR")
  1. D UPDATE^DIE(FLAGS,"FDA","FDAIEN","MSG")
  1. I $D(MSG) D Q 0
  1. . N IC,EMSG,REF
  1. . S REF="MSG"
  1. . F IC=1:1 S REF=$Q(@REF) Q:REF="" S EMSG(IC)=REF_"="_@REF
  1. . D BMES^XPDUTL("Could not create taxonomy named "_TXDATA("NAME"))
  1. . D MES^XPDUTL(.EMSG)
  1. K ^TMP("PXRMCODES",$J)
  1. S CODESYST=""
  1. F S CODESYST=$O(TXDATA("CODE",CODESYST)) Q:CODESYST="" D
  1. . S CODEP=""
  1. . F S CODEP=$O(TXDATA("CODE",CODESYST,CODEP)) Q:CODEP="" D
  1. .. S CODESYS=CODESYST
  1. .. S TEMP=$G(TXDATA("CODE",CODESYST,CODEP))
  1. .. S FMT=$P(TEMP,U,1)
  1. .. S UID=+$P(TEMP,U,2)
  1. ..;DBIA #5747
  1. .. I (CODESYST="10D")!(CODESYS="ICD") S RESULT=$$ICDDX^ICDEX(CODEP,DT,CODESYS,FMT)
  1. .. I (CODESYST="10P")!(CODESYS="ICP") S RESULT=$$ICDOP^ICDEX(CODEP,DT,CODESYS,FMT)
  1. ..;DBIA #1995
  1. .. I CODESYST="CPC" S RESULT=$$CPT^ICPTCOD(CODEP)
  1. .. I CODESYST="CPT" S RESULT=$$CPT^ICPTCOD(CODEP) I $P(RESULT,U,5)="H" S CODESYS="CPC"
  1. .. I CODESYST="SCT" S RESULT=1_U_CODEP
  1. .. I +RESULT=-1 S ERRMSG(CODESYS,CODEP)=$P(RESULT,U,2) Q
  1. .. S CODE=$P(RESULT,U,2)
  1. .. K CDATA
  1. ..;DBIA #5679
  1. .. S RESULT=$$CSDATA^LEXU(CODE,CODESYS,DT,.CDATA)
  1. .. S TC=$P(CDATA("LEX",1),U,2)
  1. .. I TC="" S TC=CDATA("SYS",14,1)
  1. .. I TC="" S ERRMSG(CODESYS,CODE)="No description found." Q
  1. .. S ^TMP("PXRMCODES",$J,TC,CODESYS,CODE)=UID
  1. S SAVEOK=$$SAVETC^PXRMTXIM(FDAIEN(1))
  1. I SAVEOK D POSTSAVE^PXRMTXSM(FDAIEN(1))
  1. Q FDAIEN(1)
  1. ;
  1. ;==========================================
  1. IMP(IEN) ;Import codes into a taxonomy.
  1. N CLASS,DIR,LOADOK,NATOK,OPTION,PXRMTIEN,SAVED,X,Y
  1. S CLASS=$P(^PXD(811.2,IEN,100),U,1)
  1. S NATOK=$S(CLASS'="N":1,1:($G(PXRMINST)=1)&($G(DUZ(0))="@"))
  1. I 'NATOK D Q
  1. . D EN^DDIOL("Codes cannot be imported into national taxonomies!")
  1. . H 2
  1. . S VALMBCK="R"
  1. ;Present the menu of import choices.
  1. S DIR(0)="S^HF:CSV host file;"
  1. S DIR(0)=DIR(0)_"PA:CSV file paste;"
  1. S DIR(0)=DIR(0)_"TAX:Another taxonomy;"
  1. S DIR(0)=DIR(0)_"WEB:CSV file from a web site"
  1. S DIR("A")="Select the import method"
  1. S DIR("??")="^D HELP^PXRMTXIH"
  1. D ^DIR
  1. S OPTION=Y
  1. I OPTION="HF" D
  1. . S LOADOK=$$LOADHF("TAXIMP")
  1. . I LOADOK D
  1. .. S SAVED=$$IMPCSV(IEN,"TAXIMP")
  1. .. I SAVED D UPDCL(IEN,"from a host file")
  1. I OPTION="PA" D
  1. . D PASTECSV("TAXIMP")
  1. . S SAVED=$$IMPCSV(IEN,"TAXIMP")
  1. . I SAVED D UPDCL(IEN,"by pasting")
  1. I OPTION="TAX" D
  1. . D START^PXRMTXCE
  1. . S SAVED=$$IMPTAX(IEN,.PXRMTIEN)
  1. . I SAVED D UPDCL(IEN,"from other taxonomies")
  1. I OPTION="WEB" D
  1. . S LOADOK=$$LOADWEB("TAXIMP")
  1. . I LOADOK D
  1. .. S SAVED=$$IMPCSV(IEN,"TAXIMP")
  1. .. I SAVED D UPDCL(IEN,"from a web site")
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. ;==========================================
  1. IMPCSV(IEN,NODE) ;Import comma separated data into the Lexicon Term/Code
  1. ;multiple. The expected format is:
  1. ;LEXICON TERM/CODE,CODING SYSTEM,CODE 1,CODE 2, .... CODE N.
  1. I '$D(^TMP($J,NODE)) Q 0
  1. N ANS,CODE,CODESYS,CODESYSN,DUPL,IND,JND,KND,NCODES,NL,RESULT
  1. N SAVED,SAVEOK,TEMP,TERM,TEXT,TEXTOUT
  1. K ^TMP($J,"CC")
  1. S (IND,NL,SAVED)=0
  1. D EN^DDIOL("Starting the import process ... ")
  1. F S IND=$O(^TMP($J,NODE,IND)) Q:IND="" D
  1. . S TEMP=^TMP($J,NODE,IND,1)
  1. . I '$$ISCSV(TEMP) Q
  1. . S TERM=$P(TEMP,",",1)
  1. . I (TERM="")!(TERM="^") Q
  1. . S TERM=TERM_" (imported)"
  1. . I IND>1 S NL=NL+1,TEXTOUT(NL)=""
  1. . S NL=NL+1,TEXTOUT(NL)="Term/Code: "_TERM
  1. . S CODESYS=$P(TEMP,",",2)
  1. .;DBIA #5679
  1. . I '$D(CODESYSN(CODESYS)) S CODESYSN(CODESYS)=$P($$CSYS^LEXU(CODESYS),U,4)
  1. .;Make sure it is a valid Lexicon coding system.
  1. .;DBIA #5679
  1. . S RESULT=$$CSYS^LEXU(CODESYS)
  1. . I +RESULT=-1 D
  1. .. S TEXT=" Coding System: "_CODESYS_" not found in Lexicon."
  1. .. D EN^DDIOL(TEXT)
  1. . I +RESULT'=-1 D
  1. .. S TEXT=" Coding System: "_$P(RESULT,U,4)
  1. .. I '$D(NCODES(CODESYS)) S NCODES(CODESYS)=0
  1. . S NL=NL+1,TEXTOUT(NL)=TEXT
  1. . I +RESULT=-1 Q
  1. .;Make sure it is a valid taxonomy coding system.
  1. . I '$$VCODESYS^PXRMLEX(CODESYS) S NL=NL+1,TEXTOUT(NL)=" Warning taxonomies do not use "_CODESYS_" codes." Q
  1. . S NCODES=0
  1. . F JND=3:1:$L(TEMP,",") D
  1. .. S CODE=$P(TEMP,",",JND)
  1. .. S CODE=$TR(CODE," ","")
  1. .. I CODE="" Q
  1. .. S RESULT=$$PERCHK(CODE,CODESYS,TERM,.NCODES,.NL,.TEXTOUT)
  1. .. I +RESULT=-1 D LEXCHK(CODE,CODESYS,TERM,.NCODES,.NL,.TEXTOUT)
  1. .;Check for additional code only nodes in ^TMP.
  1. . S JND=1
  1. . F S JND=$O(^TMP($J,NODE,IND,JND)) Q:JND="" D
  1. .. S TEMP=^TMP($J,NODE,IND,JND)
  1. .. F KND=1:1:$L(TEMP,",") D
  1. ... S CODE=$P(TEMP,",",KND)
  1. ... S CODE=$TR(CODE," ","")
  1. ... I CODE="" Q
  1. ... S RESULT=$$PERCHK(CODE,CODESYS,TERM,.NCODES,.NL,.TEXTOUT)
  1. ... I +RESULT=-1 D LEXCHK(CODE,CODESYS,TERM,.NCODES,.NL,.TEXTOUT)
  1. S NL=NL+1,TEXTOUT(NL)=""
  1. ;Look for duplicate codes.
  1. S CODE=""
  1. F S CODE=$O(^TMP($J,"CC",CODE)) Q:CODE="" D
  1. . I ^TMP($J,"CC",CODE)>1 S DUPL(CODE)=^TMP($J,"CC",CODE)
  1. I $D(DUPL) D EN^DDIOL("This import contains duplicate codes.")
  1. I '$D(NCODES) D Q SAVED
  1. . D EN^DDIOL("There are no codes to import.")
  1. . S VALMBCK="R"
  1. . H 2
  1. ;
  1. S ANS=$$ASKYN^PXRMEUT("Y","Do you want to browse the list of codes")
  1. I ANS D
  1. . S NL=NL+1,TEXTOUT(NL)=""
  1. . S NL=NL+1,TEXTOUT(NL)="This import includes the following numbers of codes:"
  1. . S CODESYS="",TEMP=0
  1. . F S CODESYS=$O(NCODES(CODESYS)) Q:CODESYS="" D
  1. .. S NL=NL+1,TEXTOUT(NL)=CODESYSN(CODESYS)_": "_NCODES(CODESYS)
  1. .. S TEMP=TEMP+NCODES(CODESYS)
  1. . S NL=NL+1,TEXTOUT(NL)="Total number of codes: "_TEMP
  1. . ;If there are duplicates, list them.
  1. . I $D(DUPL) D
  1. .. S NL=NL+1,TEXTOUT(NL)=""
  1. .. S NL=NL+1,TEXTOUT(NL)="The following codes are included in more than one Term/Code:"
  1. .. S CODE=""
  1. .. F S CODE=$O(DUPL(CODE)) Q:CODE="" D
  1. ... S CODESYS=""
  1. ... F S CODESYS=$O(^TMP($J,"CC",CODE,CODESYS)) Q:CODESYS="" D
  1. .... S NL=NL+1,TEXTOUT(NL)=CODESYSN(CODESYS)_" code "_CODE_" is included "_DUPL(CODE)_" times."
  1. .... S NL=NL+1,TEXTOUT(NL)=" Term/Code:"
  1. .... S TERM=""
  1. .... F S TERM=$O(^TMP($J,"CC",CODE,CODESYS,TERM)) Q:TERM="" D
  1. ..... S NL=NL+1,TEXTOUT(NL)=" "_TERM
  1. ... S NL=NL+1,TEXTOUT(NL)=""
  1. .. S NL=NL+1,TEXTOUT(NL)="After importing the codes more details can be found in the taxonomy inquiry."
  1. . ;IHS/MSC/MGH Newed Variables
  1. . N IOSTBM,IORI
  1. . D BROWSE^DDBR("TEXTOUT","NR","List Of Codes To Be Imported")
  1. S SAVED=0
  1. S ANS=$$ASKYN^PXRMEUT("Y","Do you want to save the imported codes")
  1. I ANS D
  1. . M ^TMP("PXRMCODES",$J)=^TMP($J,"CODES")
  1. . S SAVEOK=$$SAVETC(IEN)
  1. . I SAVEOK D POSTSAVE^PXRMTXSM(IEN) S SAVED=1
  1. ;
  1. K ^TMP($J,NODE),^TMP($J,"CC"),^TMP($J,"CODES")
  1. S VALMBCK="R"
  1. Q SAVED
  1. ;
  1. ;==========================================
  1. IMPTAX(IEN,PXRMTIEN) ;Import codes from other taxonomies.
  1. ;Go through the list ask if some or all, if some then have to prompt
  1. ;for each term/code.
  1. N ANS,CODESYS,DIR,IMP,IND,JND,SAVED,SAVELIST,SAVEOK
  1. N TIEN,TERM,TEXT,TNAME,X,Y
  1. S DIR(0)="S^ALL:All codes;"
  1. S DIR(0)=DIR(0)_"SEL:Selected codes"
  1. S DIR("B")="ALL"
  1. S TIEN=0
  1. F S TIEN=$O(PXRMTIEN(TIEN)) Q:TIEN="" D
  1. . S TNAME=$P(^PXD(811.2,TIEN,0),U,1)
  1. . D EN^DDIOL("Ready to import codes from taxonomy "_TNAME)
  1. . D ^DIR
  1. . S ANS=Y
  1. . S IND=0
  1. . F S IND=+$O(^PXD(811.2,TIEN,20,IND)) Q:IND=0 D
  1. .. S TERM=^PXD(811.2,TIEN,20,IND,0)
  1. .. S JND=0
  1. .. F S JND=+$O(^PXD(811.2,TIEN,20,IND,1,JND)) Q:JND=0 D
  1. ... S CODESYS=$P(^PXD(811.2,TIEN,20,IND,1,JND,0),U,1)
  1. ... S IMP=$S(ANS="SEL":0,1:1)
  1. ... I ANS="SEL" D
  1. .... S TEXT(1)=""
  1. .... S TEXT(2)="Import codes from:"
  1. .... S TEXT(3)=" Term/Code - "_TERM
  1. .... S TEXT(4)=" Coding system - "_CODESYS
  1. .... D EN^DDIOL(.TEXT)
  1. .... S IMP=$$ASKYN^PXRMEUT("Y","Import","","")
  1. ... I IMP S SAVELIST(TIEN,TERM,CODESYS)=""
  1. S SAVED=0,TIEN=""
  1. F S TIEN=$O(SAVELIST(TIEN)) Q:TIEN="" D
  1. . K ^TMP("PXRMCODES",$J)
  1. . S TERM=""
  1. . F S TERM=$O(SAVELIST(TIEN,TERM)) Q:TERM="" D
  1. .. S CODESYS=""
  1. .. F S CODESYS=$O(SAVELIST(TIEN,TERM,CODESYS)) Q:CODESYS="" D
  1. ... M ^TMP("PXRMCODES",$J,TERM,CODESYS)=^PXD(811.2,TIEN,20,"ATCC",TERM,CODESYS)
  1. . S SAVEOK=$$SAVETC(IEN)
  1. . I SAVEOK D POSTSAVE^PXRMTXSM(IEN) S SAVED=1
  1. K ^TMP("PXRMCODES",$J)
  1. Q SAVED
  1. ;
  1. ;==========================================
  1. ISCSV(LINE) ;Verify that LINE is in CSV format with a least 3 pieces of
  1. ;data.
  1. I $L(LINE)=0 Q 0
  1. N ISCSV
  1. S ISCSV=$S($L(LINE,",")>2:1,1:0)
  1. I 'ISCSV D
  1. . N TEXT
  1. . S TEXT(1)=""
  1. . S TEXT(2)="The following line is not in CSV format and cannot be processed:"
  1. . S TEXT(3)=" "_LINE
  1. . D EN^DDIOL(.TEXT)
  1. . H 1
  1. Q ISCSV
  1. ;
  1. ;==========================================
  1. LEXCHK(CODE,CODESYS,TERM,NCODES,NL,TEXTOUT) ;Use $$TAX^LEX10CS
  1. ;to determine if code is a partial code that expands to a list of
  1. ;codes. Add valid codes to the list.
  1. D LEXCHK^BPXRMEXT(CODE,CODESYS,TERM,.NCODES,.NL,.TEXTOUT)
  1. Q
  1. ;
  1. ;==========================================
  1. LOADHF(NODEOUT) ;Load the CSV host file into ^TMP.
  1. ;The name of the host file should have a ".CSV" extension.
  1. N FILE,GBL,LHF,PATH,TEMP
  1. S TEMP=$$GETEHF^PXRMEXHF("CSV")
  1. I TEMP="" Q 0
  1. S PATH=$P(TEMP,U,1),FILE=$P(TEMP,U,2)
  1. ;Load the host file into ^TMP.
  1. K ^TMP($J,"HFCSV")
  1. S GBL="^TMP($J,""HFCSV"",1)"
  1. S GBL=$NA(@GBL)
  1. ;Load the file contents into ^TMP.
  1. S LHF=$$FTG^%ZISH(PATH,FILE,GBL,3)
  1. I LHF=0 D EN^DDIOL("The host file load failed") H 2 K ^TMP($J,"HFCSV") Q 0
  1. D RBLCKHF("HFCSV",NODEOUT)
  1. K ^TMP($J,"HFCSV")
  1. Q 1
  1. ;
  1. ;==========================================
  1. LOADWEB(NODEOUT) ;Load the CSV file from a web site into ^TMP
  1. N DIR,HDR,IND,JND,NL1,NL2,RESULT,TEXT,URL,X,Y
  1. S DIR(0)="F^10:245"
  1. S DIR("A")="Input the url for the CSV file"
  1. D ^DIR
  1. I (Y="")!(Y=U) Q 0
  1. S URL=Y
  1. S Y=$$LOW^XLFSTR(Y)
  1. I $E(Y,1,5)="https" D Q 0
  1. . D EN^DDIOL("The https protocol is not supported.")
  1. ;Load the file contents into ^TMP.
  1. K ^TMP($J,NODEOUT),^TMP($J,"WEBCSV")
  1. ;DBIA #5553
  1. S RESULT=$$GETURL^XTHC10(URL,10,"^TMP($J,""WEBCSV"")",.HDR)
  1. I $P(RESULT,U,1)'=200 D Q 0
  1. . S TEXT="Could not load the csv file: "
  1. . S TEXT=TEXT_"Error "_$P(RESULT,U,1)_" "_$P(RESULT,U,2)
  1. . D EN^DDIOL(.TEXT) H 2
  1. . K ^TMP($J,"WEBCSV")
  1. D RBLCKWEB("WEBCSV",NODEOUT)
  1. K ^TMP($J,"WEBCSV")
  1. Q 1
  1. ;
  1. ;==========================================
  1. PASTECSV(NODE) ;Paste the CSV file.
  1. D PASTECSV^BPXRMEXT(NODE)
  1. Q
  1. ;
  1. ;==========================================
  1. PERCHK(CODE,CODESYS,TERM,NCODES,NL,TEXTOUT) ;Use $$PERIOD^LEXU
  1. ;to verify a code is valid and add valid codes to the list.
  1. N PDATA,RESULT
  1. ;DBIA #5679
  1. S RESULT=$$PERIOD^LEXU(CODE,CODESYS,.PDATA)
  1. I +RESULT=-1 Q RESULT
  1. S NCODES=NCODES+1
  1. S NL=NL+1,TEXTOUT(NL)=$J(NCODES,5)_". "_CODE
  1. S ^TMP($J,"CODES",TERM,CODESYS,CODE)=""
  1. I '$D(^TMP($J,"CC",CODE,CODESYS,TERM)) D
  1. . S ^TMP($J,"CC",CODE,CODESYS,TERM)=""
  1. . S ^TMP($J,"CC",CODE)=$G(^TMP($J,"CC",CODE))+1
  1. . S NCODES(CODESYS)=NCODES(CODESYS)+1
  1. Q RESULT
  1. ;
  1. ;==========================================
  1. RBLCKHF(NODEIN,NODEOUT) ;FTG^%ZISH breaks lines at 255 characters. This could
  1. ;put a code across two lines. Format the ^TMP array so this does not
  1. ;happen.
  1. N CHAR,IND,JND,KND,L1,NL1,NL2,TEMP
  1. K ^TMP($J,"NODEOUT")
  1. S IND="",NL1=0
  1. F S IND=+$O(^TMP($J,NODEIN,IND)) Q:IND=0 D
  1. . S TEMP=^TMP($J,NODEIN,IND),NL1=NL1+1
  1. . I '$D(^TMP($J,NODEIN,IND,"OVF")) S ^TMP($J,NODEOUT,NL1,1)=TEMP Q
  1. . S L1="",NL2=0
  1. . F JND=1:1:$L(TEMP) D
  1. .. S CHAR=$E(TEMP,JND)
  1. .. S L1=L1_CHAR
  1. .. I $L(L1)>230,CHAR="," S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1,L1=""
  1. .;Check for overflow nodes.
  1. . S JND=0
  1. . F S JND=+$O(^TMP($J,NODEIN,IND,"OVF",JND)) Q:JND=0 D
  1. .. S TEMP=^TMP($J,NODEIN,IND,"OVF",JND)
  1. .. F KND=1:1:$L(TEMP) D
  1. ... S CHAR=$E(TEMP,KND)
  1. ... S L1=L1_CHAR
  1. ... I $L(L1)>230,CHAR="," S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1,L1=""
  1. . I $L(L1)>0 S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1
  1. Q
  1. ;
  1. ;==========================================
  1. RBLCKWEB(NODEIN,NODEOUT) ;GETURL^XTHC10 breaks lines at 245 characters. This
  1. ;could break a line into two lines. Format the ^TMP array so this does
  1. ;not happen.
  1. N CHAR,IND,JND,KND,L1,LEN,NL1,NL2,TEMP
  1. K ^TMP($J,"NODEOUT")
  1. S IND="",NL1=0
  1. F S IND=+$O(^TMP($J,NODEIN,IND)) Q:IND=0 D
  1. . S TEMP=^TMP($J,NODEIN,IND),LEN=$L(TEMP)
  1. . I LEN=0 S NL1=NL1+1,^TMP($J,NODEOUT,NL1,1)=TEMP Q
  1. . S NL1=NL1+1
  1. . I $D(^TMP($J,NODEIN,IND))<11 S ^TMP($J,NODEOUT,NL1,1)=$TR(TEMP,$C(13),"") Q
  1. . S L1="",NL2=0
  1. . F JND=1:1:$L(TEMP) D
  1. .. S CHAR=$E(TEMP,JND)
  1. .. I CHAR=$C(13) Q
  1. .. S L1=L1_CHAR
  1. .. I $L(L1)>230,CHAR="," S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1,L1=""
  1. .;Check for overflow nodes.
  1. . S JND=0
  1. . F S JND=+$O(^TMP($J,NODEIN,IND,JND)) Q:JND=0 D
  1. .. S TEMP=^TMP($J,NODEIN,IND,JND)
  1. .. F KND=1:1:$L(TEMP) D
  1. ... S CHAR=$E(TEMP,KND)
  1. ... I CHAR=$C(13) Q
  1. ... S L1=L1_CHAR
  1. ... I $L(L1)>230,CHAR="," S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1,L1=""
  1. . I $L(L1)>0 S NL2=NL2+1,^TMP($J,NODEOUT,NL1,NL2)=L1
  1. Q
  1. ;
  1. ;==========================================
  1. SAVETC(IEN) ;Save the term/code.
  1. N FDA,IENS,IND,MSG,SUCCESS,TC
  1. S IND=0,SUCCESS=1,TC=""
  1. F S TC=$O(^TMP("PXRMCODES",$J,TC)) Q:TC="" D
  1. .;If the Term/Code already exists skip it.
  1. . I $D(^PXD(811.2,IEN,20,"B",TC)) Q
  1. . S IND=IND+1
  1. . S IENS="+"_IND_","_IEN_","
  1. . S FDA(811.23,IENS,.01)=TC
  1. I '$D(FDA(811.23)) Q SUCCESS
  1. D UPDATE^DIE("","FDA","","MSG")
  1. I $D(MSG) D
  1. . D FULL^VALM1
  1. . D MES^XPDUTL("Unable to store Term/Code "_TC)
  1. . D AWRITE^PXRMUTIL("MSG") H 1
  1. . S SUCCESS=0
  1. Q SUCCESS
  1. ;
  1. ;==========================================
  1. UPDCL(IEN,TEXT) ;Add an entry to the change log.
  1. N IENS,FDA,FDAIEN,MSG,WPTMP
  1. S IENS="+1,"_IEN_","
  1. S FDA(811.21,IENS,.01)=$$NOW^XLFDT
  1. S FDA(811.21,IENS,1)=DUZ
  1. S WPTMP(1,1,1)=" Import codes "_TEXT_"."
  1. S FDA(811.21,IENS,2)="WPTMP(1,1)"
  1. D UPDATE^DIE("S","FDA","FDAIEN","MSG")
  1. K DA,DDSFILE
  1. S DA=FDAIEN(1),DA(1)=IEN
  1. S DDSFILE=811.2,DDSFILE(1)=811.21
  1. S DR="[PXRM TAXONOMY CHANGE LOG]"
  1. D ^DDS
  1. Q
  1. ;