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

VENPCC1P.m

Go to the documentation of this file.
  1. VENPCC1P ; IHS/OIT/GIS - NEW ICD PREFERENCES MANAGER - ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ;
  1. ;
  1. ;
  1. DX(DEFEF,PRV,DFN,DEPTIEN) ; EP - POPULATE THE DX PREFERENCE LIST
  1. N GIEN,PIEN,PCE,CLASS,UID,IX,X,%,DX,IIEN,STG,ICD,TXT,TOT,VAR,VAR1,POS,CPV,IPV,ORD,TORD,TXT,CODE
  1. S GIEN=$P($G(^VEN(7.41,+$G(DEFEF),0)),U,18) ; GET THE ICD GRP ASSOCIATED WITH THIS FORM - IF THERE IS ONE
  1. I GIEN="" S GIEN=$O(^VEN(7.33,"B","PRIMARY",0)) I 'GIEN Q ; OTHERWISE REVERT TO THE 'PRIMARY' GRP
  1. S PIEN="" ; GET THE PROVIDER BASED ON THE DEFAULT HIERARCHY
  1. S %=$O(^VEN(7.34,"AC",(PRV_"_"_GIEN)))
  1. I +%=PRV S PIEN=PRV ; TRY THE PROVIDER LISTED AT CHECKIN
  1. I PIEN="" D ; TRY THE CLINIC'S DEFAULT PROVIDER
  1. . S CPV=$P($G(^VEN(7.95,DEPTIEN,2)),U,2) I '% Q
  1. . S %=$O(^VEN(7.34,"AC",(CPV_"_"_GIEN)))
  1. . I +%=CPV S PIEN=CPV
  1. . Q
  1. I PIEN="" D I PIEN="" Q ; TRY THE INSTITUTIONAL DEFAULT PROVIDER
  1. . S IPV=$P($G(^VEN(7.5,$$CFG^VENPCCU,0)),U,13) I 'IPV Q ; PATCHED BY GIS/OIT 10/6/05 ; PCC+ 2.5 PATCH 1
  1. . S %=$O(^VEN(7.34,"AC",(IPV_"_"_GIEN)))
  1. . I +%=IPV S PIEN=IPV Q
  1. . S X=$O(^VEN(7.33,"B","PRIMARY",0)) I X=GIEN Q ; CHECK FOR SECONDARY SET OF THE INSTITUTIONAL PROVIDER
  1. . S %=$O(^VEN(7.34,"AC",(IPV_"_"_X)))
  1. . I +%=IPV S PIEN=PRV
  1. . Q
  1. S CLASS=$$CLASS^VENPCC1B(DFN) I 'CLASS Q ; GET THE PATENT'S DEMOGRAPHIC CLASS (8 POSSIBLE CLASSES)
  1. S PCE=$P("1^3^7^5^11^9^15^13",U,CLASS) ; GET THE PIECE OF THE NODE THAT CORRESPONDS TO THE PTS CLASS
  1. S (IX,UID)=PIEN_"_"_GIEN
  1. K ORD S TORD=+$P($G(^VEN(7.41,+$G(DEFEF),0)),U,20)
  1. UID ; EP - FOR GENERATING THE ARRAY
  1. F S UID=$O(^VEN(7.34,"AC",UID)) Q:$P(UID,"_",1,2)'=IX D ; LIMIT RESULTS TO PROVIDER AND ICD PREFERENCE GRP
  1. . S IIEN=$O(^VEN(7.34,"AC",UID,0)) I 'IIEN Q
  1. . I '$P($G(^VEN(7.34,IIEN,1)),U,PCE) Q ; CLASS MUST BE ACTIVE FOR THIS ITEM
  1. . I TORD=0 S ORD(IIEN,IIEN)=""
  1. . I TORD=1 S TXT=$P($G(^VEN(7.34,IIEN,0)),U,3) Q:'$L(TXT) S ORD($E(TXT,1,30),IIEN)=""
  1. . I TORD=2 S CODE=$P(UID,"_",3) Q:'$L(CODE) Q:CODE=0 S ORD(CODE,IIEN)=""
  1. . Q
  1. S X="",POS=0 K DX
  1. F S X=$O(ORD(X)) Q:X="" S IIEN=0 F S IIEN=$O(ORD(X,IIEN)) Q:'IIEN S POS=POS+1,DX(POS)=IIEN
  1. S TOT=0 S POS=0
  1. F S POS=$O(DX(POS)) Q:'POS D ; SET THE MAIL MERGE FIELDS
  1. . S IIEN=DX(POS) I 'IIEN Q
  1. . S STG=$G(^VEN(7.34,IIEN,0)) I '$L(STG) Q
  1. . S ICD=$P(STG,U,4),TXT=$P(STG,U,3),TOT=TOT+1
  1. . S VAR="d"_TOT,VAR1=VAR_"c"
  1. . S @TMP@(1,VAR)=TXT,@TMP@(1,VAR1)=ICD
  1. . Q
  1. Q
  1. ;
  1. CONVERT ; EP - CONVERT THE OLD ICD PREFERENCES FILE TO THE NEW ONE
  1. N GIEN,IEN,STG,TYPE,DIC,X,Y,DIE,DA,DR,XDR
  1. S GIEN=$O(^VEN(7.33,"B","PRIMARY",0))
  1. I 'GIEN D
  1. . S DIC="^VEN(7.33,",DIC(0)="L",DLAYGO=19707.33
  1. . S X="PRIMARY"
  1. . D ^DIC I Y=-1 Q
  1. . S GIEN=+Y
  1. . Q
  1. I 'GIEN Q
  1. S (DIC,DIE)="^VEN(7.34,",DIC(0)="L",DLAYGO=19707.34
  1. S IEN=0 F S IEN=$O(^VEN(7.1,IEN)) Q:'IEN D STUFF
  1. S DA=$O(^DIC(19,"B","VEN CONVERT ICD TO 25",0)) I 'DA D ^XBFMK Q
  1. S DIE="^DIC(19,",DR="2////Conversion completed..." ; OUT OF ORDER MESSAGE
  1. L +^DIC(19,DA):0 I $T D ^DIE L -^DIC(19,DA)
  1. D ^XBFMK
  1. Q
  1. ;
  1. STUFF ; EP-GIVEN THE OLD ICD PREFERENCES IEN, STUFF AN ENTRY INTO THE NEW ICD ITEM FILE
  1. N STG,PIEN,CODE1,NAME,TYPE,CODE2,IX,UID
  1. N INF,CHLD,TF,TM,AF,AM,SF,SM
  1. S STG=$G(^VEN(7.1,IEN,0)) I '$L(STG) Q
  1. S PIEN=+STG I '$D(^VA(200,PIEN,0)) Q ; PROVIDER IEN
  1. S CODE1=+$P(STG,U,2) I '$L(CODE1) Q ; ICD COD
  1. I CODE1=0 Q
  1. S UID=PIEN_"_"_GIEN_"_"_CODE1 ; UID CODE
  1. S NAME=$P(STG,U,3) I '$L(NAME) Q ; DX
  1. S TYPE=$P(STG,U,4) I '$L(TYPE) Q ; DEMOG TYPE (1-8)
  1. S CODE2=$P(STG,U,6) ; SECONDARY CODE (OPTIONAL)
  1. S DA=$O(^VEN(7.34,"AC",UID,0))
  1. I 'DA D ; ADD NEW ITEM
  1. . S X="""`"_PIEN_""""
  1. . D ^DIC I Y=-1 Q
  1. . S DA=+Y
  1. . S DR=".02////^S X=GIEN;.03////^S X=NAME;.04////^SET X=CODE1;.05////^S X=CODE2;.06////^S X=UID"
  1. . L +^VEN(7.34):0 I $T D ^DIE L -^VEN(7.34)
  1. . Q
  1. I '$G(DA) Q
  1. S %=$P("INF,1.01^CHLD,1.03^TM,1.07^TF,1.05^AM,1.11^AF,1.09^SM,1.15^SF,1.13",U,TYPE) I '$L(%) Q
  1. S DR=$P(%,",",2)_"////1"
  1. L +^VEN(7.34,DA):0 I $T D ^DIE L -^VEN(7.34,DA)
  1. Q
  1. ;
  1. CLONE ; EP-CLONE A USERS PREFERENCES
  1. N DIC,DA,X,Y,%,STG0,STG1,IEN,UID,PIEN,RIEN,NIEN,OLDDA
  1. W !!,"Enter the name of the provider whose preferences are to be cloned ->"
  1. S DIC("A")="Provider: " S DIC="^VA(200," S DIC(0)="AEQM"
  1. D ^DIC I Y=-1 D ^XBFMK Q
  1. S PIEN=+Y
  1. I '$D(^VEN(7.34,"B",PIEN)),'$D(^VEN(7.1,"B",PIEN)) W !!,"This provider has no ICD preferences. Request terminated..." D ^XBFMK Q
  1. W !!,"Enter the name of the provider who will receive the preferences ->"
  1. S DIC("A")="Provider: " S DIC="^VA(200," S DIC(0)="AEQM"
  1. D ^DIC I Y=-1 D ^XBFMK Q
  1. S RIEN=+Y
  1. W !!,"Cloning preferences...Please be patient."
  1. I $D(^VEN(7.34,"B",PIEN)) G NCLONE ; NEW ICD PREF FILE
  1. OLDCLONE ; CLONE OLD ICD PREFS
  1. S (DIK,DIC)="^VEN(7.1,",DLAYGO=19707.1,DIC(0)="L"
  1. S OLDDA=0 F S OLDDA=$O(^VEN(7.1,"B",PIEN,OLDDA)) Q:'OLDDA D
  1. . S X="""`"_RIEN_""""
  1. . D ^DIC I '$P(Y,U,3) Q ; A NEW ENTRY MUST BE CREATED - OR QUIT
  1. . S NIEN=+Y
  1. . M ^VEN(7.1,NIEN)=^VEN(7.1,OLDDA) ; COPY THE NODES FROM OLD TO NEW
  1. . S $P(^VEN(7.1,NIEN,0),U,1)=RIEN
  1. . S DA=NIEN D IX^DIK ; INDEX THE NEW ENTRY
  1. . Q
  1. G XCLONE
  1. NCLONE S DIC="^VEN(7.34," S DLAYGO=19707.34 S DIC(0)="L"
  1. S IEN=0 F S IEN=$O(^VEN(7.34,"B",PIEN,IEN)) Q:'IEN D
  1. . S STG0=$G(^VEN(7.34,IEN,0)) I '$L(STG0) Q
  1. . S STG1=$G(^VEN(7.34,IEN,1))
  1. . S X="""`"_RIEN_""""
  1. . D ^DIC I Y=-1 Q
  1. . S NIEN=+Y
  1. . S %=STG0 S $P(%,U,1)=RIEN
  1. . S UID=RIEN_"_"_$P(%,U,2)_"_"_$P(%,U,4) S $P(%,U,6)=UID
  1. . S ^VEN(7.34,NIEN,0)=% S ^VEN(7.34,NIEN,1)=STG1
  1. . S ^VEN(7.34,"AC",UID,NIEN)=""
  1. . Q
  1. XCLONE D ^XBFMK
  1. W !,"Done!"
  1. Q
  1. ;
  1. DEL ; EP-DELETE A USER'S PREFERENCES
  1. N DIC,DIK,DA,X,Y,%,%Y,FN
  1. W !!,"Enter the name of the provider whose preferences are to be deleted ->"
  1. S DIC("A")="Provider: " S DIC="^VA(200," S DIC(0)="AEQM"
  1. D ^DIC I Y=-1 D ^XBFMK Q
  1. S PIEN=+Y
  1. I '$D(^VEN(7.34,"B",PIEN)),'$D(^VEN(7.1,"B",PIEN)) W !!,"This provider has no ICD preferences. Request terminated..." D ^XBFMK Q
  1. W !,"Are you sure you want to delete these preferences"
  1. S %=0 D YN^DICN I %'=1 D ^XBFMK Q
  1. W !!,"Deleting entries...Please be patient"
  1. F FN=7.1,7.34 S DIK="^VEN("_FN_",",DA=0 F S DA=$O(^VEN(FN,"B",PIEN,DA)) Q:'DA D ^DIK
  1. D ^XBFMK
  1. W !,"Done"
  1. Q
  1. ;
  1. AC(DA) ; EP - AUTO-POPULTAE THE UID FIELD OF THE ICD ITEM FILE ; PATCHED BY GIS/OIT 10/6/05 ; PCC+ 2.5 PATCH 5
  1. N X,Y,Z,STG
  1. S STG=$G(^VEN(7.34,+$G(DA),0))
  1. S X=+STG I 'X Q ""
  1. S Y=$P(STG,U,2) I 'Y S Y=1
  1. S Z=$P(STG,U,4) I '$L(Z) Q
  1. Q (X_"_"_Y_"_"_Z)
  1. ;
  1. GEN ; EP-GENERATE A NEW SET OF PREFERENCES BASED ON USER HX
  1. D NEWLIST^VENPCCG
  1. Q
  1. ;
  1. GED ; EP - OPTION (VEN GLOBAL PRV PREF EDIT (NEW))
  1. N NEWFLAG
  1. S NEWFLAG=1
  1. D ^VENPCCMG
  1. Q
  1. ;
  1. PL ; EP - GLOBAL LIST OF ICD PREFERENCES (NEW))
  1. N NEWFLAG
  1. S NEWFLAG=1
  1. D VUE^VENPCCMG
  1. Q
  1. ;
  1. ICD(OUT,IN) ; EP - RPC (VEN PCC+ SUBMIT ICD CRITERIA)
  1. ; SUBMIT ICD PREFERENCE CRITERIA AND RETURN THE TABLE GENERATION STRING
  1. ; START DATE|ASSIGNED PROVIDER|ICD GRP|CLINIC STOP|POLLED PROVIDERS|POLLED DISCIPLINE
  1. N BD,ED,DXPRV,GIEN,CSIEN,PRV,DISC,VEN,X,Y,%,%DT,B,PNP,PROVFLG,SEX,TOTPN,VENFLNO,IO
  1. N CFIGIEN,TMP,TYPE,NEWDXP,UID,I,VD,VDFN,VENDEPT,FL,POP,QUIET,P200
  1. N AGE,AGEBUK,AGEGRP,AGESEX,AP,CC,DESALL,DOB,ICD,ICDPTR,MOST,MOSTPNP,NARR,PAT,VENT,VIS
  1. S OUT="",QUIET=1,%=.06
  1. S P200=(^DD((9000010+%),.01,0)["IC(6,")
  1. S TMP="^TMP(""VEN PREF"",$J)" K @TMP
  1. S CFIGIEN=$$CFG^VENPCCU I 'CFIGIEN Q
  1. S B="|"
  1. S X=$P(IN,B),%DT="P" D ^%DT I Y'?7N Q
  1. S BD=Y,ED=DT
  1. S NEWDXP=$P(IN,B,3)
  1. I 'NEWDXP S NEWDXP=$O(^VEN(7.33,"B","PRIMARY",0)) I 'NEWDXP Q
  1. S TYPE=$S($L($P(IN,B,5)):"P",$L($P(IN,B,6)):"C",1:"A")
  1. I TYPE="C" D I '$D(VEN("PC")) Q
  1. . S X=$P(IN,B,6)
  1. . K VEN("PC")
  1. . F I=1:1:$L(X,",") D
  1. .. S Y=$P(X,",",I)
  1. .. S VEN("PC",+Y)=""
  1. .. S VEN("PC",0)=$G(VEN("PC",0))+1
  1. .. Q
  1. . Q
  1. I TYPE="P" D I '$D(VEN("PRV")) Q
  1. . S X=$P(IN,B,5)
  1. . K VEN("PRV")
  1. . F I=1:1:$L(X,",") D
  1. .. S Y=$P(X,",",I)
  1. .. I P200 S Y=$$PRV1^VENPCCU(Y) I 'Y Q ; CONVERT 6 T0 200
  1. .. S VEN("PRV",+Y)=""
  1. .. S VEN("PRV",0)=$G(VEN("PRV",0))+1
  1. .. Q
  1. . Q
  1. T1 ; SET FILTER FLAGS
  1. S @TMP@("VPOV",0)=BD_"^"_ED
  1. I TYPE="C" D
  1. . S $P(@TMP@("VPOV",0),"^",3)="CLINIC"
  1. . I (VEN("PC",0)=1) S $P(@TMP@("VPOV",0),"^",3)=$O(VEN("PC",0))
  1. . Q
  1. I TYPE="P" D
  1. . S $P(@TMP@("VPOV",0),"^",3)="PROVIDERS"
  1. . I (VEN("PRV",0)=1) S $P(@TMP@("VPOV",0),"^",3)=$O(VEN("PRV",0))
  1. . Q
  1. S %=$P(IN,B,4) I % S VENDEPT=% ; CLINIC STOP FILTER
  1. S %=$P(IN,B,2)
  1. S DXPRV=$$APRV(%) I 'DXPRV Q ; ASSIGNED PROVIDER
  1. S UID=DXPRV_"_"_NEWDXP
  1. POLL D ST^VENPCCG1 ; MINE RAW DATA
  1. D FILE^VENPCCG2 ; FORMAT/SUBMIT DATA FOR THE "TOP 100"
  1. S %=$O(^VEN(7.34,"AC",UID)) I $P(%,"_",1,2)'=UID Q ; THERE MUST BE AT LEAST ONE ITEM!
  1. S OUT="BMX ADO SS^VEN UP ICD ITEMS^^AC~"_UID_"~"_UID_"_zzz~999999"
  1. Q
  1. ;
  1. APRV(AP) ; EP-GET THE ASSIGNED PROVIDER
  1. I '$L(%) Q ""
  1. I %,$D(^VA(200,%,0)) Q %
  1. N DIC,X,Y
  1. S DIC="^VA(200,",DIC(0)="L",DLAYGO=200,X=AP
  1. D ^DIC I Y=-1 D ^XBFMK Q ""
  1. S AP=+Y
  1. D ^XBFMK
  1. Q AP
  1. ;
  1. PRVLKUP(OUT) ; EP - RPC (VEN PCC+ GET ACTIVE PROVIDERS)
  1. ; GIVEN A LOOKUP VALUE, RETURN THE ADO RECORD GENERATION STRING TO VIEW PROVIDERS
  1. S OUT="BMX ADO SS^VEN MOJO CHECKIN PROVIDERS^^~~~~~APRV~BMXADOV2"
  1. Q
  1. ;
  1. CSTOPS(OUT) ; EP - RPC (VEN PCC+ GET CLINIC STOPS)
  1. S OUT="BMX ADO SS^VEN UP CLINIC STOPS^^B~~~999999"
  1. Q
  1. ;
  1. DISC(OUT) ; EP - RPC (VEN PCC+ GET DISCIPLINES)
  1. S OUT="BMX ADO SS^VEN UP DISCIPLINES^^B~~~999999"
  1. Q
  1. ;
  1. ICDITEMS(OUT,IN) ; EP RPC(VEN PCC+ GET ICD ITEMS)
  1. ; THE INPUT PARAM 'IN' HAST THE FORMAT "PROVIDER IEN,ICD PREFERENCE GROUP IEN"
  1. N X,Y,PRVIEN,PGIEN
  1. S IN=$G(IN)
  1. S PRVIEN=+IN I '$D(^VEN(7.34,"B",PRVIEN)) Q "" ; THIS PROVIDER MUST HAVE SOME PREFERENCES
  1. S PGIEN=+$P(IN,",",2) I '$D(^VEN(7.33,PGIEN,0)) S PGIEN=1
  1. S X=PRVIEN_"_"_PGIEN
  1. S Y=X_"_zzzz"
  1. S OUT="BMX ADO SS^VEN UP ICD ITEMS^^AC~"_X_"~"_Y_"~999999"
  1. Q
  1. ;
  1. ICDGRPS(OUT) ; EP - RPC (VEN PCC+ GET ICD GROUPS)
  1. S OUT="BMX ADO SS^VEN UP ICD GROUPS^^B~~~999999"
  1. Q
  1. ;
  1. ICDLIST(OUT) ; EP - RPC(VEN PCC+ GET ICD LISTS)
  1. S OUT="BMX ADO SS^VEN UP ICD LISTS^^~~~~~ILIST~VENPCC1P"
  1. Q
  1. ;
  1. ILIST(PARAM,IENS,MAX,OUT,TOT) ; EP - PRINT THE AVAILABLE ICD PREFERENCE LISTS: ONE FOR EACH USER/GROUP PAIR
  1. N IIEN,UID,DA
  1. S UID=""
  1. F S UID=$O(^VEN(7.34,"AC",UID)) Q:UID="" D
  1. . S DA=$O(^VEN(7.34,"AC",UID,0)) I 'DA Q
  1. . X ("D DATA"_$C(94)_"BMXADOV1(IENS,DA)")
  1. . S $P(UID,"_",3)="zzzz"
  1. . Q
  1. Q ""
  1. ;
  1. CIDC(CODE) ; EP-CONVERT ICD CODE TO BRIEF ICD TEXT
  1. N TXT,IIEN
  1. S IIEN=$$ICD^VENPCCU($G(CODE)) I 'IIEN Q ""
  1. S TXT=$P($G(^ICD9(IIEN,0)),U,3)
  1. Q TXT
  1. ;