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

LR7OF1.m

Go to the documentation of this file.
  1. LR7OF1 ;slc/dcm/JAH - Setup new order from OE/RR ; 18-Apr-2016 06:13 ; MKK
  1. ;;5.2;LAB SERVICE;**1003,121,187,223,1021,256,299,1022,291,1031,1033,1034,1036,1037,1039**;NOV 1, 1997;Build 38
  1. ;
  1. ;
  1. EN ;Setup NEW orders from OE/RR messages
  1. ;[^TMP("OR",$J,"LRES") DOCUMENTATION]
  1. ; 'Combining of Orders' functionality depends on this TMP global
  1. ; Set and Killed when BHS and BTS batch message headers are received
  1. ; Global contains a list of lab orders for a session
  1. ; Lab adds elements to the global array as orders are processed:
  1. ; ^TMP("OR",$J,"LRES",LRDFN,LRSDT,LRXZ,^TMP("OR",$J,"LRES","CTR"))=LRORD_"^"_LRODT_"^"_LRSN
  1. ; ^TMP("OR",$J,"LRES","CTR")=Count
  1. N ZTSK,LRORDR,X,UNEEK,LRNT ;UNEEK forces a unique entry (Micro tests), set when ^..."LROT" built
  1. D DT
  1. S LRORDR=LRXZ
  1. S:'$D(^TMP("OR",$J,"LRES","CTR")) ^("CTR")=0
  1. F LRSAMP=-1:0 S LRSAMP=$O(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP)) Q:LRSAMP="" D
  1. . F LRSPEC=-1:0 S LRSPEC=$O(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC)) Q:LRSPEC="" S X=^(LRSPEC,0) D
  1. .. S ORIFN=+X,UNEEK=$P(X,"^",2)
  1. .. D ZX
  1. Q
  1. ZX ;
  1. N COMBINE,X,NEWORD
  1. I '$D(^LRO(69,LRODT,0)) D
  1. . S ^(0)=$P(^LRO(69,0),U,1,2)_"^"_LRODT_"^"_(1+$P(^(0),U,4)),^LRO(69,LRODT,0)=LRODT,^LRO(69,"B",LRODT,LRODT)=""
  1. S COMBINE=""
  1. I 'UNEEK D
  1. . S COMBINE=$$ORES^LR7OF5(LRDFN,LRSDT,LRXZ,+LRSAMP,LRPRAC,LROLLOC,LRSPEC,LRDUZ)
  1. . I '$L(COMBINE) S COMBINE=$$FIND^LR7OF5(LRDFN,LRODT,LRSDT,LRXZ,+LRSAMP,LRPRAC,LROLLOC,LRSPEC,LRDUZ)
  1. I '$L(COMBINE) S (NEWORD,ZTQUEUED)=1 L +^LRO(69,$E(DT,1,3)_"0000",2):1 D ORDER^LROW2 K ZTSK,ZTQUEUED,ZTREQ G LOCK
  1. I $E(COMBINE,1,2)="S." S LRSN=$P(COMBINE,".",2),LRORD=$P(COMBINE,".",3) G ADD ;Combine on specimen
  1. I $E(COMBINE,1,2)="O."!($E(COMBINE,1,2)="C.") S LRORD=$S($E(COMBINE,1,2)="O.":$P(COMBINE,".",2),1:$P(COMBINE,".",3)) ;Combine on order #
  1. LOCK ;
  1. L +^LRO(69,LRODT,1):360
  1. I '$T G LOCK
  1. S LRSN=1+$O(^LRO(69,LRODT,1,999999999),-1),LRSUM=1+$S($D(^LRO(69,LRODT,1,0)):$P(^(0),U,4),1:0)
  1. ZSN ;
  1. I $D(^LRO(69,LRODT,1,LRSN,0)) S LRSN=LRSN+1 G ZSN
  1. S ^LRO(69,LRODT,1,LRSN,0)=LRDFN_"^"_LRDUZ_"^"_+LRSAMP_"^"_LRORDR_"^"_LRNT_"^"_LRPRAC_"^"_LRLLOC_"^"_LRSDT_"^"_LROLLOC_"^^"_ORIFN,^LRO(69,LRODT,1,0)="^69.01PA^"_LRSN_"^"_LRSUM
  1. L -^LRO(69,LRODT,1)
  1. S ^LRO(69,LRODT,1,"AA",LRDFN,LRSN)="",^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC,"SN")=LRSN,^LRO(69,"D",LRDFN,LRODT,LRSN)=""
  1. I $L(LRLLOC) S ^LRO(69,LRODT,1,"AC",LRLLOC,LRSN)=""
  1. I $L(LRSPEC) S ^LRO(69,LRODT,1,LRSN,4,0)="^69.02PA^1^1",^(1,0)=LRSPEC
  1. S ^LRO(69,LRODT,1,LRSN,.1)=LRORD,^LRO(69,"C",+LRORD,LRODT,LRSN)=""
  1. I $G(NEWORD) L -^LRO(69,$E(DT,1,3)_"0000",2)
  1. ADD ;
  1. N I,J,LRJ,LRSXN,LRORIFN,NODE,STATUS
  1. S ^TMP("OR",$J,"LRES","CTR")=^TMP("OR",$J,"LRES","CTR")+1,^TMP("OR",$J,"LRES",LRDFN,LRSDT,LRXZ,^TMP("OR",$J,"LRES","CTR"))=LRORD_"^"_LRODT_"^"_LRSN
  1. ; S LRORIFN=+$G(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC,0))
  1. ; ----- IHS/OIT/MKK - BEGIN Lab Patch 1022 Modification
  1. S LRORIFN=+$G(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC,0)),INDIC=$G(^(-1)) ;IHS/CIA/DKM - Added INDIC
  1. ; ----- IHS/OIT/MKK - End Lab Patch 1022 Modification
  1. S J=0
  1. ; F LRJ=1:1 S J=$O(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC,J)) Q:J<1 S NODE=^(J),STATUS=$G(^(J,1)) D ZSN1(NODE,STATUS)
  1. ; ----- IHS/OIT/MKK - BEGIN Lab Patch 1022 Modification
  1. F LRJ=1:1 S J=$O(^TMP("OR",$J,"LROT",LRSDT,LRXZ,LRSAMP,LRSPEC,J)) Q:J<1 S NODE=^(J),STATUS=$G(^(J,1)) D ZSN1(NODE,STATUS,INDIC)
  1. ; ----- IHS/OIT/MKK - End Lab Patch 1022 Modification
  1. S (LRSXN,I)=0
  1. F S I=$O(^LRO(69,LRODT,1,LRSN,2,I)) Q:I<1 S LRSXN=LRSXN+1
  1. S:LRSXN ^LRO(69,LRODT,1,LRSN,2,0)="^69.03PA^"_LRSXN_"^"_LRSXN
  1. I $E(COMBINE,1,2)="C." D
  1. . S (LRSXN,I)=0 F S I=$O(^LRO(69,LRODT,1,+$P(COMBINE,".",2),2,I)) Q:I<1 S LRSXN=LRSXN+1
  1. . S:LRSXN ^LRO(69,LRODT,1,+$P(COMBINE,".",2),2,0)="^69.03PA^"_LRSXN_"^"_LRSXN
  1. Q
  1. ; ZSN1(NODE,STATUS) ;Add tests
  1. ; ----- IHS/OIT/MKK - BEGIN Lab Patch 1022 Modification
  1. ZSN1(NODE,STATUS,INDIC) ; EP Add tests ;IHS/CIA/DKM - Added INDIC
  1. ; ----- IHS/OIT/MKK - END Lab Patch 1022 Modification
  1. N CNT,XI,X,I,C,TCNT
  1. S CNT=+$O(^LRO(69,LRODT,1,LRSN,2,99999),-1)
  1. S LRTSTS=+NODE,LRQUANT=$P(NODE,"^",2)
  1. I $D(^LRO(69,LRODT,1,LRSN,2,"B",LRTSTS)) S REJECT(LRTSTS)="" Q
  1. S ^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,0)=LRTSTS_"^"_$S($L(STATUS):STATUS,1:LROUTINE)_"^^^^^"_LRORIFN
  1. ; ----- IHS/OIT/MKK - BEGIN Lab Patch 1022 Modification
  1. ; S:$L($G(INDIC)) ^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,9999999)=INDIC ; IHS/CIA/DKM - Set clnical indication, if present
  1. ; ----- IHS/OIT/MKK - End Lab Patch 1022 Modification
  1. ;
  1. I $L($G(INDIC)) D IHSCLINI ; IHS/MSC/MKK - LR*5.2*1033
  1. ;
  1. D SDGX69^LRBEBA2(J,(CNT+LRJ)_","_LRSN_","_LRODT_",")
  1. I $O(^TMP("OR",$J,"COM",LRSDT,LRXZ,LRSAMP,LRSPEC,J,0)) D
  1. . S X=^TMP("OR",$J,"COM",LRSDT,LRXZ,LRSAMP,LRSPEC,J)+$S($P($G(^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,1,0)),"^",4):$P(^(0),"^",4),1:0),^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,1,0)="^^"_X_"^"_X_"^"_DT
  1. . S TCNT=+$O(^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,1,99999),-1),(C,I)=0
  1. . F S I=$O(^TMP("OR",$J,"COM",LRSDT,LRXZ,LRSAMP,LRSPEC,J,I)) Q:I<1 S C=C+1,^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,1,C+TCNT,0)=^TMP("OR",$J,"COM",LRSDT,LRXZ,LRSAMP,LRSPEC,J,I)
  1. S ^LRO(69,LRODT,1,LRSN,2,"B",LRTSTS,CNT+LRJ)=""
  1. S ^LRO(69,"AT",LRDFN,LRTSTS,LRSPEC,LRODT)="",^(-LRODT)=""
  1. I $E(COMBINE,1,2)="C." S X=^LRO(69,LRODT,1,LRSN,2,CNT+LRJ,0),$P(^(0),"^",6)=LRORD,XI=$P($G(^LRO(69,LRODT,1,LRSN,1)),"^",7),XI=XI_LRORD_"/",$P(^(1),"^",7)=XI D
  1. . N CNT1
  1. . S CNT1=$O(^LRO(69,LRODT,1,+$P(COMBINE,".",2),2,99999),-1)+1,^(CNT1,0)=X,$P(^(0),"^",14)=LRODT_";"_LRSN_";"_(CNT+LRJ),^LRO(69,LRODT,1,$P(COMBINE,".",2),2,"B",LRTSTS,CNT1)=""
  1. ;
  1. D IHSURGNT^BLRUTIL8 ; IHS/MSC/MKK - LR*5.2*1039
  1. Q
  1. ;
  1. DT ;
  1. S DT=$$DT^XLFDT()
  1. S LRNT=$P($H,",",2),LRNT=LRNT\3600*100+(LRNT\60#60)/10000+DT
  1. Q
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1033
  1. IHSCLINI ; EP - Clinical Indication
  1. NEW SCHEMA,FDA,IENS
  1. NEW ERRS ; IHS/MSC/MKK - LR*5.2*1036
  1. ;
  1. Q:$TR($P(INDIC,"^",1,2),"^")="" ; Skip if No Data
  1. ;
  1. S IENS=(CNT+LRJ)_","_LRSN_","_LRODT_","
  1. S SCHEMA=$E($P(INDIC,"^",3))
  1. I SCHEMA="I"!(SCHEMA="") D IHSICDI ; ICD Coding Schema
  1. I SCHEMA="S" D IHSSNOI ; SNOMED Coding Schemas
  1. ;
  1. D:$D(FDA) UPDATE^DIE("EKS","FDA",,"ERRS")
  1. ;
  1. ; D:$D(ERRS) ERRMSG^BLRSGNSP("IHSCLINI: UPDATE^DIE","LR7OF1") ; IHS/MSC/MKK - LR*5.2*1034 Send Error Message to LMI Mail Group
  1. D:$D(ERRS) ERRMSG^BLRSGNS3("IHSCLINI: UPDATE^DIE","LR7OF1") ; IHS/MSC/MKK - LR*5.2*1036 Send Error Message to LMI Mail Group
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. D REFLICDS
  1. ;
  1. D ADBLRRLO^BLRUTIL6(LRODT,LRSN,(CNT+LRJ))
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. Q
  1. ;
  1. IHSICDI ; ICD Clinical Indication
  1. ; S ICDCODE=$P(INDIC,"^")
  1. S ICDCODE=$P($P(INDIC,"^"),";") ; IHS/MSC/MKK - LR*5.2*1036 - Just the 1st code
  1. S ICDDESC=$P(INDIC,"^",2)
  1. ; I $L(ICDCODE)&($L(ICDDESC)<1!(ICDDESC["*")) S ICDDESC=$P($$ICDDX^ICDCODE(ICDCODE),"^",4)
  1. I $L(ICDCODE)&($L(ICDDESC)<1!(ICDDESC["*")) S ICDDESC=$P($$ICDDX^ICDEX(ICDCODE),"^",4) ; IHS/MSC/MKK - LR*5.2*1034
  1. S:$L(ICDDESC) FDA(69.03,IENS,9999999.1)=ICDDESC
  1. S:$L(ICDCODE) FDA(69.05,"?+1,"_IENS,.01)=ICDCODE
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1037
  1. D FSNOMED
  1. Q
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1037
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034 - Get the SNOMED code, if possible
  1. Q:$L(ICDCODE)<1
  1. ;
  1. NEW CONCID,BSTSFLAG,IN,OUT,SNOMED,STR
  1. S OUT="VARS",IN=ICDCODE
  1. I +$$ICD2SMD^BSTSAPI(OUT,IN) D
  1. . S CONCID=$G(VARS(1,"CON")) ; Pick 1st Concept ID
  1. . S STR=$$CONC^BSTSAPI(CONCID)
  1. . S SNOMED=$P(STR,"^",3)
  1. . S:$L(SNOMED)<1 SNOMED=$P(STR,"^",1)
  1. E S SNOMED=$$ICD2SMD(ICDCODE,ICDDESC)
  1. ;
  1. S:$L(SNOMED) FDA(69.03,IENS,9999999.2)=SNOMED
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. Q
  1. ;
  1. IHSSNOI ; SNOMED Clinical Indication
  1. S SNOMED=$P(INDIC,"^")
  1. S SNOMDESC=$P(INDIC,"^",2)
  1. S:$L(SNOMEDESC) FDA(69.03,IENS,9999999.1)=SNOMDESC
  1. S FDA(69.03,IENS,9999999.2)=SNOMED
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034 - Get the ICD code, if possible
  1. NEW ICD10,ICD10DT,ICD10CS,ICD9,ICDCODE,STR
  1. S STR=$$DESC^BSTSAPI(SNOMED)
  1. I $L(STR)&($L(SNOMEDESC)<1) D ; Get SNOMED Description
  1. . S SNOMEDESC=$$TRIM^XLFSTR($P($P(STR,"^",2),"("),"LR"," ")
  1. . S:$L(SNOMEDESC) FDA(69.03,IENS,9999999.1)=SNOMDESC
  1. ;
  1. S ICD10CS=+$$FIND1^DIC(80.4,,,"ICD-10-CM") ; Get Coding System IEN
  1. S ICD10DT=$$GET1^DIQ(80.4,ICD10CS,"IMPLEMENTATION DATE","I")
  1. S:ICD10DT<1 ICD10DT=3151001 ; If no Date returned from 80.4, hard set to 10/1/2015.
  1. ;
  1. ; Note that $$DESC^BSTAPI will only return 3 pieces of data if the SNOMED variable
  1. ; is a SNOMED CONCEPT ID. If it is a "real" SNOMED code, it will return 4 pieces
  1. ; of information.
  1. S ICD10=$P($P(STR,"^",3),";") ; Just the 1st code
  1. S ICD9=$P($P(STR,"^",4),";") ; Just the 1st Code
  1. S:ICD9="" ICD9=ICD10
  1. S ICDCODE=$S($$DT^XLFDT'<ICD10DT:ICD10,1:ICD9)
  1. S:$L(ICDCODE) FDA(69.05,"?+1,"_IENS,.01)=ICDCODE
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. Q
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. REFLICDS ; EP - Store the ICD code(s) into the BLR REFERENCE LAB ORDER/ACCESSION (#9009026.3) file
  1. NEW DFN,F60IEN,ICD,ICDCODE,ICDEXIST,IENS,IENSICD,ORDERIEN,ORDERN
  1. NEW FDA,ERRS ; IHS/MSC/MKK - LR*5.2*1036
  1. ;
  1. Q:$D(FDA(69.05))<1 ; If no ICD codes, skip
  1. ;
  1. S IENS=LRSN_","_LRODT
  1. S ORDERN=$$GET1^DIQ(69.01,IENS,9.5)
  1. Q:ORDERN<1 ; If no order #, skip
  1. ;
  1. S F60IEN=$$GET1^DIQ(69.03,(CNT+LRJ)_","_IENS,.01,"I")
  1. Q:$$REFLABCK^BLRUTIL6(F60IEN,LRODT,LRSN)<1 ; If Not Ref Lab Test, skip
  1. ;
  1. S IENS=(CNT+LRJ)_","_LRSN_","_LRODT
  1. S F60IEN=$$GET1^DIQ(69.03,IENS,.01,"I")
  1. ;
  1. Q:$$REFLAB^BLRUTIL6(DUZ(2),+F60IEN)<1 ; If Test not MAPPED, do NOT put into 9009026.3
  1. ;
  1. S DFN=$$GET1^DIQ(63,LRDFN,.03,"I")
  1. S X=$$ORD^BLRRLEDI(ORDERN,DFN) ; Store Order # if not in there already
  1. S ORDIEN=$$FIND1^DIC(9009026.3,,,ORDERN)
  1. ;
  1. Q:ORDIEN<1 ; If order not in 9009026.3, skip
  1. ;
  1. S ICDEXIST=$O(^LRO(69,LRODT,1,LRSN,2,(CNT+LRJ),2,0))
  1. ;
  1. Q:F60IEN<1
  1. ;
  1. S ICD=.9999999
  1. F S ICD=$O(^LRO(69,LRODT,1,LRSN,2,(CNT+LRJ),2,ICD)) Q:ICD<1 D
  1. . S IENSICD=ICD_","_IENS
  1. . S ICDCODE=$$GET1^DIQ(69.05,IENSICD,.01,"I")
  1. . ;
  1. . ; Skip if UNCODED DIAGNOSIS
  1. . Q:$$GET1^DIQ(80,ICDCODE,.01)=".9999"!($$GET1^DIQ(80,ICDCODE,.01)="ZZZ.999")
  1. . ;
  1. . K FDA,ERRS
  1. . S FDA(9009026.31,"?+1,"_ORDIEN_",",.01)=ICDCODE
  1. . D UPDATE^DIE(,"FDA",,"ERRS")
  1. . ; D:$D(ERRS) ERRMSG^BLRSGNSP("REFLICDS: UPDATE^DIE","LR7OF1")
  1. . D:$D(ERRS) ERRMSG^BLRSGNS3("REFLICDS: UPDATE^DIE","LR7OF1") ; IHS/MSC/MKK - LR*5.2*1036
  1. ;
  1. Q
  1. ;
  1. TESTIT ; EP - Test the REFLICDS logic
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. R !,"ORDER #:",ORDERN,!
  1. Q:+ORDERN<1
  1. ;
  1. S LRODT=0
  1. F S LRODT=$O(^LRO(69,"C",ORDERN,LRODT)) Q:LRODT<1 D
  1. . S LRSN=0
  1. . F S LRSN=$O(^LRO(69,"C",ORDERN,LRODT,LRSN)) Q:LRSN<1 D
  1. .. S LRDFN=$$GET1^DIQ(69.01,LRSN_","_LRODT,.01,"I")
  1. .. ;
  1. .. S LROT=.9999999
  1. .. F S LROT=$O(^LRO(69,LRODT,1,LRSN,2,LROT)) Q:LROT<1 D
  1. ... S LRJ=LROT,CNT=0
  1. ... D REFLICDS
  1. Q
  1. ;
  1. ICD2SMD(ICD,PROVNARR) ; EP - Use Provider Narrative and ICD-10 Code to get SNOMED match
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,ICD,PROVNARR,U,XPARSYS,XQXFLG)
  1. ;
  1. S SNOMED=""
  1. ;
  1. S OUT="VARS",IN=PROVNARR_"^F"
  1. S X=$$SEARCH^BSTSAPI(OUT,IN)
  1. Q:X<1 SNOMED
  1. ;
  1. ; "Trick" because Terminology Server may return ICD code without final period
  1. S ICD2CHK=$S($P(ICD,".",2)="":$P(ICD,"."),1:ICD)
  1. ;
  1. S (CNT,FOUND)=0
  1. F S CNT=$O(VARS(CNT)) Q:CNT<1!(FOUND) D
  1. . S TSICD=$G(VARS(CNT,"ICD",1,"COD")) ; Terminology Server ICD-10
  1. . Q:ICD'=TSICD&(ICD2CHK'=TSICD)
  1. . Q:$G(VARS(CNT,"PRB","TRM"))'=PROVNARR
  1. . ;
  1. . S CONCID=$G(VARS(CNT,"CON")) ; Pick Concept ID
  1. . S STR=$$CONC^BSTSAPI(CONCID)
  1. . S CSNOMED=$P(STR,"^",3)
  1. . S:$L(CSNOMED)<1 CSNOMED=$P(STR,"^",1)
  1. . Q:$L(CSNOMED)<1
  1. . ;
  1. . K FOUND("SNOMED")
  1. . S FOUND("SNOMED")=CSNOMED
  1. . S FOUND=FOUND+1
  1. ;
  1. Q $S(FOUND:$G(FOUND("SNOMED")),1:$G(SNOMED))
  1. ;
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1037
  1. FSNOMED ; EP - Try to find a SNOMED Code using an OE/RR API & BSTSAPI call
  1. NEW CLININD,FOUNDIT,SNOCONID,VARS
  1. ;
  1. Q:+$G(ORIFN)<1 ; Skip if file 100 IEN < 1
  1. ;
  1. ; OE/RR API - CLINICAL INDICATION. Note that it can contain a | that sometimes
  1. ; separates two clinical indications. Only use the first clinical indication.
  1. ; Trim any leading and/or trailing blanks.
  1. S CLININD=$$TRIM^XLFSTR($P($$VALUE^ORCSAVE2(ORIFN,"CLININD"),"|"),"LR"," ")
  1. ;
  1. S SNOCONID=$$VALUE^ORCSAVE2(ORIFN,"SNMDCNPTID") ; OE/RR API - SNOmed CONcept ID
  1. Q:$L(CLININD)<1!($L(SNOCONID)<1) ; Skip if either variable is null.
  1. ;
  1. D CNCLKP^BSTSAPI("VARS",SNOCONID)
  1. ;
  1. ; If PREFERRED TERM, then set and return
  1. I $G(VARS(1,"PRE","TRM"))=CLININD S FDA(69.03,IENS,9999999.2)=$G(VARS(1,"PRE","DSC")) Q
  1. ;
  1. ; If PRB, then set and return
  1. I $G(VARS(1,"PRB","TRM"))=CLININD S FDA(69.03,IENS,9999999.2)=$G(VARS(1,"PRB","DSC")) Q
  1. ;
  1. ; Have to search the synonyms
  1. S SYN=0,FOUNDIT=""
  1. F S SYN=$O(VARS(1,"SUB",SYN)) Q:SYN<1!($L(FOUNDIT)) D
  1. . I $G(VARS(1,"SUB",SYN,"TRM"))=CLININD S FOUNDIT=$G(VARS(1,"SUB",SYN,"DSC"))
  1. ;
  1. S:$L(FOUNDIT) FDA(69.03,IENS,9999999.2)=FOUNDIT
  1. Q
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1037