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

BSTSDTS0.m

Go to the documentation of this file.
  1. BSTSDTS0 ;GDIT/HS/BEE-Standard Terminology DTS Calls/Processing ; 5 Nov 2012 9:53 AM
  1. ;;2.0;IHS STANDARD TERMINOLOGY;;Dec 01, 2016;Build 62
  1. ;
  1. Q
  1. ;
  1. CNCSR(OUT,BSTSWS) ;EP - DTS4 Search Call - Concept Lookup
  1. ;
  1. N II,STS,SEARCH,STYPE,MAX,DTSID,NMID
  1. N BSTRT,BSCNT,SLIST,DLIST,RES,RCNT,CNT,ST
  1. ;
  1. S SEARCH=$G(BSTSWS("SEARCH"))
  1. S STYPE=$G(BSTSWS("STYPE"))
  1. S SLIST=$NA(^TMP("BSTSPDET",$J)) ;Sort List
  1. S DLIST=$NA(^TMP("BSTSCMCL",$J)) ;DTS Ret List
  1. K @SLIST,@DLIST,@OUT
  1. ;
  1. ;Determine max to ret
  1. S MAX=$G(BSTSWS("MAXRECS")) S:MAX="" MAX=25
  1. S BSTRT=+$G(BSTSWS("BCTCHRC")) S:BSTRT=0 BSTRT=1
  1. S BSCNT=+$G(BSTSWS("BCTCHCT")) S:BSCNT=0 BSCNT=MAX
  1. S NMID=$G(BSTSWS("NAMESPACEID")) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. ;
  1. ;Perform Lookup on Conc Id
  1. S STS=$$CNCSR^BSTSCMCL(.BSTSWS,.RES) I $G(BSTSWS("DEBUG")) W !!,STS
  1. ;
  1. ;Sort results (should only be one)
  1. S DTSID="" F S DTSID=$O(@DLIST@(DTSID)) Q:DTSID="" S @SLIST@(@DLIST@(DTSID),DTSID)=""
  1. ;
  1. ;Loop through results and retrieve det
  1. S II="",RCNT=0 F S II=$O(@SLIST@(II),-1) Q:II="" D Q:RCNT
  1. . S DTSID="" F S DTSID=$O(@SLIST@(II,DTSID)) Q:DTSID="" D Q:RCNT
  1. .. ;
  1. .. N STATUS,CONC,ERSLT,SNAPDT
  1. .. ;
  1. .. ;Update entry
  1. .. S BSTSWS("DTSID")=DTSID
  1. .. ;
  1. .. ;Change snapshot date
  1. .. S SNAPDT=$$DTCHG^BSTSUTIL(DT,2)_".0001"
  1. .. S SNAPDT=$$FMTE^BSTSUTIL(SNAPDT)
  1. .. S BSTSWS("SNAPDT")=SNAPDT
  1. .. ;
  1. .. ;Clear result file
  1. .. K @DLIST
  1. .. ;
  1. .. ;Get Detail for concept
  1. .. S STATUS=$$DETAIL^BSTSCMCL(.BSTSWS,.ERSLT)
  1. .. I $G(BSTSWS("DEBUG")) W !!,"Detail Call Status: ",STATUS
  1. .. ;
  1. .. ;File Detail
  1. .. S STATUS=$$UPDATE(NMID)
  1. .. I $G(BSTSWS("DEBUG")) W !!,"Update Call Status: ",STATUS
  1. .. ;
  1. .. ;Look again to see if concept logged
  1. .. S CONC=$$CONC(DTSID,.BSTSWS,1,1)
  1. .. I CONC]"" D Q
  1. ... I CONC'=BSTSWS("SEARCH") Q
  1. ... S RCNT=$G(RCNT)+1,@OUT@(RCNT)=CONC_U_DTSID
  1. ;
  1. Q STS
  1. ;
  1. UPDATE(NMID,ROUT) ;EP - Add/Update Concept and Term(s)
  1. ;
  1. ;Update UNII
  1. I $G(NMID)=5180 Q $$UUPDATE^BSTSDTS1(NMID,$G(ROUT))
  1. ;
  1. ;Update RxNorm
  1. I $G(NMID)=1552 Q $$RUPDATE^BSTSDTS1(NMID,$G(ROUT))
  1. ;
  1. ;This update section only applies to SNOMED
  1. I $G(NMID)'=36 Q $$SUPDATE^BSTSDTS3(NMID,$G(ROUT))
  1. ;
  1. N GL,CONCDA,BSTSC,INMID,ERROR,TCNT,I,CVRSN,ST,NROUT,TLIST,STYPE,RTR,SVOUT
  1. ;
  1. S GL=$NA(^TMP("BSTSCMCL",$J,1))
  1. S ROUT=$G(ROUT,"")
  1. ;
  1. ;Look for Conc Id
  1. I $P($G(@GL@("CONCEPTID")),U)="" Q 0
  1. ;
  1. ;Look for existing entry
  1. I $G(@GL@("DTSID"))="" Q 0
  1. S CONCDA=$O(^BSTS(9002318.4,"D",NMID,@GL@("DTSID"),""))
  1. ;
  1. ;Pull internal Code Set ID
  1. S INMID=$O(^BSTS(9002318.1,"B",NMID,"")) Q:INMID="" "0"
  1. ;
  1. ;Pull the current ver
  1. S CVRSN=$$GET1^DIQ(9002318.1,INMID_",",.04,"I")
  1. ;
  1. ;BSTS*1.0*8;Save Replacement
  1. D REPL^BSTSRPT(CONCDA,GL)
  1. ;
  1. ;Handle retired concepts
  1. I CONCDA]"",'$$RET^BSTSDTS3(CONCDA,CVRSN,GL) Q 0
  1. ;
  1. ;None found - create new entry
  1. I CONCDA="" S CONCDA=$$NEWC()
  1. ;
  1. ;Verify entry found/created
  1. I +CONCDA<0 Q 0
  1. ;
  1. ;Pull internal Code Set ID
  1. S INMID=$O(^BSTS(9002318.1,"B",NMID,"")) Q:INMID="" "0"
  1. ;
  1. ;Pull current version
  1. S CVRSN=$$GET1^DIQ(9002318.1,INMID_",",.04,"I")
  1. ;
  1. ;Get Rev Out
  1. S NROUT=$P(@GL@("CONCEPTID"),U,3) S:NROUT="" NROUT=ROUT
  1. S SVOUT=NROUT S SVOUT=$S(SVOUT]"":$$DTS2FMDT^BSTSUTIL(NROUT,1),1:"@")
  1. ;
  1. ;Set up top level concept fields
  1. S BSTSC(9002318.4,CONCDA_",",.02)=$P(@GL@("CONCEPTID"),U) ;Concept ID
  1. S BSTSC(9002318.4,CONCDA_",",.08)=@GL@("DTSID") ;DTS ID
  1. S BSTSC(9002318.4,CONCDA_",",.07)=INMID ;Code Set
  1. S BSTSC(9002318.4,CONCDA_",",.03)="N"
  1. S BSTSC(9002318.4,CONCDA_",",.05)=$$DTS2FMDT^BSTSUTIL($P(@GL@("CONCEPTID"),U,2),1)
  1. S BSTSC(9002318.4,CONCDA_",",.06)=SVOUT
  1. S BSTSC(9002318.4,CONCDA_",",.11)="N"
  1. S BSTSC(9002318.4,CONCDA_",",.13)="N"
  1. S BSTSC(9002318.4,CONCDA_",",.04)=CVRSN
  1. S BSTSC(9002318.4,CONCDA_",",.12)=DT
  1. ;BSTS*1.0*8;Reset new field
  1. S BSTSC(9002318.4,CONCDA_",",.15)="@"
  1. S BSTSC(9002318.4,CONCDA_",",1)=$G(@GL@("FSN",1))
  1. ;
  1. ;Save ISA
  1. I $D(@GL@("ISA"))>1 D
  1. . ;
  1. . N ISACT
  1. . S ISACT="" F S ISACT=$O(@GL@("ISA",ISACT)) Q:ISACT="" D
  1. .. ;
  1. .. ;Save/update each ISA entry
  1. .. ;
  1. .. ;First see if IsA code saved
  1. .. N DAISA,DA,IENS,DTSID,ISACD,NEWISA,DIC,Y,X,DLAYGO
  1. .. S ISACD=$P($G(@GL@("ISA",ISACT,0)),U) Q:ISACD=""
  1. .. S (NEWISA,DAISA)=$O(^BSTS(9002318.4,"D",NMID,ISACD,""))
  1. .. ;
  1. .. ;Not found - add partial entry to concept file
  1. .. I DAISA="" S DAISA=$$NEWC()
  1. .. S BSTSC(9002318.4,DAISA_",",.08)=$G(ISACD)
  1. .. I NEWISA="" S BSTSC(9002318.4,DAISA_",",.03)="P"
  1. .. S BSTSC(9002318.4,DAISA_",",.07)=INMID ;Code Set
  1. .. S BSTSC(9002318.4,DAISA_",",.04)=CVRSN ;Version
  1. .. S BSTSC(9002318.4,DAISA_",",.11)="N" ;Up to Date
  1. .. S BSTSC(9002318.4,DAISA_",",.12)=DT ;Update date
  1. .. S BSTSC(9002318.4,DAISA_",",1)=$G(@GL@("ISA",ISACT,1))
  1. .. ;
  1. .. ;Now add IsA pointer in current conc entry
  1. .. S DA(1)=CONCDA
  1. .. S DIC(0)="L",DIC="^BSTS(9002318.4,"_DA(1)_",5,",X=DAISA
  1. .. S DLAYGO=9002318.45 D ^DIC I +Y<0 Q
  1. .. ;
  1. .. ;Save additional IsA fields
  1. .. S DA(1)=CONCDA,DA=+Y,IENS=$$IENS^DILF(.DA)
  1. .. S BSTSC(9002318.45,IENS,".02")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("ISA",ISACT,1,0)),U,2))
  1. ;
  1. ;Save Children (subconcepts)
  1. I $D(@GL@("SUBC"))>1 D
  1. . ;
  1. . N SUBCCT
  1. . S SUBCCT="" F S SUBCCT=$O(@GL@("SUBC",SUBCCT)) Q:SUBCCT="" D
  1. .. ;
  1. .. ;Save/update each SubConcept entry
  1. .. ;
  1. .. ;First see if Subconcept code saved
  1. .. N DASUBC,DA,IENS,DTSID,SUBCCD,NEWSUBC,DIC,Y,X,DLAYGO
  1. .. S SUBCCD=$P($G(@GL@("SUBC",SUBCCT,0)),U) Q:SUBCCD=""
  1. .. S (NEWSUBC,DASUBC)=$O(^BSTS(9002318.4,"D",NMID,SUBCCD,""))
  1. .. ;
  1. .. ;Not found - add partial entry to conc file
  1. .. I DASUBC="" S DASUBC=$$NEWC()
  1. .. S BSTSC(9002318.4,DASUBC_",",.08)=$G(SUBCCD)
  1. .. I NEWSUBC="" S BSTSC(9002318.4,DASUBC_",",.03)="P"
  1. .. S BSTSC(9002318.4,DASUBC_",",.07)=INMID ;Code Set
  1. .. S BSTSC(9002318.4,DASUBC_",",.04)=CVRSN ;Version
  1. .. S BSTSC(9002318.4,DASUBC_",",.11)="N" ;Up to Date
  1. .. S BSTSC(9002318.4,DASUBC_",",.12)=DT ;Update Date
  1. .. S BSTSC(9002318.4,DASUBC_",",1)=$G(@GL@("SUBC",SUBCCT,1))
  1. .. ;
  1. .. ;Now add SUBC pointer in current conc entry
  1. .. S DA(1)=CONCDA
  1. .. S DIC(0)="L",DIC="^BSTS(9002318.4,"_DA(1)_",6,",X=DASUBC
  1. .. S DLAYGO=9002318.46 D ^DIC I +Y<0 Q
  1. .. ;
  1. .. ;Save additional SUBC fields
  1. .. S DA(1)=CONCDA,DA=+Y,IENS=$$IENS^DILF(.DA)
  1. .. S BSTSC(9002318.46,IENS,".02")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("SUB",SUBCCT,1,0)),U,2))
  1. ;
  1. ;Need to interim save because subsets look at .07
  1. I $D(BSTSC) D FILE^DIE("","BSTSC","ERROR")
  1. ;
  1. ;Save Subsets
  1. ;
  1. ;Clear out existing entries
  1. D
  1. . NEW SB
  1. . S SB=0 F S SB=$O(^BSTS(9002318.4,CONCDA,4,SB)) Q:'SB D
  1. .. NEW DA,DIK
  1. .. S DA(1)=CONCDA,DA=SB
  1. .. S DIK="^BSTS(9002318.4,"_DA(1)_",4," D ^DIK
  1. I $D(@GL@("SUB"))>1 D
  1. . ;
  1. . NEW SB
  1. . S SB="" F S SB=$O(@GL@("SUB",SB)) Q:SB="" D
  1. .. ;
  1. .. NEW DIC,X,Y,DA,X,Y,IENS,DLAYGO
  1. .. S DA(1)=CONCDA
  1. .. S DIC(0)="LX",DIC="^BSTS(9002318.4,"_DA(1)_",4,"
  1. .. S X=$P($G(@GL@("SUB",SB)),U) Q:X=""
  1. .. ;BSTS*1.0*8;Log ALL SNOMED
  1. .. I X="IHS PROBLEM ALL SNOMED" S BSTSC(9002318.4,CONCDA_",",.15)="Y"
  1. .. S DLAYGO=9002318.44 D ^DIC
  1. .. I +Y<0 Q
  1. .. S DA=+Y
  1. .. S IENS=$$IENS^DILF(.DA)
  1. .. S BSTSC(9002318.44,IENS,".02")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("SUB",SB)),U,2))
  1. ;
  1. ;Save ICD Mapping
  1. ;
  1. ;Clear out existing
  1. D
  1. . NEW IC
  1. . S IC=0 F S IC=$O(^BSTS(9002318.4,CONCDA,3,IC)) Q:'IC D
  1. .. NEW DA,DIK
  1. .. S DA(1)=CONCDA,DA=IC
  1. .. S DIK="^BSTS(9002318.4,"_DA(1)_",3," D ^DIK
  1. ;
  1. ;Save ICD9 first
  1. I $D(@GL@("ICD9"))>1 D
  1. . N ICD
  1. . S ICD="" F S ICD=$O(@GL@("ICD9",ICD)) Q:ICD="" D
  1. .. N DA,IENS,ICDCD
  1. .. ;
  1. .. ;Look up entry
  1. .. S DA(1)=CONCDA
  1. .. S ICDCD=$P($G(@GL@("ICD9",ICD)),U) Q:ICDCD=""
  1. .. S DA=$O(^BSTS(9002318.4,DA(1),3,"C",ICDCD,""))
  1. .. ;
  1. .. ;Create new
  1. .. I DA="" S DA=$$NEWI(CONCDA)
  1. .. Q:DA<0
  1. .. ;
  1. .. ;Add in additional fields
  1. .. S IENS=$$IENS^DILF(.DA)
  1. .. S BSTSC(9002318.43,IENS,".02")=ICDCD
  1. .. S BSTSC(9002318.43,IENS,".03")="IC9"
  1. .. S BSTSC(9002318.43,IENS,".04")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("ICD9",ICD)),U,2))
  1. .. S BSTSC(9002318.43,IENS,".05")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("ICD9",ICD)),U,3))
  1. ;
  1. ;Save ICD10 Mapping Next
  1. I $D(@GL@("A10"))>1 D
  1. . N ICD
  1. . S ICD="" F S ICD=$O(@GL@("A10",ICD)) Q:ICD="" D
  1. .. N DA,IENS,ICDCD
  1. .. ;
  1. .. ;Look up
  1. .. S DA(1)=CONCDA
  1. .. S ICDCD=$P($G(@GL@("A10",ICD)),U) Q:ICDCD=""
  1. .. S DA=$O(^BSTS(9002318.4,DA(1),3,"C",ICDCD,""))
  1. .. ;
  1. .. ;Create new
  1. .. I DA="" S DA=$$NEWI(CONCDA)
  1. .. Q:DA<0
  1. .. ;
  1. .. ;Add in additional fields
  1. .. S IENS=$$IENS^DILF(.DA)
  1. .. S BSTSC(9002318.43,IENS,".02")=ICDCD
  1. .. S BSTSC(9002318.43,IENS,".03")="10D"
  1. .. S BSTSC(9002318.43,IENS,".04")=$$DTS2FMDT^BSTSUTIL($P($P($G(@GL@("A10",ICD)),U,5)," "))
  1. .. S BSTSC(9002318.43,IENS,".05")=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("A10",ICD)),U,6))
  1. ;
  1. ;Save ICD9 to SNOMED Mapping
  1. ;
  1. ;Clear out existing entries
  1. D
  1. . NEW SB
  1. . S SB=0 F S SB=$O(^BSTS(9002318.4,CONCDA,13,SB)) Q:'SB D
  1. .. NEW DA,DIK
  1. .. S DA(1)=CONCDA,DA=SB
  1. .. S DIK="^BSTS(9002318.4,"_DA(1)_",13," D ^DIK
  1. ;
  1. ;Now save mappings
  1. I $D(@GL@("RICD9"))>1 D
  1. . ;
  1. . NEW SB
  1. . S SB="" F S SB=$O(@GL@("RICD9",SB)) Q:SB="" D
  1. .. ;
  1. .. NEW DIC,X,Y,DA,X,Y,IENS,DLAYGO
  1. .. S DA(1)=CONCDA
  1. .. S DIC(0)="LX",DIC="^BSTS(9002318.4,"_DA(1)_",13,"
  1. .. S X=$P($G(@GL@("RICD9",SB)),U) Q:X=""
  1. .. S DLAYGO=9002318.413 D ^DIC
  1. ;
  1. ;BSTS*1.0*6;Update Condition mappings
  1. ;Save Conditional Mappings
  1. D SAVEMAP^BSTSMAP1(CONCDA,.BSTSC,GL)
  1. ;
  1. ;BSTS*1.0*7;Update Equivalency Concepts
  1. D EQLAT^BSTSDTS4(CONCDA,.BSTSC,GL)
  1. ;
  1. I $D(BSTSC) D FILE^DIE("","BSTSC","ERROR")
  1. ;
  1. ;Now save Terminology entries
  1. ;
  1. ;Synonyms/Preferred/FSN
  1. ;
  1. S STYPE="" F S STYPE=$O(@GL@("SYN",STYPE)) Q:STYPE="" S TCNT="" F S TCNT=$O(@GL@("SYN",STYPE,TCNT)) Q:TCNT="" D
  1. . ;
  1. . N TERM,TYPE,DESC,BSTST,ERROR,TMIEN,AIN,AOUT
  1. . ;
  1. . ;Pull values
  1. . S TERM=$G(@GL@("SYN",STYPE,TCNT,1)) Q:TERM=""
  1. . ;
  1. . ;Quit if found
  1. . I $D(TLIST(TERM)) Q
  1. . S TLIST(TERM)=""
  1. . ;
  1. . S TYPE=$P($G(@GL@("SYN",STYPE,TCNT,0)),U,2)
  1. . S TYPE=$S(TYPE=1:"P",1:"S")
  1. . I TERM=$G(@GL@("FSN",1)) S TYPE="F"
  1. . S DESC=$P($G(@GL@("SYN",STYPE,TCNT,0)),U) Q:DESC=""
  1. . S AIN=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("SYN",STYPE,TCNT,0)),U,3))
  1. . S AOUT=$$DTS2FMDT^BSTSUTIL($P($G(@GL@("SYN",STYPE,TCNT,0)),U,4))
  1. . S:AOUT="" AOUT="@"
  1. . ;
  1. . ;Look up entry
  1. . S TMIEN=$O(^BSTS(9002318.3,"D",INMID,DESC,""))
  1. . ;
  1. . ;Entry not found - create new
  1. . I TMIEN="" S TMIEN=$$NEWT()
  1. . I TMIEN<0 Q
  1. . ;
  1. . ;Save/update other fields
  1. . S BSTST(9002318.3,TMIEN_",",.02)=DESC
  1. . S BSTST(9002318.3,TMIEN_",",.09)=TYPE
  1. . S BSTST(9002318.3,TMIEN_",",.04)="N"
  1. . S BSTST(9002318.3,TMIEN_",",.05)=CVRSN
  1. . S BSTST(9002318.3,TMIEN_",",.08)=INMID
  1. . S BSTST(9002318.3,TMIEN_",",.03)=CONCDA
  1. . S BSTST(9002318.3,TMIEN_",",.06)=AIN
  1. . S BSTST(9002318.3,TMIEN_",",.07)=AOUT
  1. . S BSTST(9002318.3,TMIEN_",",.1)=DT
  1. . S BSTST(9002318.3,TMIEN_",",.11)="N"
  1. . S BSTST(9002318.3,TMIEN_",",1)=TERM
  1. . D FILE^DIE("","BSTST","ERROR")
  1. . ;
  1. . ;Reindex - needed for custom indices
  1. . D
  1. .. NEW DIK,DA
  1. .. S DIK="^BSTS(9002318.3,",DA=TMIEN
  1. .. D IX^DIK
  1. ;
  1. ;Save ICD Mapping information
  1. I '$D(ERROR) S STS=$$ICDMAP^BSTSDTS2(CONCDA,GL)
  1. ;
  1. ;Need to check for retired concepts again since it may have just been added
  1. S RTR=$$RET^BSTSDTS3(CONCDA,CVRSN,GL)
  1. ;
  1. Q $S($D(ERROR):"0^Update Failed",1:1)
  1. ;
  1. CONC(DTSID,BSTSWS,SKPOD,SKPDT) ;EP - Determine if Code on File (and up to date)
  1. ;
  1. NEW CONC,CIEN,CONC,SNAPDT,NMID,BEGDT,ENDDT
  1. ;
  1. S SKPOD=$G(SKPOD) ;Set to 1 to skip out of date checking
  1. S SKPDT=$G(SKPDT) ;Set to 1 to skip date checking
  1. ;
  1. ;Get namespace
  1. S NMID=$G(BSTSWS("NAMESPACEID")) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. ;
  1. ;Pull the conc IEN
  1. S CIEN=$O(^BSTS(9002318.4,"D",NMID,DTSID,"")) Q:CIEN="" ""
  1. ;
  1. ;Quit if out of date
  1. I 'SKPOD,$$GET1^DIQ(9002318.4,CIEN_",",".11","I")="Y" Q ""
  1. ;
  1. ;Look in date range
  1. S SNAPDT=$G(BSTSWS("SNAPDT")) S:SNAPDT]"" SNAPDT=$$DATE^BSTSUTIL(SNAPDT)
  1. S:SNAPDT="" SNAPDT=DT
  1. ;
  1. I 'SKPDT S BEGDT=$$GET1^DIQ(9002318.4,CIEN_",",".05","I") I BEGDT]"",SNAPDT<BEGDT Q ""
  1. I 'SKPDT S ENDDT=$$GET1^DIQ(9002318.4,CIEN_",",".06","I") I ENDDT]"",SNAPDT>ENDDT Q ""
  1. ;
  1. S CONC=$$GET1^DIQ(9002318.4,CIEN_",",".02","E")
  1. ;
  1. Q CONC
  1. ;
  1. GCDSDTS4(BSTSWS) ;EP - DTS4 update codeset
  1. ;
  1. N RESULT,STS,II,BSTSUP,ERROR
  1. ;
  1. S STS=$$GCDSDTS4^BSTSCMCL(.BSTSWS,.RESULT)
  1. ;
  1. ;Update Local BSTS CODESET file (9002318.1)
  1. S II="" F S II=$O(RESULT(II),-1) Q:II="" D
  1. . ;
  1. . N DIC,X,Y,DLAYGO,DIC
  1. . S X=$G(RESULT(II,"NAMESPACE","ID")) Q:'X
  1. . S DIC(0)="XL",DIC="^BSTS(9002318.1,",DLAYGO=9002318.1 D ^DIC
  1. . I +Y<0 Q
  1. . S BSTSUP(9002318.1,+Y_",",.02)=$G(RESULT(II,"NAMESPACE","CODE"))
  1. . S BSTSUP(9002318.1,+Y_",",.03)=$G(RESULT(II,"NAMESPACE","NAME"))
  1. I $D(BSTSUP) D FILE^DIE("","BSTSUP","ERROR")
  1. ;
  1. Q STS
  1. ;
  1. GVRDTS4(BSTSWS) ;EP - DTS4 update versions
  1. ;
  1. NEW RESULT,STS
  1. ;
  1. ;Reset Scratch global and make call to DTS
  1. S RESULT=$NA(^TMP("BSTSCMCL",$J))
  1. K @RESULT
  1. S STS=$$GVRDTS4^BSTSCMCL(.BSTSWS)
  1. ;
  1. ;Update file with results
  1. I STS D
  1. . NEW NMID,NMIEN,VDT,CNT,VRID,CVID,BSTS,ERR
  1. . S NMID=$G(BSTSWS("NAMESPACEID"))
  1. . S NMIEN=$O(^BSTS(9002318.1,"B",NMID,""),-1) Q:NMIEN=""
  1. . S (VRID,CNT)="" F S CNT=$O(@RESULT@(CNT),-1) Q:'CNT D
  1. .. S VDT="" F S VDT=$O(@RESULT@(CNT,"VERSION",VDT)) Q:VDT="" D
  1. ... NEW RDT,NAME,DA,IENS,BSTSUP,ERROR
  1. ... S RDT=$G(@RESULT@(CNT,"VERSION",VDT,"RELEASEDATE"))
  1. ... S NAME=$G(@RESULT@(CNT,"VERSION",VDT,"NAME"))
  1. ... ;
  1. ... ;Look for existing entry
  1. ... S DA=$O(^BSTS(9002318.1,NMIEN,1,"B",VDT,""))
  1. ... ;
  1. ... ;Create new record
  1. ... S:DA="" DA=$$NEWV(NMIEN,VDT)
  1. ... I +DA<0 Q
  1. ... S VRID=VDT
  1. ... S DA(1)=NMIEN,IENS=$$IENS^DILF(.DA)
  1. ... ;
  1. ... ;Add/Update remaining fields
  1. ... S BSTSUP(9002318.11,IENS,".02")=NAME
  1. ... ;BSTS*1.0*6;Fixed date issue
  1. ... ;S BSTSUP(9002318.11,IENS,".03")=RDT
  1. ... S BSTSUP(9002318.11,IENS,".03")=$$DTS2FMDT^BSTSUTIL($P(RDT,"."))
  1. ... D FILE^DIE("","BSTSUP","ERROR")
  1. . ;
  1. Q STS
  1. ;
  1. NEWV(NMIEN,VDT) ;Create new ICD Mapping entry
  1. N DIC,X,Y,DA,DLAYGO
  1. S DIC(0)="L",DA(1)=NMIEN
  1. S DLAYGO=9002318.11,DIC="^BSTS(9002318.1,"_DA(1)_",1,"
  1. S X=VDT
  1. D ^DIC
  1. Q +Y
  1. ;
  1. ;
  1. NEWC() ;Create new concept entry
  1. N DIC,X,Y,DLAYGO
  1. S DIC(0)="L",DIC=9002318.4
  1. L +^BSTS(9002318.4,0):1 E Q ""
  1. S X=$P($G(^BSTS(9002318.4,0)),U,3)+1
  1. S DLAYGO=9002318.4 D ^DIC
  1. L -^BSTS(9002318.4,0)
  1. Q +Y
  1. ;
  1. NEWT() ;Create new terminology entry
  1. N DIC,X,Y,DLAYGO
  1. S DIC(0)="L",DIC=9002318.3
  1. L +^BSTS(9002318.3,0):1 E Q ""
  1. S X=$P($G(^BSTS(9002318.3,0)),U,3)+1
  1. S DLAYGO=9002318.3 D ^DIC
  1. L -^BSTS(9002318.3,0)
  1. Q +Y
  1. ;
  1. NEWI(CIEN) ;Create new ICD Mapping entry
  1. N DIC,X,Y,DA,DLAYGO
  1. S DIC(0)="L",DA(1)=CIEN
  1. S DIC="^BSTS(9002318.4,"_DA(1)_",3,"
  1. L +^BSTS(9002318.4,CIEN,3,0):1 E Q ""
  1. S X=$P($G(^BSTS(9002318.4,CIEN,3,0)),U,3)+1
  1. S DLAYGO=9002318.43 D ^DIC
  1. L -^BSTS(9002318.4,CIEN,3,0)
  1. Q +Y