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

VENPCCK.m

Go to the documentation of this file.
  1. VENPCCK ; IHS/OIT/GIS - KNOWLEDGE BASE ;
  1. ;;2.6;PCC+;**1,3**;APR 03, 2012;Build 24
  1. ;
  1. ;
  1. ;
  1. ;
  1. FETCH(DEFEF,DFN) ; EP-RETURN KNOWLEDGEBASE DATA
  1. I '$D(^DPT(+$G(DFN),0)) Q
  1. N KCIEN,IFLG,KIEN,HDR,IEN,STG,K,AGE,SEX,AGEFLAG,SEXFLAG,LAGFLAG,GESTFLAG,START,STOP,TMP,IX
  1. N CNT,TITLE,MOD,TOT,ARR,CAT,TIEN,DOM,ORD,KC,DORD,DIEN,%,LASTCNT,PECODE,AGEGRP
  1. S TMP=$NA(^TMP("VEN PRNT",$J,1))
  1. ; THERE ARE 2 POSSIBLE DRIVERS TO COLLECT KB ITEMS: LEGACY AND NEW. THE DEFAULT DRIVER IS THE NEW ONE.
  1. I '$O(^VEN(7.41,DEFEF,19,0)) G LEGACY ; IF THE DOMAIN MULTIPLE DOES NOT EXIST, USE THE LEGACY DRIVER
  1. NEW S DIEN=0 ; NEW GUIDELINES DRIVER
  1. F S DIEN=$O(^VEN(7.41,DEFEF,19,DIEN)) Q:'DIEN D ; DOMAIN CONTEXT DRIVER (PREFERRED IF IT EXISTS)
  1. . S %=$G(^VEN(7.41,DEFEF,19,DIEN,0))
  1. . S DOM=+% I 'DOM Q
  1. . I '$P($G(^VEN(7.13,DOM,0)),U,7) Q ; DOMAIN MUST BE ACTIVE
  1. . I $P($G(^VEN(7.13,DOM,0)),U)["NATL AG" Q ; NEW DRIVER EXCLUDES PT ED GUIDELINES. THESE ARE HANDLED SEPARATELY
  1. . S DORD=$P(%,U,2) I 'DORD S DORD=DIEN+100 ; EVERY DOMAIN MUST HAVE AN ORDER OR ONE WILL BE ASSIGNED
  1. . S KC=0
  1. . F S KC=$O(^VEN(7.13,DOM,1,KC)) Q:'KC D ; CREATE THE ORDINAL ARRAY.
  1. .. S %=$G(^VEN(7.13,DOM,1,KC,0))
  1. .. S KCIEN=+% I 'KCIEN Q
  1. .. S ORD=$P(%,U,2)
  1. .. I 'ORD S ORD=100+KC ; MAKE SURE EVERY CAT HAS AN ORDER - EVEN IF ONE IS NOT OFFICIALLY ASSIGNED
  1. .. S ORD(DORD,ORD)=KCIEN
  1. .. Q
  1. . Q
  1. S DORD=0,CNT=0
  1. SET F S DORD=$O(ORD(DORD)) Q:'DORD D
  1. . S ORD=0 F S ORD=$O(ORD(DORD,ORD)) Q:'ORD D I CNT>99 Q
  1. .. S KCIEN=ORD(DORD,ORD)
  1. .. I 'KCIEN Q
  1. .. S LASTCNT=CNT
  1. .. D GETKBI(KCIEN,.CNT) ; TRAVERSE THE ARRAY TO RETRIEVE CATS
  1. .. Q
  1. . I LASTCNT'=CNT S CNT=CNT+1 S @TMP@("k"_CNT)="." ; PUT A SPACER LINE BETWEEN DOMAINS
  1. . Q
  1. Q
  1. ;
  1. LEGACY ; EP-IF THE DOMAIN CONTEXT IS NOT DEFINED, USE THE LEGACY DRIVER BEASED ON THE KB MULTIPLE IN THE TEMPLATE FILE
  1. ; FOR BACKWARD COMPATIBILITY ONLY. THIS WILL BE PHASED OUT
  1. I '$O(^VEN(7.41,+$G(DEFEF),16,0)) Q ; IF THERE ARE NO KB ITEMS ASOCIATED WITH THE CURRENT FORM QUIT
  1. N CNT,TIEN,KCIEN,CNT
  1. S TIEN=0,CNT=0
  1. F S TIEN=$O(^VEN(7.41,DEFEF,16,TIEN)) Q:'TIEN D I CNT>99 Q ; LEGACY DRIVER FROM VER 2.5
  1. . S KCIEN=$G(^VEN(7.41,+$G(DEFEF),16,TIEN,0))
  1. . I 'KCIEN Q
  1. . D GETKBI(KCIEN,.CNT) ; GET INFO ABOUT KNOWLEDGE CATEGORY
  1. . Q
  1. Q
  1. ;
  1. GETKBI(KCIEN,CNT) ; EP - GET KB ITEMS FROM A SPECIFIC CATEGORY
  1. N AGE
  1. S K=$G(^VEN(7.11,KCIEN,0)) I '$L(K) Q
  1. S CAT=$P(K,U) I '$L(CAT) Q
  1. S HDR=$P(K,U,9)
  1. S CNT=CNT+1 I CNT>100 Q
  1. S AGEFLAG=$P(K,U,5) ; SCREEN BY AGE
  1. I AGEFLAG S AGE=$$DAYS(DFN) I 'AGE Q
  1. S GESTFLAG=$P(K,U,6) ; SCREEN BY WKS GESTATION
  1. S LAGFLAG=$P(K,U,7) ; SCREEN BY TIME SINCE LAST
  1. S SEXFLAG=$P(K,U,8) ; SCREEN BY SEX
  1. I SEXFLAG S SEX=$P($G(^DPT(+$G(DFN),0)),U,2) I '$L(SEX) Q
  1. I $G(AGE) S PECODE=$P(K,U,13) I $L(PECODE) D
  1. . S Z=AGE,AGEGRP=$S(Z<62:"N",Z<366:"I",Z<1096:"T",Z<1827:"P",Z<4384:"S",Z<7686:"A",1:"")
  1. . I '$L(AGEGRP) Q
  1. . S HDR=HDR_" ("_PECODE_"-"_AGEGRP_")"
  1. . Q
  1. S @TMP@("k"_CNT)=HDR ; SET THE HEADER NODE FOR THIS SET OF ITEMS
  1. S KIEN=0,TOT=0 K ARR
  1. F S KIEN=$O(^VEN(7.12,"B",KCIEN,KIEN)) Q:'KIEN D I CNT>99 Q ; CHECK EA. ENTRY IN THE KNOWLEDGE CATEGORY
  1. . S STG=$G(^VEN(7.12,KIEN,0)) I '$L(STG) Q
  1. . I $P(STG,U,11) Q ; INACTIVE ITEM !!!
  1. . I AGEFLAG S START=$P(STG,U,5) I AGE<START Q
  1. . I AGEFLAG S STOP=$P(STG,U,6) I AGE>STOP Q
  1. . I SEXFLAG S %=$P(STG,U,10) I $L(%),%'=SEX Q
  1. . S TITLE=$P(STG,U,2) I '$L(TITLE) Q
  1. . I CAT["WCAG "!(CAT["WCEX ") D LAST(KCIEN,KIEN,DFN,.TITLE) ; FOR PT ED, APPEND LAST PT ED RESULTS TO TITLE
  1. . S MOD=$P(STG,U,12)
  1. . I $L(MOD) S TITLE=TITLE_" ("_MOD_")"
  1. . I MOD,($P($G(^VEN(7.12,KIEN,0)),U,16)!(CAT["WELL CHILD DEVEL")!(CAT["WCDA ")) D Q
  1. .. S TOT=TOT+1
  1. .. S ARR(MOD,TOT)="__ "_TITLE
  1. .. S ARR(MOD,TOT,"IX")=KIEN
  1. .. Q
  1. . ; NO SECONDARY SORT REQUIRED
  1. . S CNT=CNT+1,TOT=TOT+1
  1. . S @TMP@("k"_CNT)="__ "_TITLE ; SET THE ITEM NODE
  1. . S @TMP@("k"_CNT,"IX")=KIEN ; ITEM IEN X-REF
  1. . Q
  1. NOITEMS I 'TOT K @TMP@("k"_CNT) S CNT=CNT-1 Q ; NO ITEMS FOUND IN THIS CATEGORY, SO DELETE IT
  1. I $D(ARR) D ; SORT BY %ILE
  1. . S MOD=999
  1. . F S MOD=$O(ARR(MOD),-1) Q:'MOD S TOT=0 F S TOT=$O(ARR(MOD,TOT)) Q:'TOT D I CNT>99 Q
  1. .. S CNT=CNT+1
  1. .. S @TMP@("k"_CNT)=ARR(MOD,TOT)
  1. .. S @TMP@("k"_CNT,"IX")=ARR(MOD,TOT,"IX")
  1. .. Q
  1. . K ARR
  1. . Q
  1. KX Q
  1. ;
  1. LAST(KCIEN,KIEN,DFN,TITLE) ; EP - GET LAST RESULT AND APPEND TO RESULT
  1. N MAXIDT,LASTDT,LASTRES,TXT,%
  1. S MAXIDT=9999999-(DT-20000) ; GO BACK UP TO 2 YEARS
  1. S TXT=TITLE
  1. I $E(TXT,1,3)="__ " S TXT=$E(TXT,4,999)
  1. D LAST^VENPCCKX(KIEN,KCIEN,TXT,DFN,MAXIDT,.LASTDT,.LASTRES)
  1. I '$G(LASTDT) Q
  1. S %=$$FMTE^XLFDT(LASTDT,2) I '$L(%) Q
  1. I $L($G(LASTRES)) S %=%_" "_LASTRES
  1. S TITLE=TITLE_" ("_%_")"
  1. Q
  1. ;
  1. IMPORT ; EP-IMPORT KNOWLEGEBASE CONTENT FOR WELL CHILD CARE
  1. D PTED,NUTR,EXAM,DM
  1. Q
  1. ;
  1. NUTR ; EP-NUTRITION TOPICS
  1. N DIK,DA
  1. S DIK="^VEN(7.12,"
  1. S DA=0 F S DA=$O(^VEN(7.12,"B",7,DA)) Q:'DA D ^DIK ; CLEAN OUT THE TYPE
  1. D ^XBFMK
  1. N ARR,FILE,TYPE
  1. S FILE="TBLNUT.TXT",TYPE=7
  1. S ARR=$NA(^TMP("VEN KB",$J)) K @ARR
  1. D PE1(FILE) ; BUILD PRIMARY ARRAY
  1. D PASS2
  1. D FILE(TYPE)
  1. K @ARR
  1. D ^XBFMK
  1. Q
  1. ;
  1. PTED ; EP-PATIENT ED TOPICS
  1. N DIK,DA
  1. S DIK="^VEN(7.12,"
  1. S DA=0 F S DA=$O(^VEN(7.12,"B",6,DA)) Q:'DA D ^DIK ; CLEAN OUT THE TYPE
  1. D ^XBFMK
  1. N ARR,FILE,TYPE
  1. S FILE="TBLINJURYP.TXT",TYPE=6
  1. S ARR=$NA(^TMP("VEN KB",$J)) K @ARR
  1. D PE1(FILE) ; BUILD PRIMARY ARRAY
  1. D PASS2
  1. D FILE(TYPE)
  1. K @ARR
  1. D ^XBFMK
  1. Q
  1. ;
  1. PE1(FILE) ; EP - FIRST PASS FOR PATIENT ED AND NUTRITION TOPICS
  1. N PATH,POP,XCODE,SS,PCE,CNT,REC,TOT
  1. S PATH="C:\ITSC\kb\"
  1. S POP=$$OPN^VENPCCP(PATH,FILE,"R","F CNT=0:1 R REC(CNT) I $L(REC(CNT))<3 K REC(CNT) Q")
  1. S TOT=$L(REC(0),U) I TOT<3 Q
  1. F PCE=1:1:TOT D
  1. . S SS=$P(REC(0),U,PCE)
  1. . I $E(SS,1,3)="i " Q
  1. . S CNT=0
  1. . F S CNT=$O(REC(CNT)) Q:'CNT D
  1. .. S XCODE=$P(REC(CNT),U,PCE)
  1. .. S @ARR@($E(SS,1,30),CNT)=XCODE_U_SS
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. EXAM ; EP-IMPORT EXAM FILE INTO KNOWLEDGE BASE
  1. N DIK,DA
  1. S DIK="^VEN(7.12,"
  1. S DA=0 F S DA=$O(^VEN(7.12,"B",2,DA)) Q:'DA D ^DIK ; CLEAN OUT THE TYPE
  1. D ^XBFMK
  1. N ARR,FILE,TYPE
  1. S FILE="TBLEXAM.TXT",TYPE=2
  1. S ARR=$NA(^TMP("VEN KB",$J)) K @ARR
  1. D PASS1(FILE) ; BUILD PRIMARY ARRAY
  1. D PASS2
  1. D FILE(TYPE)
  1. K @ARR
  1. D ^XBFMK
  1. Q
  1. ;
  1. PASS1(FILE) ; EP - GENERATE A PRIMARY ARRAY FROM THE FILE
  1. N PATH,POP,VAL,SS,PCE,CNT,REC,TOT
  1. S PATH="C:\ITSC\kb\"
  1. S POP=$$OPN^VENPCCP(PATH,FILE,"R","F CNT=0:1 R REC(CNT) I $L(REC(CNT))<3 K REC(CNT) Q")
  1. S TOT=$L(REC(0),U) I TOT<3 Q
  1. F PCE=1:1:TOT D
  1. . S SS=$P(REC(0),U,PCE)
  1. . S CNT=0
  1. . F S CNT=$O(REC(CNT)) Q:'CNT D
  1. .. S VAL=$P(REC(CNT),U,PCE)
  1. .. S @ARR@(SS,CNT)=VAL
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. PASS2 ; EP - BUILD SECONDARY ARRAY FOR NON-DEVEL ITEMS
  1. N SS,CNT,START,VAL,STOP
  1. S SS="" F S SS=$O(@ARR@(SS)) Q:SS="" D
  1. . I SS'="AGE",SS'="ID",SS'="test",SS'="test2",SS'="car seats"
  1. . E K @ARR@(SS) Q
  1. . S CNT=0,START=0
  1. . F Q:START S CNT=$O(@ARR@(SS,CNT)) Q:'CNT D
  1. .. S VAL=@ARR@(SS,CNT)
  1. .. I $L($P(VAL,U)) S START=CNT
  1. .. Q
  1. . I 'START Q
  1. . S CNT=999999,STOP=0
  1. . F Q:STOP S CNT=$O(@ARR@(SS,CNT),-1) Q:'CNT D
  1. .. S VAL=@ARR@(SS,CNT)
  1. .. I $L($P(VAL,U)) S STOP=CNT
  1. .. Q
  1. . K @ARR@(SS)
  1. . S @ARR@(SS)=START_U_STOP_U_VAL
  1. . Q
  1. Q
  1. ;
  1. FILE(TYPE) ; EP-UPDATE VEN EHP KB ITEM FILE
  1. N DIC,DIE,X,Y,MN,DR,DA,TEXT,CODE,UNIT,STG,Z,SEXSCR,AGE1,AGE2,SEX,%,AX1,AX2,XCODE
  1. S STG=$G(^VEN(7.11,TYPE,0)) I '$L(STG) Q
  1. S MN=$P(STG,U,2) I '$L(MN) Q
  1. S UNIT=$P(STG,U,10) I '$L(UNIT) Q
  1. S SEXSCR=+$P(STG,U,8)
  1. S (DIE,DIC)="^VEN(7.12,",DIC(0)="L",DLAYGO=19707.12
  1. S DR=".02////^S X=TEXT;.03////^S X=CODE;.05////^S X=AGE1;.06////^S X=AGE2;.1////^S X=SEX;"
  1. S DR=DR_".13////^S X=AX1;.14////^S X=AX2;.04////^S X=XCODE"
  1. S TEXT="" F S TEXT=$O(@ARR@(TEXT)) Q:'$L(TEXT) D
  1. . S Z=$G(@ARR@(TEXT)) I '$L(Z) Q
  1. . S AGE1=$P(Z,U) I AGE1=1 S AGE1=0
  1. . S AX1=AGE1
  1. . I AGE1 S AGE1=$$TIME(AGE1,UNIT) I 'AGE1 Q
  1. . S (AX2,AGE2)=$P(Z,U,2)
  1. . S AGE2=$$TIME(AGE2,UNIT) I 'AGE2 Q
  1. . S SEX="" I SEXSCR,TYPE=2 S %=$P(Z,U,3) I %="F"!(%="M") S SEX=%
  1. . S XCODE=""
  1. . I TYPE=6 S XCODE=$P(Z,U,3),TEXT=$P(Z,U,4) ; PT ED FULL TOPIC NAME AND XCODE
  1. . I TYPE=7 S TEXT=$P(Z,U,4) ; NUTRITION FULL TOPIC NAME
  1. . S X="""`"_TYPE_""""
  1. . D ^DIC I Y=-1 Q
  1. . S DA=+Y
  1. . S CODE=MN_DA
  1. . L +^VEN(7.12,DA):0 I $T D ^DIE L -^VEN(7.12,DA)
  1. . Q
  1. Q
  1. ;
  1. DM ; EP-DDST MILESTONES
  1. N ARR,FILE,TYPE,NAME
  1. F TYPE=1,3:1:5 S NAME=$P("Fine^^Gross^Lang^Social",U,TYPE) D
  1. . S ARR=$NA(^TMP("VEN KBX",$J)) K @ARR
  1. . S FILE="Tbl"_NAME_".txt"
  1. . D D1(FILE,TYPE)
  1. . S ARR=$NA(^TMP("VEN KB",$J)) K @ARR
  1. . S FILE="TblNo"_NAME_".txt"
  1. . D D1(FILE,TYPE)
  1. . K ^TMP("VEN KBX",$J)
  1. . D DFILE(TYPE)
  1. . K ^TMP("VEN KB",$J)
  1. . D ^XBFMK
  1. . Q
  1. Q
  1. ;
  1. D1(FILE,TYPE) ; EP - FIRST DEVELOPMENTAL PASS
  1. I $L($G(FILE)),$D(^VEN(7.11,+$G(TYPE),0))
  1. E Q
  1. N DIK,DA
  1. S DIK="^VEN(7.12,"
  1. S DA=0 F S DA=$O(^VEN(7.12,"B",TYPE,DA)) Q:'DA D ^DIK ; CLEAN OUT THE TYPE
  1. D ^XBFMK
  1. N PATH,POP,PCT,XSTART,XSTOP,SS,PCE,CNT,REC,TOT,AGE,INACTIVE
  1. S PATH="C:\ITSC\kb\"
  1. S POP=$$OPN^VENPCCP(PATH,FILE,"R","F CNT=0:1 R REC(CNT) I $L(REC(CNT))<3 K REC(CNT) Q")
  1. S TOT=$L(REC(0),U) I TOT<3 Q
  1. F PCE=3:1:TOT D ; IGNORE THE 1ST 2 FIELDS
  1. . S SS=$P(REC(0),U,PCE)
  1. . S CNT=0
  1. . F S CNT=$O(REC(CNT)) Q:'CNT D
  1. .. S PCT=$P(REC(CNT),U,PCE) I PCT="" Q ; NULL = DON'T SHOW IT. 0 = INACTIVATE IT.
  1. .. S AGE=$P(REC(CNT),U,2) I AGE="" Q
  1. .. S XSTART=AGE S XSTOP=AGE+.5 I AGE>18 S XSTOP=XSTOP+.5
  1. .. S AGE=$$TIME(AGE,"M")
  1. .. S INACTIVE=($P($G(^TMP("VEN KBX",$J,SS,AGE)),U)=0)
  1. .. S @ARR@(SS,AGE)=PCT_U_INACTIVE_U_XSTART_U_XSTOP
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. DFILE(TYPE) ; EP-FILE DEVELOPMENTAL DATA
  1. N DIC,DIE,X,Y,MN,DR,DA,TEXT,CODE,UNIT,STG,Z,SEXSCR,SEX,%,A1,A2,PCT,INACTIVE,%,XSTART,XSTOP
  1. S STG=$G(^VEN(7.11,TYPE,0)) I '$L(STG) Q
  1. S MN=$P(STG,U,2) I '$L(MN) Q
  1. S (DIE,DIC)="^VEN(7.12,",DIC(0)="L",DLAYGO=19707.12
  1. S DR=".02////^S X=TEXT;.03////^S X=CODE;.05////^S X=A1;.06////^S X=A2;.12////^S X=PCT;"
  1. S DR=DR_".11////^S X=INACTIVE;.13////^S X=XSTART;.14////^S X=XSTOP"
  1. S TEXT=""
  1. F S TEXT=$O(@ARR@(TEXT)) Q:'$L(TEXT) I TEXT'="AGE",TEXT'="ID" S A1=0 F S A1=$O(@ARR@(TEXT,A1)) Q:'A1 D
  1. . S X="""`"_TYPE_""""
  1. . D ^DIC I Y=-1 Q
  1. . S A2=$O(@ARR@(TEXT,A1))
  1. . I A2 S A2=A2-1
  1. . E S A2=A1+15 I A1>550 S A2=A2+15
  1. . S %=$G(@ARR@(TEXT,A1))
  1. . S PCT=+%
  1. . S INACTIVE=$P(%,U,2)
  1. . S XSTART=$P(%,U,3) S XSTOP=$P(%,U,4)
  1. . S DA=+Y
  1. . S CODE=MN_DA
  1. . L +^VEN(7.12,DA):0 I $T D ^DIE L -^VEN(7.12,DA)
  1. . Q
  1. Q
  1. ;
  1. TIME(AGE,UNIT) ; EP - CONVERT TIME TO DAYS
  1. I $G(AGE)="" Q ""
  1. I 'AGE Q 0
  1. I '$L($G(UNIT)) Q ""
  1. I UNIT="D" Q AGE
  1. I UNIT="W" Q (AGE*7)
  1. I UNIT="M" Q ((AGE*30.5)\1)
  1. I UNIT="Y" Q ((AGE*365.35)\1)
  1. Q ""
  1. ;
  1. TRIG(AGE,IEN,MODE) ; EP - TRIGGER DAYS FROM EXTERNAL AGE
  1. ; MODE = 1 START ; MODE = 2 STOP
  1. N CAT,CIEN,DAYS,STG,UNIT,START,STOP
  1. S STG=$G(^VEN(7.12,IEN,0)) I '$L(STG) Q ""
  1. S CIEN=+STG,START=$P(STG,U,5),STOP=$P(STG,U,6)
  1. S CAT=$P($G(^VEN(7.11,CIEN,0)),U) I '$L(CAT) Q ""
  1. I CAT["WELL CHILD DEVEL" Q $S(MODE=1:START,MODE=2:STOP,1:"") ; DONT TRIGGER AGE FOR DEVELOPMENT ITEMS
  1. S UNIT=$P(^VEN(7.11,CIEN,0),U,10) I '$L(UNIT) Q ""
  1. S DAYS=$$TIME(AGE,UNIT)
  1. Q DAYS ; ADD
  1. ;
  1. DAYS(DFN) ; EP - GIVEN A DOB, RETURN THE AGE IN DAYS
  1. N DOB
  1. S DOB=$P($G(^DPT(+$G(DFN),0)),U,3)
  1. I '$G(DOB) Q ""
  1. Q $$FMDIFF^XLFDT(DT,DOB,1)
  1. ;
  1. TAX(OUT,IN) ; EP - RPC: VEN PCC+ KB TAXONOMY
  1. S OUT="BMX ADO SS^VEN KB TAXONOMY^^~~~~~ITAX~VENPCCK~" ; RETURN ALL TAXONOMIES
  1. Q
  1. ;
  1. ITAX(PARAM,IENS,MAX,OUT,TOT) ; EP - RETURN A LIST OF TEMPLATES ASSOCIATED WITH A KB GROUP
  1. N NAME,DA,STG,EX
  1. S EX=$C(68)_" DATA"_U
  1. S EX=EX_"BMXADOV1(IENS,DA)"
  1. S NAME=""
  1. F S NAME=$O(^ATXAX("B",NAME)) Q:NAME="" D
  1. . S DA=0
  1. . F S DA=$O(^ATXAX("B",NAME,DA)) Q:'DA D
  1. .. I $P($G(^ATXAX(DA,0)),U,15)'=80 Q ; MUST BE AN ICD TAXONOMY
  1. .. X EX
  1. .. Q
  1. . Q
  1. Q ""
  1. ;
  1. FKBT(KGIEN,IENS,MAX,OUT,TOT) ; EP - RETURN A LIST OF TEMPLATES ASSOCIATED WITH A KB GROUP
  1. N MODE S MODE=1
  1. D FKBTX
  1. Q ""
  1. ;
  1. NKBT(KGIEN,IENS,MAX,OUT,TOT) ; EP - RETURN A LIST OF TEMPLATES THAT ARE NOT ASSOCIATED WITH A KB GROUP
  1. N MODE S MODE=0
  1. D FKBTX
  1. Q ""
  1. ;
  1. FKBTX ; EP - FILTERS
  1. N NAME,DA,STG,EX
  1. S EX=$C(68)_" DATA"_U
  1. S EX=EX_"BMXADOV1(IENS,DA)"
  1. I '$D(^VEN(7.11,+$D(KGIEN),0)) Q
  1. S NAME=""
  1. F S NAME=$O(^VEN(7.41,"B",NAME)) Q:NAME="" D
  1. . S DA=0
  1. . F S DA=$O(^VEN(7.41,"B",NAME,DA)) Q:'DA D
  1. .. I MODE,'$O(^VEN(7.41,DA,16,"B",KGIEN,0)) Q ; FILTER OUT FORM IF IT IS NOT ASSOCIATED WITH THIS KB GROUP
  1. .. I 'MODE,$O(^VEN(7.41,DA,16,"B",KGIEN,0)) Q ; FILTER OUT FORM IF IT IS NOT ASSOCIATED WITH THIS KB GROUP
  1. .. X EX
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. KBT1(OUT,IN) ; EP - RPC: VEN PCC+ GET KB TEMPLATES
  1. I $G(IN)="" S OUT="" Q ; INVALID KB GROUP
  1. S OUT="BMX ADO SS^VEN KB TEMPLATES^^~~~~~FKBT~VENPCCK~"_IN ; RETURN ALL TEMPLATES ASSOC W KB GRP
  1. Q
  1. ;
  1. KBT2(OUT,IN) ; EP - RPC: VEN PCC+ GET NON KB TEMPLATES
  1. I $G(IN)="" S OUT="" Q ; INVALID KB GROUP
  1. S OUT="BMX ADO SS^VEN KB TEMPLATES^^~~~~~NKBT~VENPCCK~"_IN ; RETURN ALL TEMPLATES NOT ASSOC W KB GRP
  1. Q
  1. ;
  1. KBG(OUT,IN) ; EP - RPC: VEN PCC+ GET KB GROUPS
  1. S OUT="BMX ADO SS^VEN KB CATEGORY^^B~~~999999"
  1. Q
  1. ;
  1. KBI(OUT,IN) ; EP-SUBMIT KB GROUP AND RETURN ALL THE ITEMS IN A TABLE
  1. S OUT=""
  1. I '$L(IN) Q
  1. N DIC,X,KGIEN,KIEN,DA
  1. S KGIEN=$O(^VEN(7.11,"B",IN,0))
  1. I 'KGIEN D ; NEED TO ADD NEW GROUP
  1. . S DIC="^VEN(7.11,",DOC(0)="L"
  1. . S DLAYGO=19707.11 S X=IN
  1. . D ^DIC I Y=-1 Q
  1. . S KGIEN=+Y
  1. . Q
  1. D ^XBFMK
  1. I 'KGIEN Q
  1. S OUT="BMX ADO SS^VEN KB ITEM^^B~"_KGIEN_"~"_KGIEN_"~999999"
  1. Q
  1. ;
  1. KBT3(OUT,IN) ; EP-ASSOCIATE KB GROUP WITH TEMPLATES
  1. N DIC,X,Y,DA,STG,PCE,KB
  1. S KB=+$G(IN) I '$D(^VEN(7.11,KB,0)) Q ""
  1. S DIC("P")="19707.4116P" S DIC(0)="L" S DLAYGO=19707.4116
  1. S STG=$P(IN,";",2)
  1. F PCE=1:1:$L(STG,",") D
  1. . S DA(1)=$P(STG,",",PCE)
  1. . S X="`"_KB
  1. . I '$D(^VEN(7.41,DA(1))) Q
  1. . S DIC="^VEN(7.41,"_DA(1)_",16,"
  1. . D ^DIC
  1. . Q
  1. S OUT="OK" D ^XBFMK
  1. Q
  1. ;