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

BGOSNOPR.m

Go to the documentation of this file.
  1. BGOSNOPR ; IHS/BAO/TMD - SNOMED PREFERENCES MANAGER ;19-Apr-2016 11:50;du
  1. ;;1.1;BGO COMPONENTS;**13,14,19,20**;Mar 20, 2007;Build 1
  1. ; Return categories matching specified criteria
  1. ; INP = Category IEN [1] ^ Hospital Location IEN [2] ^ Provider IEN [3] ^ Manager IEN [4] ^ Show All [5]
  1. GETCATS(RET,INP) ;EP
  1. N ARRAY,X,I,DEFAULT
  1. S RET=$$TMPGBL
  1. D GETCATS^BGOPFUTL(.ARRAY,INP,90362.34)
  1. ;Get the default
  1. S DEFAULT=$$GET^XPAR("ALL","BGO DEFAULT PICKLIST")
  1. S I=1
  1. S X=0 F S X=$O(@ARRAY@(X)) Q:X="" D
  1. .I $P($G(@ARRAY@(X)),U,2)=DEFAULT S @RET@(1)=$G(@ARRAY@(X))_U_1 Q
  1. .E S I=I+1
  1. .S @RET@(I)=$G(@ARRAY@(X))
  1. K ARRAY
  1. Q
  1. ; Returns list of SNOMEDS for specified category
  1. ; INP = Category IEN [1] ^ Descriptor [2] ^ Display Freq Order [3]
  1. ; Returns list of records in the format
  1. ; IEN[1] ^ Narrative [2] ^ DESCT CT [3] ^ CONCEPT CT [4] ^ Status [5] ^ Freq [6]
  1. ; ^ Rank [7] ^ Pref IEN [8] ^ Qualifier string [9] ^ group [10] ^ Laterality flag [11]
  1. GETITEMS(RET,INP) ;EP
  1. N PX,I,J,FREQ,VIEN,GRP,CAT,LONG,VPX,FREQ,CNT,RANK,IEN
  1. S RET=$$TMPGBL^BGOUTL
  1. S CAT=+INP
  1. I 'CAT S @RET@(1)=$$ERR^BGOUTL(1018) Q
  1. I '$D(^BGOSNOPR(CAT,0)) S @RET@(1)=$$ERR^BGOUTL(1019) Q
  1. S GRP=$P(INP,U,2)
  1. S FREQ=$P(INP,U,3)
  1. S:$P(^BGOSNOPR(CAT,0),U,6) GRP=""
  1. S (CNT,RANK)=0
  1. I FREQ D
  1. .S J=""
  1. .F S J=$O(^BGOSNOPR(CAT,1,"AC",J),-1) Q:J="" D
  1. ..S IEN=0
  1. ..F S IEN=$O(^BGOSNOPR(CAT,1,"AC",J,IEN)) Q:'IEN D GD1
  1. E D
  1. .S IEN=0
  1. .F S IEN=$O(^BGOSNOPR(CAT,1,IEN)) Q:'IEN D GD1
  1. Q
  1. GD1 ;Get fields
  1. N N0,SNOCT,DESCT,NARR,TXT,DX,FREQVAL,CODE,OPEN,QUAL,QUALCT,QUALT,QSTR
  1. N STATUS,GROUP,PREF,PREFNAR,ICD,LAT,IN,ICDFLD,I1,CODE,Z1,X
  1. S QSTR=""
  1. S N0=$G(^BGOSNOPR(CAT,1,IEN,0))
  1. S SNOCT=+N0
  1. Q:'SNOCT
  1. ;IHS/MSC/MGH Changed to use new API
  1. ;Patch 20
  1. K VAR
  1. ;Patch 20 changes to only do 1 lookup
  1. S DESCT=$P(N0,U,2)
  1. S X=$$DSCLKP^BSTSAPI("VAR",DESCT_"^^1")
  1. S NARR=$G(VAR(1,"PRB","TRM"))
  1. S PREFNAR=$G(VAR(1,"PRE","TRM"))
  1. S ICD="",I1=0
  1. F S I1=$O(VAR(1,"ICD",I1)) Q:'+I1 D
  1. .S ICD=ICD_$S(ICD]"":"|",1:"")_$G(VAR(1,"ICD",I1,"COD"))
  1. S STATUS=$P(N0,U,6)
  1. S TXT=$P($G(^BGOSNOPR(CAT,1,IEN,1)),U,1)
  1. S FREQVAL=$P(N0,U,3)
  1. S GROUP=$P($G(^BGOSNOPR(CAT,1,IEN,1)),U,2)
  1. ;IHS/MSC/MGH add laterality flag to list
  1. S IN=DESCT_U_"EHR IPL PROMPT FOR LATERALITY"_U_U_1
  1. ;S LAT=$$VSBTRMF^BSTSAPI(IN)
  1. S LAT=$G(VAR(1,"LAT"))
  1. I FREQ D
  1. .S RANK=RANK+1
  1. .S RANK=$S(RANK<10:"00",RANK<100:"0",1:"")_RANK
  1. S QUAL=0 F S QUAL=$O(^BGOSNOPR(CAT,1,IEN,2,QUAL)) Q:QUAL="" D
  1. .S QUALCT=$P($G(^BGOSNOPR(CAT,1,IEN,2,QUAL,0)),U,1),QUALT=$P($G(^BGOSNOPR(CAT,1,IEN,2,QUAL,0)),U,2)
  1. .S QSTR=$S(QSTR="":QUALCT_"|"_QUALT,1:QSTR_"~"_QUALCT_"|"_QUALT)
  1. S CNT=CNT+1
  1. S @RET@(CNT)=IEN_U_NARR_U_DESCT_U_SNOCT_U_STATUS_U_FREQVAL_U_TXT_U_RANK_U_QSTR_U_GROUP_U_PREFNAR_U_ICD_U_LAT
  1. Q
  1. ; Return list of managers associated with a specified category
  1. GETMGRS(RET,CAT) ;EP
  1. D GETMGRS^BGOPFUTL(.RET,CAT,90362.34)
  1. Q
  1. ; Set category fields
  1. ; INP = Name [1] ^ Hosp Loc [2] ^ Clinic [3] ^ Provider [4] ^ User [5] ^ Category IEN [6] ^ Delete [7] ^ Discipline [8]
  1. SETCAT(RET,INP) ;EP
  1. D SETCAT^BGOPFUTL(.RET,INP,90362.34)
  1. Q
  1. ; Add or remove a manager from a category
  1. ; INP = Category IEN [1] ^ Manager IEN [2] ^ Add [3]
  1. SETMGR(RET,INP) ;EP
  1. D SETMGR^BGOPFUTL(.RET,INP,90362.343)
  1. Q
  1. ; Set Provider Text for a preference
  1. ; INP = Category IEN [1] ^ Item IEN [2] ^ Display Name [3]
  1. ; SFN = Item subfile #
  1. SETNAME(RET,INP,FIELD) ;EP
  1. N ITM,CAT,NAME,FDA
  1. S SFN=90362.342
  1. S CAT=+INP
  1. I 'CAT S RET=$$ERR^BGOUTL(1018) Q
  1. S ITM=$P(INP,U,2)
  1. I 'ITM S RET=$$ERR^BGOUTL(1033) Q
  1. S NAME=$P(INP,U,3)
  1. I NAME="" S RET=$$ERR^BGOUTL(1034) Q
  1. S FDA(SFN,ITM_","_CAT_",",FIELD)=NAME
  1. S RET=$$UPDATE^BGOUTL(.FDA)
  1. Q
  1. ; Set frequency for an item
  1. ; INP = Category IEN [1] ^ SNOMED CT [2] ^ Increment [3] ^ Frequency [4]
  1. SETFREQ(RET,INP) ;EP
  1. D SETFREQ^BGOPFUTL(.RET,INP,90362.342) ;EP
  1. Q
  1. ; Set field values for a SNOMED preference entry
  1. ; INP = Category IEN [1] ^ SNOMED CT [2] ^ DESC CT [3] ^ Status [4] ^ Frequency [5] ^
  1. ; Group [6] ^ Item IEN [7] ^ Delete [8]
  1. SETITEM(RET,INP) ;EP
  1. N CAT,SNO,DESCT,DEL,NEW,IEN,FREQ,DUP,ITEM,FDA,GBL,FNUM,X,Y,GRP,PREF
  1. S RET=""
  1. S CAT=+INP
  1. S FNUM=90362.34
  1. S NEW=""
  1. I 'CAT S RET=$$ERR^BGOUTL(1018) Q
  1. S SNO=$P(INP,U,2)
  1. I SNO="" S RET="-1^No Concept CT sent in call"
  1. ;IHS/MSC/MGH changed to use new API
  1. ;S X=$$CONC^BSTSAPI(SNO_"^^^1")
  1. S X=$$CONC^AUPNSICD(SNO_"^^^1")
  1. S PREF=$P(X,U,3)
  1. S DESCT=$P(INP,U,3)
  1. I DESCT="" S DESCT=PREF
  1. S Y=$$DESC^BSTSAPI(DESCT_"^^1")
  1. S TXT=$P(Y,U,2)
  1. I DESCT="" S RET="-1^Snomed not valid"
  1. I TXT="" S RET="-1^Snomed not valid"
  1. Q:RET=-1
  1. S STAT=$P(INP,U,4)
  1. ;MSC/MGH Patch 20
  1. I STAT="" S STAT=$P(X,U,9)
  1. S STAT=$S(STAT="Chronic":"A",STAT="Inactive":"I",STAT="Sub-acute":"S",STAT="Episodic":"E",STAT="Social/Environmental":"O",STAT="Routine/Admin":"R",STAT="Admin":"R",STAT="Personal History":"P",1:STAT)
  1. S FREQ=+$P(INP,U,5)
  1. S GRP=$P(INP,U,6)
  1. S ITEM=$P(INP,U,7)
  1. I '+ITEM S NEW=1 ;P19
  1. S DEL=$P(INP,U,8)
  1. I DEL D
  1. .N DA,SFN
  1. .S RET=$$GBLROOT^BGOPFUTL(FNUM,,.SFN)
  1. .S:'RET RET=$$ITEMROOT^BGOPFUTL(SFN,CAT,.GBL,1)
  1. .Q:RET
  1. .S DA(1)=CAT,DA=ITEM
  1. .S RET=$$DELETE^BGOUTL(GBL,.DA)
  1. E D
  1. .S RET=$$GBLROOT^BGOPFUTL(FNUM,.GBL)
  1. .;D:RET'<0 @("VALIDATE"_GBL_"(.RET,.PTR,CODE)")
  1. .S:RET'<0 RET=$$UPDITEM(FNUM,CAT,SNO,DESCT,STAT,FREQ,TXT,NEW,GRP,.IEN,ITEM,PREF)
  1. .S:RET'<0 RET=IEN
  1. Q
  1. ; Update a category's item entry
  1. ; FNUM = Preference file #
  1. ; CAT = Category IEN
  1. ; SNO = Snomed CT
  1. ; DESCT= Desc CT
  1. ; STAT = Status
  1. ; CNT = Item count (or "+n" to increment existing count) (optional)
  1. ; TXT = Text of DESC CT (optional)
  1. ; NEW = If true, force creation of new entry (optional, default=false)
  1. ; GRP = Group for this item
  1. ; .ITM = Returned value of item IEN
  1. ; Return value is 0 if success, or -1^error text
  1. UPDITEM(FNUM,CAT,SNO,DESCT,STAT,CNT,TXT,NEW,GRP,ITM,ITEM,PREF) ;EP
  1. N FDA,IEN,GBL,SFN,RET
  1. S RET=$$GBLROOT^BGOPFUTL(FNUM,.GBL,.SFN)
  1. Q:RET RET
  1. ;S ITM=$S($G(NEW):0,1:$O(@GBL@(CAT,1,"B",SNO,0)))
  1. S ITM=$S($G(NEW):0,$G(ITEM):ITEM,1:$O(@GBL@(CAT,1,"B",SNO,0)))
  1. S:$E($G(CNT))="+" CNT=$S(ITM:$P(@GBL@(CAT,1,ITM,0),U,3),1:0)+CNT
  1. S FDA=$NA(FDA(SFN,$S(ITM:ITM,1:"+1")_","_CAT_","))
  1. S @FDA@(.01)=SNO
  1. S @FDA@(.02)=DESCT
  1. S:$D(CNT) @FDA@(.03)=CNT
  1. S @FDA@(.06)=STAT
  1. S @FDA@(.04)=$$NOW^XLFDT
  1. S @FDA@(.07)=PREF
  1. S:$D(TXT) @FDA@(6)=$TR(TXT,";",",")
  1. S:$D(GRP) @FDA@(7)=GRP
  1. S RET=$$UPDATE^BGOUTL(.FDA,"@",.IEN)
  1. I 'RET,'ITM S ITM=IEN(1)
  1. Q RET
  1. TMPGBL(X) ;EP
  1. K ^TMP("BGOPICK",$J) Q $NA(^($J))