BGOIN021 ; IHS/MSC/PLS - BGO*1.1*21 ;15-Sep-2016 12:15;PLS
 ;;1.1;BGO COMPONENTS;**21**;Mar 20, 2007
EC Q
 ; Preinit
PRE ;
 Q
 ; Postinit
POST ;
 ; Register RPCs
 D REGNMSP^CIAURPC("BGO","CIAV VUECENTRIC")
 ; Update BGO component versions
 N VER,FDA,PID,IEN,X
 D BMES^XPDUTL("Updating version numbers...")
 F VER=0:1 S X=$P($T(VER+VER),";;",2) Q:'$L(X)  D
 .S PID=$$PRGID^CIAVMCFG($P(X,";"))
 .S:PID FDA(19930.2,PID_",",2)=$P(X,";",2),FDA(19930.2,PID_",",7)=$P(X,";",3)
 D:$D(FDA) FILE^DIE(,"FDA")
 D UPDCHM
 D PARS2
 D ADD^XPDMENU("BGOPL MAIN","BGO UPDATE PICKLIST STATUS","UPS")
 Q
 ;
UPDCHM ;EP-
 N CHM,PID
 F CHM=0:1 S X=$P($T(CHM+CHM),";;",2) Q:'$L(X)  D
 .S PID=$$PRGID^CIAVMCFG($P(X,";"))
 .D AECHM(PID,$P(X,";",2,99))
 W !!
 Q
UPDBUSA ;EP-
 N RPC,RPCIEN,FDA,VAL
 S VAL="S X=$P(X,U)"
 F RPC=0:1 S X=$P($T(BUSARPC+RPC),";;",2) Q:'$L(X)  D
 .S RPCIEN=$$FIND1^DIC(9002319.03,"","MX",X)
 .Q:'RPCIEN
 .S FDA(9002319.03,RPCIEN_",",2.02)=VAL
 I $D(FDA) D
 .D FILE^DIE(,"FDA")
 Q
PARS ;Store system levels of new parameter
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",1,"DISEASE PROCESS")
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",2,"NUTRITION")
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",3,"EXERCISE")
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",4,"LIFESTYLE ADAPTATION")
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",5,"MEDICATIONS")
 D EN^XPAR("SYS","BGO PROBLEM EDUCATION",6,"PREVENTION")
 Q
PARS1 ;EP - Cleanup old parameter values for location
 N PAR,ENT,ERR
 S PAR="" S PAR=$O(^XTV(8989.51,"B","BGO PROBLEM EDUCATION",PAR))
 Q:'+PAR
 S ENT="" F  S ENT=$O(^XTV(8989.5,"AC",PAR,ENT)) Q:ENT=""  D
 .Q:$P(ENT,";",2)'="SC("
 .S ERR=0
 .D NDEL^XPAR(ENT,PAR,.ERR)
 N LIEN
 S LIEN="" S LIEN=$O(^XTV(8989.51,PAR,30,"B",100,LIEN))
 Q:LIEN=""
 S DA(1)=PAR,DA=LIEN
 S DIK="^XTV(8989.51,PAR,30,"
 D ^DIK
 Q
PARS2 ;EP - Populate SNOMED Parameters
 D LOCK("BGO NORMAL/ABNORMAL",0)
 D EN^XPAR("SYS","BGO NORMAL/ABNORMAL",1,"w/o abn find;Without Abnormal Findings;162656002")
 D EN^XPAR("SYS","BGO NORMAL/ABNORMAL",2,"w/abn find;With Abnormal Findings;71994000")
 D EN^XPAR("SYS","BGO NORMAL/ABNORMAL",3,"not examined/unk;Not Applicable/Not Examined/Unknown")
 D LOCK("BGO NORMAL/ABNORMAL",1)
 Q
 ;Set prohibit editing field of parameter
LOCK(PARAM,VAL) ;EP-
 N IEN
 S IEN=$O(^XTV(8989.51,"B",PARAM,0))
 Q:'IEN
 S $P(^XTV(8989.51,IEN,0),U,6)=VAL
 Q
 ; Set DISABLED field of OBJ to VAL
DISABLED(OBJ,VAL) ;
 N PID,FDA
 S VAL=$G(VAL,0)
 S PID=$$PRGID^CIAVMCFG($G(OBJ))
 Q:'PID
 S FDA(19930.2,PID_",",13)=VAL
 D FILE^DIE(,"FDA")
 Q
PICK ;Install the national pick lists
 D UPDATE^BGOSNLK
 Q
 N LP,NAME,SNO,BSTS,RET
 F LP=0:1 S NAME=$P($T(LIST+LP),";;",2) Q:'$L(NAME)  D
 .S BSTS=$P(NAME,"^",1)
 .S SNO=$P(NAME,"^",2)
 .D IMPORT^BGOSNLK(.RET,BSTS,SNO)
 Q
 ;National pick lists
