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

BGOSNOP2.m

Go to the documentation of this file.
  1. BGOSNOP2 ; IHS/MSC/MGH - SNOMED PREFERENCES MANAGER 2 ;07-Apr-2016 07:54;du
  1. ;;1.1;BGO COMPONENTS;**13,14,20**;Mar 20, 2007;Build 1
  1. ; Clone a preference
  1. ; INP = Pref IEN (from) ^ Pref IEN (to)
  1. CLONE(RET,INP) ;EP
  1. N FROM,TO,ITM,SFN,GBL,FNUM,X1
  1. S FNUM=90362.34
  1. K RET
  1. S RET=$$GBLROOT^BGOPFUTL(FNUM,.GBL,.SFN)
  1. Q:RET
  1. I $G(INP)="" S RET=$$ERR^BGOUTL(1008) Q
  1. S FROM=+INP
  1. I 'FROM S RET=$$ERR^BGOUTL(1038) Q
  1. I '$D(@GBL@(FROM,0)) S RET=$$ERR^BGOUTL(1039) Q
  1. S TO=$P(INP,U,2)
  1. I 'TO S RET=$$ERR^BGOUTL(1040) Q
  1. I '$D(@GBL@(TO,0)) S RET=$$ERR^BGOUTL(1041) Q
  1. S ITM=0
  1. F S ITM=$O(@GBL@(FROM,1,ITM)) Q:'ITM D Q:RET
  1. .N FDA,X
  1. .Q:$O(@GBL@(TO,1,"B",ITM,0))
  1. .S X=@GBL@(FROM,1,ITM,0)
  1. .S X1=@GBL@(FROM,1,ITM,1)
  1. .S FDA=$NA(FDA(SFN,"+1,"_TO_","))
  1. .S @FDA@(.01)=+X
  1. .S @FDA@(.02)=$P(X,U,2)
  1. .S @FDA@(.03)=$P(X,U,3)
  1. .S @FDA@(6)=$P(X1,U,1)
  1. .S RET=$$UPDATE^BGOUTL(.FDA,"@")
  1. Q
  1. ; Execute query
  1. ; INP = Category IEN [1] ^ Provider IEN [2] ^ Clinic IEN [3] ^ Provider Class [4] ^ Hospital Location [5] ^
  1. ; Start Date [6] ^ End Date [7] ^ Max Hits [8]
  1. QUERY(RET,INP) ;EP
  1. N CAT,PRV,CLN,CLS,HL,BEGDT,ENDDT,VD,VIEN,VIS,PIEN,DX,ICD,REC,ICD,TXT,CNT,MAX,X
  1. N SNO,DESCT
  1. S RET=""
  1. S CAT=$P(INP,U)
  1. S PRV=$P(INP,U,2)
  1. S CLN=$P(INP,U,3)
  1. S CLS=$P(INP,U,4)
  1. S HL=$P(INP,U,5)
  1. S BEGDT=$P(INP,U,6)
  1. S ENDDT=$P(INP,U,7)
  1. S MAX=+$P(INP,U,8)
  1. I CLN="",CLS="",PRV="",HL="" S RET=$$ERR^BGOUTL(1022) Q
  1. S RET=$$QRYINIT^BGOPFUTL(90362.34,CAT)
  1. Q:RET
  1. S VD=$S(BEGDT:BEGDT,1:DT-20000)
  1. S:'ENDDT ENDDT=DT
  1. S CNT=0
  1. F S VD=$O(^AUPNVSIT("B",VD)) Q:'VD!RET!(VD>ENDDT) D
  1. .S VIEN=0
  1. .S VIEN=$O(^AUPNVSIT("B",VD,VIEN)) Q:'VIEN!RET D
  1. ..S VIS=$G(^AUPNVSIT(VIEN,0))
  1. ..Q:VIS=""
  1. ..I CLN,$P(VIS,U,8)'=CLN Q
  1. ..I HL,$P(VIS,U,22)'=HL Q
  1. ..I PRV!CLS,'$$VISPRCL^BGOPFUTL(VIEN,PRV,CLS) Q
  1. ..S DX=0
  1. ..F S DX=$O(^AUPNVPOV("AD",VIEN,DX)) Q:'DX!RET D
  1. ...S SNO=$P($G(^AUPNVPOV(DX,11)),U)
  1. ...I SNO'="" D
  1. ....S CNT=CNT+1
  1. ....S DESCT=$P($G(^AUPNVPOV(DX,11)),U,2)
  1. ....S:CNT=MAX RET=CNT
  1. ....S REC=^AUPNVPOV(DX,0)
  1. ....S TXT=$$GET1^DIQ(9000010.07,DX,.04)
  1. ....D QRYADD^BGOPFUTL(90362.34,CAT,SNO,TXT)
  1. S RET=$$QRYDONE^BGOPFUTL(90362.34,CAT)
  1. Q
  1. UPDITEM(FNUM,CAT,PTR,CNT,TXT,NEW,ITM) ;EP
  1. N FDA,IEN,GBL,SFN,RET,DESCT,X,IEN,ERR,SNO,TXT2
  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",PTR,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. ;IHS/MSC/MGH use new API
  1. ;S X=$$CONC^BSTSAPI(PTR_"^^^1")
  1. S X=$$CONC^AUPNSICD(PTR_"^^^1")
  1. S DESCT=$P(X,U,3),TXT2=$P(X,U,4)
  1. S @FDA@(.01)=PTR
  1. S:$D(CNT) @FDA@(.03)=CNT
  1. S:$G(DESCT) @FDA@(.02)=DESCT
  1. I TXT2'="" S @FDA@(6)=TXT2
  1. ;D UPDATE^DIE(,"FDA","IEN","ERR")
  1. ;I '$D(ERR),'ITM S ITM=IEN(1)
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E@",.IEN)
  1. I 'RET,'ITM S ITM=IEN(1)
  1. Q RET
  1. UPSTAT(RET,PICK) ;Update status to default on a picklist
  1. N LP,OUT,BGOS,BGODEF,BGOSNO,IN,BGOSNO,BGODEF,DATA,SNODATA,FDA,BGODEF,DEFST
  1. S RET=0,CNT=0
  1. S SFN=90362.342
  1. ;Loop through all the SNOMEDS on the picklist
  1. S LP=0 F S LP=$O(^BGOSNOPR(PICK,1,LP)) Q:'+LP D
  1. .S BGOSNO=$P($G(^BGOSNOPR(PICK,1,LP,0)),U,1)
  1. .;get this snomed's default status
  1. .S SNODATA=$$CONC^AUPNSICD(BGOSNO_"^^^1")
  1. .S DEFST=$P(SNODATA,U,9)
  1. .S DEFST=$S(DEFST="Chronic":"A",DEFST="Sub-acute":"S",DEFST="Episodic":"E",DEFST="Social/Environmental":"O",DEFST="Routine/Admin":"R",DEFST="Admin":"R",1:"")
  1. .I DEFST'="" D
  1. ..S FDA=$NA(FDA(SFN,LP_","_PICK_","))
  1. ..S @FDA@(.06)=DEFST
  1. ..S @FDA@(.04)=$$NOW^XLFDT
  1. ..S DATA=$$UPDATE^BGOUTL(.FDA,"")
  1. ..I 'DATA S CNT=CNT+1
  1. ..K DATA
  1. S RET=CNT
  1. Q
  1. SETSUB ;
  1. N X,Y
  1. S X=$$SUBLST^BSTSAPI(OUT,IN)
  1. ;SET UP INDEX
  1. S Y=0 F S Y=$O(^TMP($J,BGOS,Y)) Q:Y'=+Y D
  1. .S X=$P(^TMP($J,BGOS,Y),U,1)
  1. .S ^TMP($J,"I",X,BGOS)=""
  1. .Q
  1. Q
  1. UPDATE ;Update all picklist items to default status
  1. N ZTRTN,TSK,ZTDESC
  1. W !,"Update all picklist items to default status",!!
  1. S ZTRTN="OUT^BGOSNOP2"
  1. S ZTDESC="Update picklists to default status"
  1. S TSK=$$QUEUE^CIAUTSK(ZTRTN,ZTDESC,"","","","","")
  1. W !,"Picklist update has scheduled task number: "_TSK
  1. Q
  1. OUT ;Update all subset with default status
  1. N IEN,SIEN,RET,PICK
  1. N LP,OUT,BGOS,BGODEF,BGOSNO,IN,BGOSNO,BGODEF,DATA,SFN,FDA
  1. S RET=0,CNT=0
  1. S SFN=90362.342
  1. S PICK=0
  1. ;Loop through the picklists
  1. S IEN=0 F S IEN=$O(^BGOSNOPR(IEN)) Q:'+IEN!(PICK>3) D
  1. .S PICK=PICK+1
  1. . ;Loop through all the SNOMEDS on the picklist
  1. .S LP=0 F S LP=$O(^BGOSNOPR(IEN,1,LP)) Q:'+LP D
  1. ..S BGOSNO=$P($G(^BGOSNOPR(IEN,1,LP,0)),U,1)
  1. ..;get this snomed's default status
  1. ..S SNODATA=$$CONC^AUPNSICD(BGOSNO_"^^^1")
  1. ..S DEFST=$P(SNODATA,U,9)
  1. ..S DEFST=$S(DEFST="Chronic":"A",DEFST="Sub-acute":"S",DEFST="Episodic":"E",DEFST="Social/Environmental":"O",DEFST="Routine/Admin":"R",DEFST="Admin":"R",1:"")
  1. ..I DEFST'="" D
  1. ...S FDA=$NA(FDA(SFN,LP_","_IEN_","))
  1. ...S @FDA@(.06)=DEFST
  1. ...S @FDA@(.04)=$$NOW^XLFDT
  1. ...S DATA=$$UPDATE^BGOUTL(.FDA,"")
  1. ...I 'DATA S CNT=CNT+1
  1. ...K DATA
  1. S RET=CNT
  1. Q