LIST ;;PICK ABNORMAL FINDINGS^ABNORMAL FINDINGS
 ;;PICK CQM Problems^CQM PROBLEMS
 ;;PICK Case Management^CASE MANAGEMENT
 ;;PICK Diabetic Retinopathy^DIABETIC RETINOPATHY
 ;;PICK Eye General^EYE GENERAL
 ;;PICK Immunizations^IMMUNIZATIONS
 ;;PICK NIST Problems^NIST PROBLEMS
 ;;PICK Nutrition^NUTRITION
 ;;PICK Prenatal - Care^PRENATAL CARE
 ;;PICK Prenatal - Problem Fetus^PRENATAL PROBLEM FETUS
 ;;PICK Prenatal - Problem Pregnancy^PRENATAL PROBLEM PREGNANCY
 ;;PICK Prenatal - Risk^PRENATAL RISK
 ;;PICK Public Health Nursing^PUBLIC HEALTH NURSING
 ;;PICK Womens Health^WOMENS HEALTH
 ;;
AECHM(PID,VAL) ;EP-
 N LN,FN,IDX,TXT,ARY,CNT,IENS
 S FN=$P(VAL,";"),CNT=0
 S LN=0 F  S LN=$O(^CIAVOBJ(19930.2,PID,6,LN)) Q:'LN  D  Q:$G(IDX)
 .S TXT=^CIAVOBJ(19930.2,PID,6,LN,0)
 .S ARY(LN,0)=TXT,CNT=CNT+1
 .I $$UP^XLFSTR(TXT)[$$UP^XLFSTR($P(VAL,";")) S IDX=LN
 I $G(IDX) D
 .S ^CIAVOBJ(19930.2,PID,6,IDX,0)=VAL
 E  D
 .S ARY($S('CNT:1,1:CNT+1),0)=VAL
 .S IENS=PID_","
 .S FDA(19930.2,IENS,10)="ARY"
 .D FILE^DIE(,"FDA")
 Q
 ;
CLNMNU ;
 ; Remove option from menu
 N OPTION,MENU,DA,DIK,PAR,ERR,X
 S (OPTION,MENU)=""
 S OPTION="BGO IMM STOP ADDING CPT CODES"
 S MENU="BGOIMM MAIN"
 S X=$$DELETE^XPDMENU(MENU,OPTION)
 Q:'+X
 ;Inactivate the option
 D OUT^XPDMENU(OPTION,"No longer used")
 ;Clean out the parameter
 S PAR=""
 S PAR=$O(^XTV(8989.51,"B","BGO IMM STOP ADDING CPT CODES",PAR))
 Q:'+PAR
 S ERR=0
 D NDEL^XPAR("USR",PAR,.ERR)
 Q:ERR>0
 D NDEL^XPAR("DIV",PAR,.ERR)
 Q:ERR>0
 D NDEL^XPAR("PKG",PAR,.ERR)
 Q:ERR>0
 ;Delete the parameter
 S DA=PAR,DIK="^XTV(8989.51," D ^DIK
 Q
VER ;;BEHIPL.IPL;1.1.20.13;09809DB11DB9C2912515A5C55A2CC799
 ;;
 ;;
CHM ;;
 ;;
BUSARPC ;;
 ;;
BGOIN021  ; IHS/MSC/PLS - BGO*1.1*21 ;15-Sep-2016 12:15;PLS
 +1       ;;1.1;BGO COMPONENTS;**21**;Mar 20, 2007
EC         QUIT 
 +1       ; Preinit
PRE       ;
 +1        QUIT 
 +2       ; Postinit
POST      ;
 +1       ; Register RPCs
 +2        DO REGNMSP^CIAURPC("BGO","CIAV VUECENTRIC")
 +3       ; Update BGO component versions
 +4        NEW VER,FDA,PID,IEN,X
 +5        DO BMES^XPDUTL("Updating version numbers...")
 +6        FOR VER=0:1
               SET X=$PIECE($TEXT(VER+VER),";;",2)
               IF '$LENGTH(X)
                   QUIT 
               Begin DoDot:1
 +7                SET PID=$$PRGID^CIAVMCFG($PIECE(X,";"))
 +8                IF PID
                       SET FDA(19930.2,PID_",",2)=$PIECE(X,";",2)
                       SET FDA(19930.2,PID_",",7)=$PIECE(X,";",3)
               End DoDot:1
 +9        IF $DATA(FDA)
               DO FILE^DIE(,"FDA")
 +10       DO UPDCHM
 +11       DO PARS2
 +12       DO ADD^XPDMENU("BGOPL MAIN","BGO UPDATE PICKLIST STATUS","UPS")
 +13       QUIT 
 +14      ;
UPDCHM    ;EP-
 +1        NEW CHM,PID
 +2        FOR CHM=0:1
               SET X=$PIECE($TEXT(CHM+CHM),";;",2)
               IF '$LENGTH(X)
                   QUIT 
               Begin DoDot:1
 +3                SET PID=$$PRGID^CIAVMCFG($PIECE(X,";"))
 +4                DO AECHM(PID,$PIECE(X,";",2,99))
               End DoDot:1
 +5        WRITE !!
 +6        QUIT 
UPDBUSA   ;EP-
 +1        NEW RPC,RPCIEN,FDA,VAL
 +2        SET VAL="S X=$P(X,U)"
 +3        FOR RPC=0:1
               SET X=$PIECE($TEXT(BUSARPC+RPC),";;",2)
               IF '$LENGTH(X)
                   QUIT 
               Begin DoDot:1
 +4                SET RPCIEN=$$FIND1^DIC(9002319.03,"","MX",X)
 +5                IF 'RPCIEN
                       QUIT 
 +6                SET FDA(9002319.03,RPCIEN_",",2.02)=VAL
               End DoDot:1
 +7        IF $DATA(FDA)
               Begin DoDot:1
 +8                DO FILE^DIE(,"FDA")
               End DoDot:1
 +9        QUIT 
PARS      ;Store system levels of new parameter
 +1        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",1,"DISEASE PROCESS")
 +2        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",2,"NUTRITION")
 +3        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",3,"EXERCISE")
 +4        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",4,"LIFESTYLE ADAPTATION")
 +5        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",5,"MEDICATIONS")
 +6        DO EN^XPAR("SYS","BGO PROBLEM EDUCATION",6,"PREVENTION")
 +7        QUIT 
PARS1     ;EP - Cleanup old parameter values for location
 +1        NEW PAR,ENT,ERR
 +2        SET PAR=""
           SET PAR=$ORDER(^XTV(8989.51,"B","BGO PROBLEM EDUCATION",PAR))
 +3        IF '+PAR
               QUIT 
 +4        SET ENT=""
           FOR 
               SET ENT=$ORDER(^XTV(8989.5,"AC",PAR,ENT))
               IF ENT=""
                   QUIT 
               Begin DoDot:1
 +5                IF $PIECE(ENT,";",2)'="SC("
                       QUIT 
 +6                SET ERR=0
 +7                DO NDEL^XPAR(ENT,PAR,.ERR)
               End DoDot:1
 +8        NEW LIEN
 +9        SET LIEN=""
           SET LIEN=$ORDER(^XTV(8989.51,PAR,30,"B",100,LIEN))
 +10       IF LIEN=""
               QUIT 
 +11       SET DA(1)=PAR
           SET DA=LIEN
 +12       SET DIK="^XTV(8989.51,PAR,30,"
 +13       DO ^DIK
 +14       QUIT 
PARS2     ;EP - Populate SNOMED Parameters
 +1        DO LOCK("BGO NORMAL/ABNORMAL",0)
 +2        DO EN^XPAR("SYS","BGO NORMAL/ABNORMAL",1,"w/o abn find;Without Abnormal Findings;162656002")
 +3        DO EN^XPAR("SYS","BGO NORMAL/ABNORMAL",2,"w/abn find;With Abnormal Findings;71994000")
 +4        DO EN^XPAR("SYS","BGO NORMAL/ABNORMAL",3,"not examined/unk;Not Applicable/Not Examined/Unknown")
 +5        DO LOCK("BGO NORMAL/ABNORMAL",1)
 +6        QUIT 
 +7       ;Set prohibit editing field of parameter
LOCK(PARAM,VAL) ;EP-
 +1        NEW IEN
 +2        SET IEN=$ORDER(^XTV(8989.51,"B",PARAM,0))
 +3        IF 'IEN
               QUIT 
 +4        SET $PIECE(^XTV(8989.51,IEN,0),U,6)=VAL
 +5        QUIT 
 +6       ; Set DISABLED field of OBJ to VAL
DISABLED(OBJ,VAL) ;
 +1        NEW PID,FDA
 +2        SET VAL=$GET(VAL,0)
 +3        SET PID=$$PRGID^CIAVMCFG($GET(OBJ))
 +4        IF 'PID
               QUIT 
 +5        SET FDA(19930.2,PID_",",13)=VAL
 +6        DO FILE^DIE(,"FDA")
 +7        QUIT 
PICK      ;Install the national pick lists
 +1        DO UPDATE^BGOSNLK
 +2        QUIT 
 +3        NEW LP,NAME,SNO,BSTS,RET
 +4        FOR LP=0:1
               SET NAME=$PIECE($TEXT(LIST+LP),";;",2)
               IF '$LENGTH(NAME)
                   QUIT 
               Begin DoDot:1
 +5                SET BSTS=$PIECE(NAME,"^",1)
 +6                SET SNO=$PIECE(NAME,"^",2)
 +7                DO IMPORT^BGOSNLK(.RET,BSTS,SNO)
               End DoDot:1
 +8        QUIT 
 +9       ;National pick lists
LIST      ;;PICK ABNORMAL FINDINGS^ABNORMAL FINDINGS
 +1       ;;PICK CQM Problems^CQM PROBLEMS
 +2       ;;PICK Case Management^CASE MANAGEMENT
 +3       ;;PICK Diabetic Retinopathy^DIABETIC RETINOPATHY
 +4       ;;PICK Eye General^EYE GENERAL
 +5       ;;PICK Immunizations^IMMUNIZATIONS
 +6       ;;PICK NIST Problems^NIST PROBLEMS
 +7       ;;PICK Nutrition^NUTRITION
 +8       ;;PICK Prenatal - Care^PRENATAL CARE
 +9       ;;PICK Prenatal - Problem Fetus^PRENATAL PROBLEM FETUS
 +10      ;;PICK Prenatal - Problem Pregnancy^PRENATAL PROBLEM PREGNANCY
 +11      ;;PICK Prenatal - Risk^PRENATAL RISK
 +12      ;;PICK Public Health Nursing^PUBLIC HEALTH NURSING
 +13      ;;PICK Womens Health^WOMENS HEALTH
 +14      ;;
AECHM(PID,VAL) ;EP-
 +1        NEW LN,FN,IDX,TXT,ARY,CNT,IENS
 +2        SET FN=$PIECE(VAL,";")
           SET CNT=0
 +3        SET LN=0
           FOR 
               SET LN=$ORDER(^CIAVOBJ(19930.2,PID,6,LN))
               IF 'LN
                   QUIT 
               Begin DoDot:1
 +4                SET TXT=^CIAVOBJ(19930.2,PID,6,LN,0)
 +5                SET ARY(LN,0)=TXT
                   SET CNT=CNT+1
 +6                IF $$UP^XLFSTR(TXT)[$$UP^XLFSTR($PIECE(VAL,";"))
                       SET IDX=LN
               End DoDot:1
               IF $GET(IDX)
                   QUIT 
 +7        IF $GET(IDX)
               Begin DoDot:1
 +8                SET ^CIAVOBJ(19930.2,PID,6,IDX,0)=VAL
               End DoDot:1
 +9       IF '$TEST
               Begin DoDot:1
 +10               SET ARY($SELECT('CNT:1,1:CNT+1),0)=VAL
 +11               SET IENS=PID_","
 +12               SET FDA(19930.2,IENS,10)="ARY"
 +13               DO FILE^DIE(,"FDA")
               End DoDot:1
 +14       QUIT 
 +15      ;
CLNMNU    ;
 +1       ; Remove option from menu
 +2        NEW OPTION,MENU,DA,DIK,PAR,ERR,X
 +3        SET (OPTION,MENU)=""
 +4        SET OPTION="BGO IMM STOP ADDING CPT CODES"
 +5        SET MENU="BGOIMM MAIN"
 +6        SET X=$$DELETE^XPDMENU(MENU,OPTION)
 +7        IF '+X
               QUIT 
 +8       ;Inactivate the option
 +9        DO OUT^XPDMENU(OPTION,"No longer used")
 +10      ;Clean out the parameter
 +11       SET PAR=""
 +12       SET PAR=$ORDER(^XTV(8989.51,"B","BGO IMM STOP ADDING CPT CODES",PAR))
 +13       IF '+PAR
               QUIT 
 +14       SET ERR=0
 +15       DO NDEL^XPAR("USR",PAR,.ERR)
 +16       IF ERR>0
               QUIT 
 +17       DO NDEL^XPAR("DIV",PAR,.ERR)
 +18       IF ERR>0
               QUIT 
 +19       DO NDEL^XPAR("PKG",PAR,.ERR)
 +20       IF ERR>0
               QUIT 
 +21      ;Delete the parameter
 +22       SET DA=PAR
           SET DIK="^XTV(8989.51,"
           DO ^DIK
 +23       QUIT 
VER       ;;BEHIPL.IPL;1.1.20.13;09809DB11DB9C2912515A5C55A2CC799
 +1       ;;
 +2       ;;
CHM       ;;
 +1       ;;
BUSARPC   ;;
 +1       ;;