Released XU*8*732 SEQ #575 Extracted from mail message **KIDS**:XU*8.0*732^ **INSTALL NAME** XU*8.0*732 "BLD",3523,0) XU*8.0*732^KERNEL^0^3200707^y "BLD",3523,1,0) ^^3^3^3200707^ "BLD",3523,1,1,0) KERNEL VISTA ISSUES - NPI DUPLICATES "BLD",3523,1,2,0) Refer to patch XU*8.0*732 in the FORUM Patch Module for a complete "BLD",3523,1,3,0) description. "BLD",3523,4,0) ^9.64PA^^ "BLD",3523,6.3) 3 "BLD",3523,"INID") ^n "BLD",3523,"INIT") XUP732 "BLD",3523,"KRN",0) ^9.67PA^1.5^25 "BLD",3523,"KRN",.4,0) .4 "BLD",3523,"KRN",.401,0) .401 "BLD",3523,"KRN",.402,0) .402 "BLD",3523,"KRN",.403,0) .403 "BLD",3523,"KRN",.5,0) .5 "BLD",3523,"KRN",.84,0) .84 "BLD",3523,"KRN",1.5,0) 1.5 "BLD",3523,"KRN",1.6,0) 1.6 "BLD",3523,"KRN",1.61,0) 1.61 "BLD",3523,"KRN",1.62,0) 1.62 "BLD",3523,"KRN",3.6,0) 3.6 "BLD",3523,"KRN",3.8,0) 3.8 "BLD",3523,"KRN",9.2,0) 9.2 "BLD",3523,"KRN",9.8,0) 9.8 "BLD",3523,"KRN",9.8,"NM",0) ^9.68A^2^2 "BLD",3523,"KRN",9.8,"NM",1,0) XUMVINPU^^0^B148889034 "BLD",3523,"KRN",9.8,"NM",2,0) XUP732^^0^B8347138 "BLD",3523,"KRN",9.8,"NM","B","XUMVINPU",1) "BLD",3523,"KRN",9.8,"NM","B","XUP732",2) "BLD",3523,"KRN",19,0) 19 "BLD",3523,"KRN",19.1,0) 19.1 "BLD",3523,"KRN",101,0) 101 "BLD",3523,"KRN",409.61,0) 409.61 "BLD",3523,"KRN",771,0) 771 "BLD",3523,"KRN",779.2,0) 779.2 "BLD",3523,"KRN",870,0) 870 "BLD",3523,"KRN",8989.51,0) 8989.51 "BLD",3523,"KRN",8989.52,0) 8989.52 "BLD",3523,"KRN",8993,0) 8993 "BLD",3523,"KRN",8994,0) 8994 "BLD",3523,"KRN",8994,"NM",0) ^9.68A^1^1 "BLD",3523,"KRN",8994,"NM",1,0) XUS MVI NEW PERSON GET^^0 "BLD",3523,"KRN",8994,"NM","B","XUS MVI NEW PERSON GET",1) "BLD",3523,"KRN","B",.4,.4) "BLD",3523,"KRN","B",.401,.401) "BLD",3523,"KRN","B",.402,.402) "BLD",3523,"KRN","B",.403,.403) "BLD",3523,"KRN","B",.5,.5) "BLD",3523,"KRN","B",.84,.84) "BLD",3523,"KRN","B",1.5,1.5) "BLD",3523,"KRN","B",1.6,1.6) "BLD",3523,"KRN","B",1.61,1.61) "BLD",3523,"KRN","B",1.62,1.62) "BLD",3523,"KRN","B",3.6,3.6) "BLD",3523,"KRN","B",3.8,3.8) "BLD",3523,"KRN","B",9.2,9.2) "BLD",3523,"KRN","B",9.8,9.8) "BLD",3523,"KRN","B",19,19) "BLD",3523,"KRN","B",19.1,19.1) "BLD",3523,"KRN","B",101,101) "BLD",3523,"KRN","B",409.61,409.61) "BLD",3523,"KRN","B",771,771) "BLD",3523,"KRN","B",779.2,779.2) "BLD",3523,"KRN","B",870,870) "BLD",3523,"KRN","B",8989.51,8989.51) "BLD",3523,"KRN","B",8989.52,8989.52) "BLD",3523,"KRN","B",8993,8993) "BLD",3523,"KRN","B",8994,8994) "BLD",3523,"QUES",0) ^9.62^^ "BLD",3523,"REQB",0) ^9.611^1^1 "BLD",3523,"REQB",1,0) XU*8.0*710^1 "BLD",3523,"REQB","B","XU*8.0*710",1) "INIT") XUP732 "KRN",8994,718,-1) 0^1 "KRN",8994,718,0) XUS MVI NEW PERSON GET^GET^XUMVINPU^4^A^^^1^1^^0 "KRN",8994,718,1,0) ^8994.01^3^3^3190515^^^^ "KRN",8994,718,1,1,0) This restricted RPC is used exclusively by the Master Veteran Index (MVI) "KRN",8994,718,1,2,0) to retrieve data (by DUZ, SECID, NPI or SSN) from the VistA NEW PERSON "KRN",8994,718,1,3,0) file (#200). "KRN",8994,718,2,0) ^8994.02A^4^4 "KRN",8994,718,2,1,0) DUZ^1^40^0^1 "KRN",8994,718,2,1,1,0) ^8994.021^1^1^3180309^^ "KRN",8994,718,2,1,1,1,0) File IEN in the NEW PERSON file (#200) "KRN",8994,718,2,2,0) SECID^1^40^0^2 "KRN",8994,718,2,2,1,0) ^8994.021^1^1^3180321^^^^ "KRN",8994,718,2,2,1,1,0) SECID field (#205.1) in the NEW PERSON file (#200) "KRN",8994,718,2,3,0) NPI^1^10^0^3 "KRN",8994,718,2,3,1,0) ^^2^2^3190417^ "KRN",8994,718,2,3,1,1,0) NPI (National Provider Identifier) field (#41.99) in the NEW PERSON file "KRN",8994,718,2,3,1,2,0) (#200). "KRN",8994,718,2,4,0) SSN^1^9^0^4 "KRN",8994,718,2,4,1,0) ^8994.021^1^1^3190515^^^^ "KRN",8994,718,2,4,1,1,0) SSN (Social Security Number) field (#9) in the NEW PERSON file (#200). "KRN",8994,718,2,"B","DUZ",1) "KRN",8994,718,2,"B","NPI",3) "KRN",8994,718,2,"B","SECID",2) "KRN",8994,718,2,"B","SSN",4) "KRN",8994,718,2,"PARAMSEQ",1,1) "KRN",8994,718,2,"PARAMSEQ",2,2) "KRN",8994,718,2,"PARAMSEQ",3,3) "KRN",8994,718,2,"PARAMSEQ",4,4) "KRN",8994,718,3,0) ^^113^113^3200420^ "KRN",8994,718,3,1,0) Success: "KRN",8994,718,3,2,0) XURET = ^TMP("XUMVINPU",$J) "KRN",8994,718,3,3,0) @XURET@(#) = FILE #;FIELD #<;SUBFIELD #><;FILE POINTER>^FIELD "KRN",8994,718,3,4,0) NAME^^INTERNAL VALUE^EXTERNAL VALUE "KRN",8994,718,3,5,0) <> Denotes optional values. If Counter populated, denotes multiple "KRN",8994,718,3,6,0) value <1-n> "KRN",8994,718,3,7,0) "KRN",8994,718,3,8,0) @XURET@(#)="200;IEN^DUZ^^^" "KRN",8994,718,3,9,0) @XURET@(#)="200;.01^NAME^^^" "KRN",8994,718,3,10,0) @XURET@(#)="200;4^SEX^^^" "KRN",8994,718,3,11,0) @XURET@(#)="200;5^DOB^^^" "KRN",8994,718,3,12,0) @XURET@(#)="200;8^TITLE^^^" "KRN",8994,718,3,13,0) @XURET@(#)="200;7^DISUSER^^^" "KRN",8994,718,3,14,0) @XURET@(#)="200;9.2^TERMINATION DATE^^^" "KRN",8994,718,3,15,0) @XURET@(#)="200;9.4^Termination Reason^^^" "KRN",8994,718,3,16,0) @XURET@(#)="200;15^PROHIBITED TIMES FOR SIGN-ON^^^" "KRN",8994,718,3,17,0) @XURET@(#)="200;11.2^DATE VERIFY CODE LAST CHANGED^^^" "KRN",8994,718,3,18,0) @XURET@(#)="200;.111^STREET ADDRESS 1^^^" "KRN",8994,718,3,19,0) @XURET@(#)="200;.112^STREET ADDRESS 2^^^" "KRN",8994,718,3,20,0) @XURET@(#)="200;.113^STREET ADDRESS 3^^^" "KRN",8994,718,3,21,0) @XURET@(#)="200;.114^CITY^^^" "KRN",8994,718,3,22,0) @XURET@(#)="200;.115^STATE^^^" "KRN",8994,718,3,23,0) @XURET@(#)="200;.116^ZIP CODE^^^" "KRN",8994,718,3,24,0) @XURET@(#)="200;.132^OFFICE PHONE^^^" "KRN",8994,718,3,25,0) @XURET@(#)="200;.136^FAX NUMBER^^^" "KRN",8994,718,3,26,0) @XURET@(#)="200;.151^EMAIL ADDRESS^^^" "KRN",8994,718,3,27,0) @XURET@(#)="200;30^DATE ENTERED^^^" "KRN",8994,718,3,28,0) @XURET@(#)="200;31^CREATOR^^^" "KRN",8994,718,3,29,0) @XURET@(#)="200;41.98^NPI ENTRY STATUS^^^" "KRN",8994,718,3,30,0) @XURET@(#)="200;41.99^NPI^^^" "KRN",8994,718,3,31,0) @XURET@(#)="200;9^SSN^^^" "KRN",8994,718,3,32,0) @XURET@(#)="200;42;.01^EFFECTIVE DATE/TIME^<1-n>^^" "KRN",8994,718,3,33,0) @XURET@(#)="200;42;.02^STATUS^<#>^^" "KRN",8994,718,3,34,0) @XURET@(#)="200;42;.03^NPI^<#>^^" "KRN",8994,718,3,35,0) @XURET@(#)="200;202^LAST SIGN-ON DATE/TIME^^^" "KRN",8994,718,3,36,0) @XURET@(#)="200;202.02^XUS Logon Attempt Count^^^" "KRN",8994,718,3,37,0) @XURET@(#)="200;202.03^XUS Active User^^^" "KRN",8994,718,3,38,0) @XURET@(#)="200;202.04^Entry Last Edit Date^^^" "KRN",8994,718,3,39,0) @XURET@(#)="200;202.05^LOCKOUT USER UNTIL^^^" "KRN",8994,718,3,40,0) @XURET@(#)="200;16;.01^DIVISION^<1-n>^^" "KRN",8994,718,3,41,0) @XURET@(#)="200;10.1^NAME COMPONENTS^^^" "KRN",8994,718,3,42,0) @XURET@(#)="20;1^FAMILY (LAST) NAME^^^" "KRN",8994,718,3,43,0) @XURET@(#)="20;2^GIVEN (FIRST) NAME^^^" "KRN",8994,718,3,44,0) @XURET@(#)="20;3^MIDDLE NAME^^^" "KRN",8994,718,3,45,0) @XURET@(#)="20;4^PREFIX^^^" "KRN",8994,718,3,46,0) @XURET@(#)="20;5^SUFFIX^^^" "KRN",8994,718,3,47,0) @XURET@(#)="20;6^DEGREE^^^" "KRN",8994,718,3,48,0) @XURET@(#)="200;29^SERVICE/SECTION^^^" "KRN",8994,718,3,49,0) @XURET@(#)="200;201^PRIMARY MENU OPTION^^^" "KRN",8994,718,3,50,0) @XURET@(#)="200;203;.01^SECONDARY MENU OPTIONS^<1-n>^^" "KRN",8994,718,3,51,0) @XURET@(#)="200;51;.01^KEYS^<1-n>^^" "KRN",8994,718,3,52,0) @XURET@(#)="200;205.1^SECID^^^" "KRN",8994,718,3,53,0) @XURET@(#)="200;205.2^SUBJECT ORGANIZATION^^^" "KRN",8994,718,3,54,0) @XURET@(#)="200;205.3^SUBJECT ORGANIZATION ID^^^" "KRN",8994,718,3,55,0) @XURET@(#)="200;205.4^UNIQUE USER ID^^^" "KRN",8994,718,3,56,0) @XURET@(#)="200;205.5^ADUPN^^^" "KRN",8994,718,3,57,0) @XURET@(#)="200;501.1^NETWORK USERNAME^^^" "KRN",8994,718,3,58,0) @XURET@(#)="200;8932.1;.01^PERSON CLASS^<1-n>^^" "KRN",8994,718,3,59,0) @XURET@(#)="200;8932.1;2^EFFECTIVE DATE^<#>^^" "KRN",8994,718,3,60,0) @XURET@(#)="200;8932.1;3^EXPIRATION DATE^<#>^^" "KRN",8994,718,3,61,0) @XURET@(#)="200;53.1^AUTHORIZED TO WRITE MED ORDERS^^^" "KRN",8994,718,3,62,0) @XURET@(#)="200;53.11^DETOX/MAINTENANCE ID NUMBER^^^" "KRN",8994,718,3,63,0) @XURET@(#)="200;53.2^DEA#^^^" "KRN",8994,718,3,64,0) @XURET@(#)="200;747.44^DEA EXPIRATION DATE^^^" "KRN",8994,718,3,65,0) @XURET@(#)="200;53.4^INACTIVE DATE^^^" "KRN",8994,718,3,66,0) @XURET@(#)="200;53.5^PROVIDER CLASS^^^" "KRN",8994,718,3,67,0) @XURET@(#)="200;53.6^PROVIDER TYPE^^^" "KRN",8994,718,3,68,0) @XURET@(#)="200;53.9^REMARKS^^^" "KRN",8994,718,3,69,0) @XURET@(#)="200;53.91^NON-VA PRESCRIBER^^^" "KRN",8994,718,3,70,0) @XURET@(#)="200;53.92^TAX ID^^^" "KRN",8994,718,3,71,0) @XURET@(#)="200;55.1^SCHEDULE II NARCOTIC^^^" "KRN",8994,718,3,72,0) @XURET@(#)="200;55.2^SCHEDULE II NON-NARCOTIC^^^" "KRN",8994,718,3,73,0) @XURET@(#)="200;55.3^SCHEDULE III NARCOTIC^^^" "KRN",8994,718,3,74,0) @XURET@(#)="200;55.4^SCHEDULE III NON-NARCOTIC^^^" "KRN",8994,718,3,75,0) @XURET@(#)="200;55.5^SCHEDULE IV^^^" "KRN",8994,718,3,76,0) @XURET@(#)="200;55.6^SCHEDULE V^^^" "KRN",8994,718,3,77,0) "KRN",8994,718,3,78,0) **The following are ONLY returned if patch "KRN",8994,718,3,79,0) **XU*8.0*688 has been installed. "KRN",8994,718,3,80,0) **Subscript Counter (#) will denote the DEA Data that belongs to the "KRN",8994,718,3,81,0) DEA NUMBER subscript "KRN",8994,718,3,82,0) ** New DEA Data will always follow the DEA NUMBER entry! "KRN",8994,718,3,83,0) @XURET@(#)="200;9001^DETOX CALCULATED^^^" "KRN",8994,718,3,84,0) @XURET@(#)="200;53.21;.01;8991.9^DEA NUMBER^<1-n>^^" "KRN",8994,718,3,85,0) @XURET@(#)="200;53.21;.02^INDIVIDUAL DEA SUFFIX^<#>^^" "KRN",8994,718,3,86,0) **Only returned if there is a DEA NUMBER (200.5321) value!!** "KRN",8994,718,3,87,0) @XURET@(#)="8991.9;.02^BUSINESS ACTIVITY CODE^<#>^^" "KRN",8994,718,3,88,0) @XURET@(#)="8991.9;.03^DETOX NUMBER^<#>^^" "KRN",8994,718,3,89,0) @XURET@(#)="8991.9;.04^EXPIRATION DATE^<#>^^" "KRN",8994,718,3,90,0) @XURET@(#)="8991.9;.06^USE FOR INPATIENT ORDERS?^<#>^^" "KRN",8994,718,3,91,0) @XURET@(#)="8991.9;.07^TYPE^<#>^^" "KRN",8994,718,3,92,0) @XURET@(#)="8991.9;1.1^NAME (PROVIDER OR INSTITUTION)^<#>^^" "KRN",8994,718,3,93,0) @XURET@(#)="8991.9;1.2^STREET ADDRESS 1^<#>^^" "KRN",8994,718,3,94,0) @XURET@(#)="8991.9;1.3^STREET ADDRESS 2^<#>^^" "KRN",8994,718,3,95,0) @XURET@(#)="8991.9;1.4^STREET ADDRESS 3^<#>^^" "KRN",8994,718,3,96,0) @XURET@(#)="8991.9;1.5^CITY^<#>^^" "KRN",8994,718,3,97,0) @XURET@(#)="8991.9;1.6^STATE^<#>^^" "KRN",8994,718,3,98,0) @XURET@(#)="8991.9;1.7^ZIP CODE^<#>^^" "KRN",8994,718,3,99,0) @XURET@(#)="8991.9;2.1^SCHEDULE II NARCOTIC?^<#>^^" "KRN",8994,718,3,100,0) @XURET@(#)="8991.9;2.2^SCHEDULE II NON-NARCOTIC?^<#>^^" "KRN",8994,718,3,101,0) @XURET@(#)="8991.9;2.3^SCHEDULE III NARCOTIC?^<#>^^" "KRN",8994,718,3,102,0) @XURET@(#)="8991.9;2.4^SCHEDULE III NON-NARCOTIC?^<#>^^" "KRN",8994,718,3,103,0) @XURET@(#)="8991.9;2.5^SCHEDULE IV?^<#>^^" "KRN",8994,718,3,104,0) @XURET@(#)="8991.9;2.6^SCHEDULE V?^<#>^^" "KRN",8994,718,3,105,0) @XURET@(#)="8991.9;10.1^LAST UPDATED BY^<#>^^" "KRN",8994,718,3,106,0) @XURET@(#)="8991.9;10.2^LAST UPDATED DATE/TIME^<#>^^" "KRN",8994,718,3,107,0) @XURET@(#)="8991.9;10.3^LAST DOJ UPDATE DATE/TIME^<#>^^" "KRN",8994,718,3,108,0) "KRN",8994,718,3,109,0) Fail: "KRN",8994,718,3,110,0) XURET = ^TMP("XUMVINPU",$J) "KRN",8994,718,3,111,0) @XURET@(1)="-1^Invalid User" "KRN",8994,718,3,112,0) or "KRN",8994,718,3,113,0) @XURET@(1)="-1^No Data for User: ######" "MBREQ") 0 "ORD",16,8994) 8994;16;1;;;;RPCE1^XPDIA1;;;RPCDEL^XPDIA1 "ORD",16,8994,0) REMOTE PROCEDURE "PKG",138,-1) 1^1 "PKG",138,0) KERNEL^XU^SIGN-ON, SECURITY, MENU DRIVER, DEVICES, TASKMAN^ "PKG",138,22,0) ^9.49I^1^1 "PKG",138,22,1,0) 8.0^2950703^2951127^12541 "PKG",138,22,1,"PAH",1,0) 732^3200707 "PKG",138,22,1,"PAH",1,1,0) ^^3^3^3200707 "PKG",138,22,1,"PAH",1,1,1,0) KERNEL VISTA ISSUES - NPI DUPLICATES "PKG",138,22,1,"PAH",1,1,2,0) Refer to patch XU*8.0*732 in the FORUM Patch Module for a complete "PKG",138,22,1,"PAH",1,1,3,0) description. "QUES","XPF1",0) Y "QUES","XPF1","??") ^D REP^XPDH "QUES","XPF1","A") Shall I write over your |FLAG| File "QUES","XPF1","B") YES "QUES","XPF1","M") D XPF1^XPDIQ "QUES","XPF2",0) Y "QUES","XPF2","??") ^D DTA^XPDH "QUES","XPF2","A") Want my data |FLAG| yours "QUES","XPF2","B") YES "QUES","XPF2","M") D XPF2^XPDIQ "QUES","XPI1",0) YO "QUES","XPI1","??") ^D INHIBIT^XPDH "QUES","XPI1","A") Want KIDS to INHIBIT LOGONs during the install "QUES","XPI1","B") NO "QUES","XPI1","M") D XPI1^XPDIQ "QUES","XPM1",0) PO^VA(200,:EM "QUES","XPM1","??") ^D MG^XPDH "QUES","XPM1","A") Enter the Coordinator for Mail Group '|FLAG|' "QUES","XPM1","B") "QUES","XPM1","M") D XPM1^XPDIQ "QUES","XPO1",0) Y "QUES","XPO1","??") ^D MENU^XPDH "QUES","XPO1","A") Want KIDS to Rebuild Menu Trees Upon Completion of Install "QUES","XPO1","B") NO "QUES","XPO1","M") D XPO1^XPDIQ "QUES","XPZ1",0) Y "QUES","XPZ1","??") ^D OPT^XPDH "QUES","XPZ1","A") Want to DISABLE Scheduled Options, Menu Options, and Protocols "QUES","XPZ1","B") NO "QUES","XPZ1","M") D XPZ1^XPDIQ "QUES","XPZ2",0) Y "QUES","XPZ2","??") ^D RTN^XPDH "QUES","XPZ2","A") Want to MOVE routines to other CPUs "QUES","XPZ2","B") NO "QUES","XPZ2","M") D XPZ2^XPDIQ "RTN") 2 "RTN","XUMVINPU") 0^1^B148889034^B125047049 "RTN","XUMVINPU",1,0) XUMVINPU ;MVI/DRI - Master Veteran Index New Person Utilities ;6/15/20 16:02 "RTN","XUMVINPU",2,0) ;;8.0;KERNEL;**691,711,710,732**;Jul 10, 1995;Build 3 "RTN","XUMVINPU",3,0) ;Per VA Directive 6402, this routine should not be modified. "RTN","XUMVINPU",4,0) ; "RTN","XUMVINPU",5,0) ;**711, Story 977780 (jfw) "RTN","XUMVINPU",6,0) ;**732,Story 1204309 (mko) "RTN","XUMVINPU",7,0) GET(XURET,XUDUZ,SECID,NPI,SSN) ;rpc to retrieve new person file data "RTN","XUMVINPU",8,0) ; called from rpc: XUS MVI NEW PERSON GET "RTN","XUMVINPU",9,0) ; Input (ONE of the following): "RTN","XUMVINPU",10,0) ; XUDUZ = NEW PERSON IEN SECID=SECURITY ID NPI=NATIONAL PROVIDER IDENTIFIER SSN=SOCIAL SECURITY NUMBER "RTN","XUMVINPU",11,0) ; Output: "RTN","XUMVINPU",12,0) ; Success: XURET = ^TMP("XUMVINPU",$J) "RTN","XUMVINPU",13,0) ; @XURET@(#) = FILE #;FIELD #<;SUBFIELD #><;FILE POINTER>^FIELD NAME^^INTERNAL VALUE^EXTERNAL VALUE "RTN","XUMVINPU",14,0) ; <> Denotes optional values. If Counter populated, denotes multiple value <1-n>. "RTN","XUMVINPU",15,0) ; @XURET@(#)="200;IEN^DUZ^^^" "RTN","XUMVINPU",16,0) ; @XURET@(#)="200;.01^NAME^^^" "RTN","XUMVINPU",17,0) ; @XURET@(#)="200;4^SEX^^^" "RTN","XUMVINPU",18,0) ; @XURET@(#)="200;5^DOB^^^" ;**732,1204309 (mko): Return DOB "RTN","XUMVINPU",19,0) ; @XURET@(#)="200;8^TITLE^^^" "RTN","XUMVINPU",20,0) ; @XURET@(#)="200;7^DISUSER^^^" "RTN","XUMVINPU",21,0) ; @XURET@(#)="200;9.2^TERMINATION DATE^^^" "RTN","XUMVINPU",22,0) ; @XURET@(#)="200;9.4^Termination Reason^^^" "RTN","XUMVINPU",23,0) ; @XURET@(#)="200;15^PROHIBITED TIMES FOR SIGN-ON^^^" "RTN","XUMVINPU",24,0) ; @XURET@(#)="200;11.2^DATE VERIFY CODE LAST CHANGED^^^" "RTN","XUMVINPU",25,0) ; @XURET@(#)="200;.111^STREET ADDRESS 1^^^" "RTN","XUMVINPU",26,0) ; @XURET@(#)="200;.112^STREET ADDRESS 2^^^" "RTN","XUMVINPU",27,0) ; @XURET@(#)="200;.113^STREET ADDRESS 3^^^" "RTN","XUMVINPU",28,0) ; @XURET@(#)="200;.114^CITY^^^" "RTN","XUMVINPU",29,0) ; @XURET@(#)="200;.115^STATE^^^" "RTN","XUMVINPU",30,0) ; @XURET@(#)="200;.116^ZIP CODE^^^" "RTN","XUMVINPU",31,0) ; @XURET@(#)="200;.132^OFFICE PHONE^^^" "RTN","XUMVINPU",32,0) ; @XURET@(#)="200;.136^FAX NUMBER^^^" "RTN","XUMVINPU",33,0) ; @XURET@(#)="200;.151^EMAIL ADDRESS^^^" "RTN","XUMVINPU",34,0) ; @XURET@(#)="200;30^DATE ENTERED^^^" "RTN","XUMVINPU",35,0) ; @XURET@(#)="200;31^CREATOR^^^" "RTN","XUMVINPU",36,0) ; @XURET@(#)="200;41.98^NPI ENTRY STATUS^^" "RTN","XUMVINPU",37,0) ; @XURET@(#)="200;41.99^NPI^^^" "RTN","XUMVINPU",38,0) ; @XURET@(#)="200;42;.01^EFFECTIVE DATE/TIME^<#>^^" "RTN","XUMVINPU",39,0) ; @XURET@(#)="200;42;.02^STATUS^<#>^^" "RTN","XUMVINPU",40,0) ; @XURET@(#)="200;42;.03^NPI^<#>^^" "RTN","XUMVINPU",41,0) ; @XURET@(#)="200;9^SSN^^^" "RTN","XUMVINPU",42,0) ; @XURET@(#)="200;202^LAST SIGN-ON DATE/TIME^^^" "RTN","XUMVINPU",43,0) ; @XURET@(#)="200;202.02^XUS Logon Attempt Count^^^" "RTN","XUMVINPU",44,0) ; @XURET@(#)="200;202.03^XUS Active User^^^" "RTN","XUMVINPU",45,0) ; @XURET@(#)="200;202.04^Entry Last Edit Date^^^" "RTN","XUMVINPU",46,0) ; @XURET@(#)="200;202.05^LOCKOUT USER UNTIL^^^" "RTN","XUMVINPU",47,0) ; @XURET@(#)="200;16;.01^DIVISION^<1-n>^^" "RTN","XUMVINPU",48,0) ; @XURET@(#)="200;10.1^NAME COMPONENTS^^^" "RTN","XUMVINPU",49,0) ; @XURET@(#)="20;1^FAMILY (LAST) NAME^^^" "RTN","XUMVINPU",50,0) ; @XURET@(#)="20;2^GIVEN (FIRST) NAME^^^" "RTN","XUMVINPU",51,0) ; @XURET@(#)="20;3^MIDDLE NAME^^^" "RTN","XUMVINPU",52,0) ; @XURET@(#)="20;4^PREFIX^^^" "RTN","XUMVINPU",53,0) ; @XURET@(#)="20;5^SUFFIX^^^" "RTN","XUMVINPU",54,0) ; @XURET@(#)="20;6^DEGREE^^^" "RTN","XUMVINPU",55,0) ; @XURET@(#)="200;29^SERVICE/SECTION^^^" "RTN","XUMVINPU",56,0) ; @XURET@(#)="200;201^PRIMARY MENU OPTION^^^" "RTN","XUMVINPU",57,0) ; @XURET@(#)="200;203;.01^SECONDARY MENU OPTIONS^<1-n>^^" "RTN","XUMVINPU",58,0) ; @XURET@(#)="200;51;.01^KEYS^<1-n>^^" "RTN","XUMVINPU",59,0) ; @XURET@(#)="200;205.1^SECID^^^" "RTN","XUMVINPU",60,0) ; @XURET@(#)="200;205.2^SUBJECT ORGANIZATION^^^" "RTN","XUMVINPU",61,0) ; @XURET@(#)="200;205.3^SUBJECT ORGANIZATION ID^^^" "RTN","XUMVINPU",62,0) ; @XURET@(#)="200;205.4^UNIQUE USER ID^^^" "RTN","XUMVINPU",63,0) ; @XURET@(#)="200;205.5^ADUPN^^^" "RTN","XUMVINPU",64,0) ; @XURET@(#)="200;501.1^NETWORK USERNAME^^^" "RTN","XUMVINPU",65,0) ; @XURET@(#)="200;8932.1;.01^PERSON CLASS^<1-n>^^" "RTN","XUMVINPU",66,0) ; @XURET@(#)="200;8932.1;2^EFFECTIVE DATE^<#>^^" "RTN","XUMVINPU",67,0) ; @XURET@(#)="200;8932.1;3^EXPIRATION DATE^<#>^^" "RTN","XUMVINPU",68,0) ; @XURET@(#)="200;53.1^AUTHORIZED TO WRITE MED ORDERS^^^" "RTN","XUMVINPU",69,0) ; @XURET@(#)="200;53.11^DETOX/MAINTENANCE ID NUMBER^^^" "RTN","XUMVINPU",70,0) ; @XURET@(#)="200;53.2^DEA#^^^" "RTN","XUMVINPU",71,0) ; @XURET@(#)="200;747.44^DEA EXPIRATION DATE^^^" "RTN","XUMVINPU",72,0) ; @XURET@(#)="200;53.4^INACTIVE DATE^^^" "RTN","XUMVINPU",73,0) ; @XURET@(#)="200;53.5^PROVIDER CLASS^^^" "RTN","XUMVINPU",74,0) ; @XURET@(#)="200;53.6^PROVIDER TYPE^^^" "RTN","XUMVINPU",75,0) ; @XURET@(#)="200;53.9^REMARKS^^^" "RTN","XUMVINPU",76,0) ; @XURET@(#)="200;53.91^NON-VA PRESCRIBER^^^" "RTN","XUMVINPU",77,0) ; @XURET@(#)="200;53.92^TAX ID^^^" "RTN","XUMVINPU",78,0) ; @XURET@(#)="200;55.1^SCHEDULE II NARCOTIC^^^" "RTN","XUMVINPU",79,0) ; @XURET@(#)="200;55.2^SCHEDULE II NON-NARCOTIC^^^" "RTN","XUMVINPU",80,0) ; @XURET@(#)="200;55.3^SCHEDULE III NARCOTIC^^^" "RTN","XUMVINPU",81,0) ; @XURET@(#)="200;55.4^SCHEDULE III NON-NARCOTIC^^^" "RTN","XUMVINPU",82,0) ; @XURET@(#)="200;55.5^SCHEDULE IV^^^" "RTN","XUMVINPU",83,0) ; @XURET@(#)="200;55.6^SCHEDULE V^^^" "RTN","XUMVINPU",84,0) ; "RTN","XUMVINPU",85,0) ; **The following are ONLY returned if patch "RTN","XUMVINPU",86,0) ; **XU*8.0*688 has been installed. "RTN","XUMVINPU",87,0) ; **Subscript Counter (#) will denote the DEA Data that belongs to the DEA NUMBER subscript "RTN","XUMVINPU",88,0) ; ** New DEA Data will always follow the DEA NUMBER entry! "RTN","XUMVINPU",89,0) ; @XURET@(#)="200;9001^DETOX CALCULATED^^^" "RTN","XUMVINPU",90,0) ; @XURET@(#)="200;53.21;.01;8991.9^DEA NUMBER^<1-n>^^" "RTN","XUMVINPU",91,0) ; @XURET@(#)="200;53.21;.02^INDIVIDUAL DEA SUFFIX^<#>^^" "RTN","XUMVINPU",92,0) ; **Only returned if there is a DEA NUMBER (200.5321) value!!** "RTN","XUMVINPU",93,0) ; @XURET@(#)="8991.9;.02^BUSINESS ACTIVITY CODE^<#>^^" "RTN","XUMVINPU",94,0) ; @XURET@(#)="8991.9;.03^DETOX NUMBER^<#>^^" "RTN","XUMVINPU",95,0) ; @XURET@(#)="8991.9;.04^EXPIRATION DATE^<#>^^" "RTN","XUMVINPU",96,0) ; @XURET@(#)="8991.9;.06^USE FOR INPATIENT ORDERS?^<#>^^" "RTN","XUMVINPU",97,0) ; @XURET@(#)="8991.9;.07^TYPE^<#>^^" "RTN","XUMVINPU",98,0) ; @XURET@(#)="8991.9;1.1^NAME (PROVIDER OR INSTITUTION)^<#>^^" "RTN","XUMVINPU",99,0) ; @XURET@(#)="8991.9;1.2^STREET ADDRESS 1^<#>^^" "RTN","XUMVINPU",100,0) ; @XURET@(#)="8991.9;1.3^STREET ADDRESS 2^<#>^^" "RTN","XUMVINPU",101,0) ; @XURET@(#)="8991.9;1.4^STREET ADDRESS 3^<#>^^" "RTN","XUMVINPU",102,0) ; @XURET@(#)="8991.9;1.5^CITY^<#>^^" "RTN","XUMVINPU",103,0) ; @XURET@(#)="8991.9;1.6^STATE^<#>^^" "RTN","XUMVINPU",104,0) ; @XURET@(#)="8991.9;1.7^ZIP CODE^<#>^^" "RTN","XUMVINPU",105,0) ; @XURET@(#)="8991.9;2.1^SCHEDULE II NARCOTIC?^<#>^^" "RTN","XUMVINPU",106,0) ; @XURET@(#)="8991.9;2.2^SCHEDULE II NON-NARCOTIC?^<#>^^" "RTN","XUMVINPU",107,0) ; @XURET@(#)="8991.9;2.3^SCHEDULE III NARCOTIC?^<#>^^" "RTN","XUMVINPU",108,0) ; @XURET@(#)="8991.9;2.4^SCHEDULE III NON-NARCOTIC?^<#>^^" "RTN","XUMVINPU",109,0) ; @XURET@(#)="8991.9;2.5^SCHEDULE IV?^<#>^^" "RTN","XUMVINPU",110,0) ; @XURET@(#)="8991.9;2.6^SCHEDULE V?^<#>^^" "RTN","XUMVINPU",111,0) ; @XURET@(#)="8991.9;10.1^LAST UPDATED BY^<#>^^" "RTN","XUMVINPU",112,0) ; @XURET@(#)="8991.9;10.2^LAST UPDATED DATE/TIME^<#>^^" "RTN","XUMVINPU",113,0) ; @XURET@(#)="8991.9;10.3^LAST DOJ UPDATE DATE/TIME^<#>^^" "RTN","XUMVINPU",114,0) ; "RTN","XUMVINPU",115,0) ; Fail: "RTN","XUMVINPU",116,0) ; XURET = ^TMP("XUMVINPU",$J) "RTN","XUMVINPU",117,0) ; @XURET@(1)="-1^Invalid User" "RTN","XUMVINPU",118,0) ; or "RTN","XUMVINPU",119,0) ; @XURET@(1)="-1^No Data for User: ######" "RTN","XUMVINPU",120,0) ; "RTN","XUMVINPU",121,0) ; Example calling rpc from VistA: "RTN","XUMVINPU",122,0) ; >D GET^XUMVINPU(.XURET,12596) "RTN","XUMVINPU",123,0) ; >ZW XURET "RTN","XUMVINPU",124,0) ; >XURET="^TMP(""XUMVINPU"",17226)" "RTN","XUMVINPU",125,0) ; "RTN","XUMVINPU",126,0) ; D ^%G would return: "RTN","XUMVINPU",127,0) ; ^TMP("XUMVINPU",17226,1)="200;IEN^DUZ^12596^12596" "RTN","XUMVINPU",128,0) ; 2)="200;.01^NAME^LAST,FIRST^LAST,FIRST" "RTN","XUMVINPU",129,0) ; 3)="200;7^DISUSER^^" "RTN","XUMVINPU",130,0) ; #)=continuation of returned data "RTN","XUMVINPU",131,0) ; "RTN","XUMVINPU",132,0) ; Example calling rpc from MVI: "RTN","XUMVINPU",133,0) ; D DIRECT^XWB2HL7(.XURET,SITE,"XUS MVI NEW PERSON GET","",$G(XUDUZ),$G(SECID),$G(NPI),$G(SSN)) "RTN","XUMVINPU",134,0) ; "RTN","XUMVINPU",135,0) N I,CNT,FILE,FLD,FLDS,FLDCNT,FLDNM,XUARR,XUGBL S XUGBL="^TMP("_"""XUMVINPU"""_","_$J_")",CNT=1,FILE=200 K @XUGBL,XURET "RTN","XUMVINPU",136,0) I $G(SECID)'="" S XUDUZ=$O(^VA(FILE,"ASECID",SECID,0)) "RTN","XUMVINPU",137,0) I $G(NPI)'="" S XUDUZ=$O(^VA(FILE,"ANPI",NPI,0)) "RTN","XUMVINPU",138,0) I $G(SSN)'="" S XUDUZ=$O(^VA(FILE,"SSN",SSN,0)) "RTN","XUMVINPU",139,0) I $G(XUDUZ)="" S @XUGBL@(CNT)="-1^Invalid User" S XURET=$NA(@XUGBL) Q "RTN","XUMVINPU",140,0) I '$D(^VA(FILE,XUDUZ)) S @XUGBL@(CNT)="-1^No Data for User: "_XUDUZ S XURET=$NA(@XUGBL) Q "RTN","XUMVINPU",141,0) S @XUGBL@(CNT)=FILE_";IEN^DUZ^^"_XUDUZ_"^"_XUDUZ S CNT=CNT+1 "RTN","XUMVINPU",142,0) S FLDS=".01;4;5;8;7;9.2;9.4;15;11.2;.111;.112;.113;.114;.115;.116;.132;.136;.151;30;31;41.98;41.99;9;42*;202;202.02;202.03;" "RTN","XUMVINPU",143,0) S FLDS=FLDS_"202.04;202.05;16*;10.1;29;201;203*;51*;205.1;205.2;205.3;205.4;205.5;501.1;8932.1*;53.1;53.11;53.2;" "RTN","XUMVINPU",144,0) S FLDS=FLDS_"747.44;53.4;53.5;53.6;53.9;53.91;53.92;55.1;55.2;55.3;55.4;55.5;55.6" "RTN","XUMVINPU",145,0) S:($$PATCH^XPDUTL("XU*8.0*688")) FLDS=FLDS_";9001;53.21*" ;NEW DETOX CALCULATED and DEA #'S multiple | DBIA #10141 (Supported) "RTN","XUMVINPU",146,0) S FLDCNT=$L(FLDS,";") D GETS^DIQ(FILE,+XUDUZ_",",FLDS,"EI","XUARR") ;retrieve data "RTN","XUMVINPU",147,0) F I=1:1:FLDCNT D "RTN","XUMVINPU",148,0) .S FLD=$P($P(FLDS,";",I),"*") D FIELD^DID(FILE,FLD,"","LABEL","FLDNM") "RTN","XUMVINPU",149,0) .I FLD=16 D Q ;division multiple "RTN","XUMVINPU",150,0) ..N IENS,MCNT,SUBFILE,SUBFLD S MCNT=1,SUBFILE=200.02,SUBFLD=.01 D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",151,0) ..I '$D(XUARR(SUBFILE)) S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^^" S CNT=CNT+1 Q "RTN","XUMVINPU",152,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"I"))_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"E")) S MCNT=MCNT+1,CNT=CNT+1 "RTN","XUMVINPU",153,0) .I FLD=10.1 D Q ;name components "RTN","XUMVINPU",154,0) ..S @XUGBL@(CNT)=FILE_";"_FLD_"^"_(FLDNM("LABEL"))_"^^"_$G(XUARR(FILE,XUDUZ_",",FLD,"I"))_"^"_$G(XUARR(FILE,XUDUZ_",",FLD,"E")) S CNT=CNT+1 "RTN","XUMVINPU",155,0) ..N NCFILE,NCFLD S NCFILE=20 D GETS^DIQ(NCFILE,+$G(XUARR(FILE,XUDUZ_",",FLD,"I"))_",","1;2;3;4;5;6","EI","XUARR") ;retrieve name component data "RTN","XUMVINPU",156,0) ..F NCFLD=1,2,3,4,5,6 D "RTN","XUMVINPU",157,0) ...D FIELD^DID(NCFILE,NCFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",158,0) ...S @XUGBL@(CNT)=NCFILE_";"_NCFLD_"^"_(FLDNM("LABEL"))_"^^"_$G(XUARR(NCFILE,+$G(XUARR(FILE,XUDUZ_",",FLD,"I"))_",",NCFLD,"I"))_"^"_$G(XUARR(NCFILE,+$G(XUARR(FILE,XUDUZ_",",FLD,"I"))_",",NCFLD,"E")) S CNT=CNT+1 "RTN","XUMVINPU",159,0) .I FLD=42 D Q ;**732,Story 1204309 (mko): EFFECTIVE DATE/TIME (#42) (Multiple-200.042) "RTN","XUMVINPU",160,0) ..N IENS,MCNT,SUBFILE,SUBFLD S MCNT=1,SUBFILE=200.042 "RTN","XUMVINPU",161,0) ..I '$D(XUARR(SUBFILE)) D Q ;No EFFECTIVE DATE/TIME "RTN","XUMVINPU",162,0) ...F SUBFLD=.01,.02,.03 D "RTN","XUMVINPU",163,0) ....D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_FLDNM("LABEL")_"^"_MCNT_"^^",CNT=CNT+1 "RTN","XUMVINPU",164,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" D "RTN","XUMVINPU",165,0) ...F SUBFLD=.01,.02,.03 D "RTN","XUMVINPU",166,0) ....D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",167,0) ....S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_FLDNM("LABEL")_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"I"))_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"E")),CNT=CNT+1 "RTN","XUMVINPU",168,0) ...S MCNT=MCNT+1 "RTN","XUMVINPU",169,0) .I FLD=51 D Q ;KEYS multiple "RTN","XUMVINPU",170,0) ..N IENS,MCNT,SUBFILE,SUBFLD S MCNT=1,SUBFILE=200.051,SUBFLD=.01 D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",171,0) ..I '$D(XUARR(SUBFILE)) S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^^",CNT=CNT+1 Q "RTN","XUMVINPU",172,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"I"))_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"E")),MCNT=MCNT+1,CNT=CNT+1 "RTN","XUMVINPU",173,0) .I FLD=53.21 D Q ;NEW DEA #'s multiple "RTN","XUMVINPU",174,0) ..N I,IEN,IENS,MCNT,SUBFILE,SUBFLD,DEAARR,DEAFILE,DEAFLD,DEAFLDS,DEAFLDCNT S MCNT=1,SUBFILE=200.5321,SUBFLD=.01,DEAFILE=8991.9 "RTN","XUMVINPU",175,0) ..D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",176,0) ..I '$D(XUARR(SUBFILE)) D Q "RTN","XUMVINPU",177,0) ...S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_";8991.9^"_(FLDNM("LABEL"))_"^"_MCNT_"^^",CNT=CNT+1 D FIELD^DID(SUBFILE,.02,"","LABEL","FLDNM") "RTN","XUMVINPU",178,0) ...S @XUGBL@(CNT)=FILE_";"_FLD_";"_.02_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^^",CNT=CNT+1 "RTN","XUMVINPU",179,0) ..S DEAFLDS=".02;.03;.04;.06;.07;1.1;1.2;1.3;1.4;1.5;1.6;1.7;2.1;2.2;2.3;2.4;2.5;2.6;10.1;10.2;10.3",DEAFLDCNT=$L(DEAFLDS,";") "RTN","XUMVINPU",180,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" D "RTN","XUMVINPU",181,0) ...S IEN=$G(XUARR(SUBFILE,IENS,.03,"I")) D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",182,0) ...S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_";8991.9^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_IEN_"^"_$G(XUARR(SUBFILE,IENS,.03,"E")),CNT=CNT+1 "RTN","XUMVINPU",183,0) ...D FIELD^DID(SUBFILE,.02,"","LABEL","FLDNM") "RTN","XUMVINPU",184,0) ...S @XUGBL@(CNT)=FILE_";"_FLD_";.02^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,.02,"I"))_"^"_$G(XUARR(SUBFILE,IENS,.02,"E")),CNT=CNT+1 "RTN","XUMVINPU",185,0) ...D GETS^DIQ(DEAFILE,IEN_",",DEAFLDS,"EI","DEAARR") ;retrieve DEA data "RTN","XUMVINPU",186,0) ...F I=1:1:DEAFLDCNT D "RTN","XUMVINPU",187,0) ....S DEAFLD=$P(DEAFLDS,";",I) D FIELD^DID(DEAFILE,DEAFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",188,0) ....S @XUGBL@(CNT)=DEAFILE_";"_DEAFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(DEAARR(DEAFILE,IEN_",",DEAFLD,"I"))_"^"_$G(DEAARR(DEAFILE,IEN_",",DEAFLD,"E")),CNT=CNT+1 "RTN","XUMVINPU",189,0) ...S MCNT=MCNT+1 "RTN","XUMVINPU",190,0) .I FLD=203 D Q ;secondary menu options multiple "RTN","XUMVINPU",191,0) ..N IENS,MCNT,SUBFILE,SUBFLD S MCNT=1,SUBFILE=200.03,SUBFLD=.01 D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",192,0) ..I '$D(XUARR(SUBFILE)) S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^^" S CNT=CNT+1 Q "RTN","XUMVINPU",193,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"I"))_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"E")) S MCNT=MCNT+1,CNT=CNT+1 "RTN","XUMVINPU",194,0) .I FLD=8932.1 D Q ;PERSON CLASS multiple "RTN","XUMVINPU",195,0) ..N IENS,MCNT,SUBFILE,SUBFLD S MCNT=1,SUBFILE=200.05 I '$D(XUARR(SUBFILE)) D Q ;No Person Class(es) "RTN","XUMVINPU",196,0) ...F SUBFLD=.01,2,3 D "RTN","XUMVINPU",197,0) ....D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^^",CNT=CNT+1 "RTN","XUMVINPU",198,0) ..S IENS="" F S IENS=$O(XUARR(SUBFILE,IENS)) Q:IENS="" D "RTN","XUMVINPU",199,0) ...F SUBFLD=.01,2,3 D "RTN","XUMVINPU",200,0) ....D FIELD^DID(SUBFILE,SUBFLD,"","LABEL","FLDNM") "RTN","XUMVINPU",201,0) ....S @XUGBL@(CNT)=FILE_";"_FLD_";"_SUBFLD_"^"_(FLDNM("LABEL"))_"^"_MCNT_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"I"))_"^"_$G(XUARR(SUBFILE,IENS,SUBFLD,"E")),CNT=CNT+1 "RTN","XUMVINPU",202,0) ...S MCNT=MCNT+1 "RTN","XUMVINPU",203,0) .S @XUGBL@(CNT)=FILE_";"_FLD_"^"_(FLDNM("LABEL"))_"^^"_XUARR(FILE,XUDUZ_",",FLD,"I")_"^"_XUARR(FILE,XUDUZ_",",FLD,"E") S CNT=CNT+1 ;all other fields "RTN","XUMVINPU",204,0) S XURET=$NA(@XUGBL) "RTN","XUMVINPU",205,0) Q "RTN","XUMVINPU",206,0) ; "RTN","XUMVINPU",207,0) UPDATE(XURET,XUARR) ;rpc to update new person file data "RTN","XUMVINPU",208,0) ; called from rpc: XUS MVI NEW PERSON UPDATE "RTN","XUMVINPU",209,0) ; Input: "RTN","XUMVINPU",210,0) ; XUARR(#) = FILE #;FIELD #<;SUBFIELD #><;FILE POINTER>^FIELD NAME^^INTERNAL VALUE^EXTERNAL VALUE "RTN","XUMVINPU",211,0) ; <> Denotes optional values. If Counter populated, denotes multiple value <1-n>. "RTN","XUMVINPU",212,0) ; XUARR(0)="200;IEN^DUZ^^^" "RTN","XUMVINPU",213,0) ; XUARR(#)="200;.01^NAME^^^" "RTN","XUMVINPU",214,0) ; XUARR(#)="200;205.1^SECID^^" "RTN","XUMVINPU",215,0) ; XUARR(#)="200;205.2^SUBJECT ORGANIZATION^^^" "RTN","XUMVINPU",216,0) ; XUARR(#)="200;205.3^SUBJECT ORGANIZATION ID^^^" "RTN","XUMVINPU",217,0) ; XUARR(#)="200;205.4^UNIQUE USER ID^^^" "RTN","XUMVINPU",218,0) ; XUARR(#)="200;205.5^ADUPN^^^" "RTN","XUMVINPU",219,0) ; **711, Story 977821 (jfw) - Allow additional fields to be updated. "RTN","XUMVINPU",220,0) ; XUARR(#)="200;.151^EMAIL ADDRESS^^^" "RTN","XUMVINPU",221,0) ; XUARR(#)="200;501.1^NETWORK USERNAME^^^" "RTN","XUMVINPU",222,0) ; **710, Story 1100018 (jfw) - Add NPI field to be updated. "RTN","XUMVINPU",223,0) ; XUARR(#)="200;41.99^NPI^^^" "RTN","XUMVINPU",224,0) ; **732,Story 1204309 (mko): Add NPI ENTRY STATUS (#41.98) "RTN","XUMVINPU",225,0) ; XUARR(#)=200;41.98^NPI ENTRY STATUS^^ "RTN","XUMVINPU",226,0) ; **732, story 1278983 (cmc) add EFFECTIVE DATE (#42) MULTIPLE "RTN","XUMVINPU",227,0) ; XUARR(#)="200;42;.01^EFFECTIVE DATE/TIME^<#>^^" "RTN","XUMVINPU",228,0) ; XUARR(#)="200;42;.02^STATUS^<#>^^" "RTN","XUMVINPU",229,0) ; XUARR(#)="200;42;.03^NPI^<#>^^" "RTN","XUMVINPU",230,0) ; Success: "RTN","XUMVINPU",231,0) ; XURET(0) = 1 "RTN","XUMVINPU",232,0) ; Fail: "RTN","XUMVINPU",233,0) ; XURET(0) = "-1^No data passed" "RTN","XUMVINPU",234,0) ; XURET(0) = "-1^Invalid User DUZ (null)" "RTN","XUMVINPU",235,0) ; XURET(0) = "-1^User '"_XUDUZ_"' does not exist" "RTN","XUMVINPU",236,0) ; XURET(0) = "-1^Invalid Name Component IEN" "RTN","XUMVINPU",237,0) ; XURET(0) = "-1^No Data for Name Component IEN: "_NCIEN "RTN","XUMVINPU",238,0) ; XURET(0) = "-1^No data to file for record '"_XUDUZ_"' in file 200" "RTN","XUMVINPU",239,0) ; XURET(0) = "-1^Unable to lock record '"_XUDUZ_"' in file 200" "RTN","XUMVINPU",240,0) ; XURET(0) = "-1^"_$G(XUERR("DIERR",1,"TEXT",1)) "RTN","XUMVINPU",241,0) ; "RTN","XUMVINPU",242,0) ; Example calling rpc from VistA: "RTN","XUMVINPU",243,0) ; >D UPDATE^XUMVINPU(.XURET,.XUARR) "RTN","XUMVINPU",244,0) ; >ZW XURET "RTN","XUMVINPU",245,0) ; >XURET(0)=1 "RTN","XUMVINPU",246,0) ; Example calling rpc from MVI: "RTN","XUMVINPU",247,0) ; D DIRECT^XWB2HL7(.XURET,SITE,"XUS MVI NEW PERSON UPDATE","",.XUARR) "RTN","XUMVINPU",248,0) K XURET N ARR,FILENUM,FLDNAM,FLDNUM,IDATA,NCIEN,NPIIN,NPIERR,NPINEW,XUDUZ,XUERR,XUFDA S ARR="XUARR" "RTN","XUMVINPU",249,0) I '$D(XUARR) S XURET(0)="-1^No data passed" Q "RTN","XUMVINPU",250,0) F S ARR=$Q(@ARR) Q:ARR="" S FILENUM=+$P($P(@ARR,"^",1),";",1),FLDNUM=+$P($P(@ARR,"^",1),";",2),FLDNAM=$P(@ARR,"^",2),IDATA=$P(@ARR,"^",4) D I $G(XURET(0))<0 Q "RTN","XUMVINPU",251,0) . I FLDNAM="DUZ" D Q ;first parameter passed "RTN","XUMVINPU",252,0) . . S XUDUZ=IDATA ;duz ien "RTN","XUMVINPU",253,0) . . I $G(XUDUZ)="" S XURET(0)="-1^Invalid User DUZ (null)" Q "RTN","XUMVINPU",254,0) . . I '$D(^VA(FILENUM,XUDUZ,0)) S XURET(0)="-1^User '"_XUDUZ_"' does not exist" Q "RTN","XUMVINPU",255,0) . I FLDNAM="NAME COMPONENTS" D Q "RTN","XUMVINPU",256,0) . . S NCIEN=IDATA ;name component ien "RTN","XUMVINPU",257,0) . . I $G(NCIEN)="" S XURET(0)="-1^Invalid Name Component IEN" "RTN","XUMVINPU",258,0) . . I '$D(^VA(20,NCIEN,0)) S XURET(0)="-1^No Data for Name Components IEN: "_NCIEN "RTN","XUMVINPU",259,0) . ;**732,Story 1204309 (mko): If NPI is passed, not null, and doesn't yet exist "RTN","XUMVINPU",260,0) . ; in the EFFECTIVE DATE/TIME multiple, add it, and let the "AC" xref update "RTN","XUMVINPU",261,0) . ; the single-valued fields AUTHORIZE RELEASE OF NPI (#41.97), NPI ENTRY STATUS (#41.98), and NPI (#41.99) at the top file level. "RTN","XUMVINPU",262,0) . ; IF NPI IS NOT BEING DELETED BUT ADDING A VALUE "RTN","XUMVINPU",263,0) . I FLDNAM="NPI",IDATA'="@" D Q "RTN","XUMVINPU",264,0) . . N IENS,ERR,XUFDA,DIERR,DIHELP,DIMSG S NPIIN=IDATA "RTN","XUMVINPU",265,0) . . Q:IDATA="" Q:$O(^VA(200,XUDUZ,"NPISTATUS","C",IDATA,"")) "RTN","XUMVINPU",266,0) . . S NPINEW=1,IENS="+1,"_XUDUZ_",",XUFDA(200.042,IENS,.01)="NOW",XUFDA(200.042,IENS,.02)=1,XUFDA(200.042,IENS,.03)=IDATA "RTN","XUMVINPU",267,0) . . D UPDATE^DIE("E","XUFDA","","ERR") S:$G(DIERR) NPIERR=$$BLDERR("ERR") "RTN","XUMVINPU",268,0) . I FLDNAM="NPI",IDATA="@" D Q "RTN","XUMVINPU",269,0) . . S XUFDA(200,XUDUZ_",",41.99)=IDATA,XUFDA(200,XUDUZ_",",41.98)=IDATA "RTN","XUMVINPU",270,0) . . ;GET NPI TO BE DELETED FROM ARR(X+1) "RTN","XUMVINPU",271,0) . . S ARR=$Q(@ARR) S NPI=$P(@ARR,"^",3),IENS=$O(^VA(200,XUDUZ,"NPISTATUS","C",NPI,""))_","_XUDUZ_",",XUFDA(200.042,IENS,.01)="@" "RTN","XUMVINPU",272,0) . S XUFDA(FILENUM,$S(FILENUM=200:+$G(XUDUZ),1:+$G(NCIEN))_",",FLDNUM)=IDATA "RTN","XUMVINPU",273,0) Q:$G(XURET(0))<0 "RTN","XUMVINPU",274,0) I '$G(NPINEW),'$D(XUFDA) S XURET(0)="-1^No data to file for record '"_XUDUZ_"' in file 200" Q "RTN","XUMVINPU",275,0) ;**732,Story 1204309 (mko): If NPI (#41.99) is not the NPI coming in, don't update NPI ENTRY STATUS (#41.98) "RTN","XUMVINPU",276,0) I $G(NPIIN)]"",$P($G(^VA(200,XUDUZ,"NPI")),U)'=NPIIN K XUFDA(200,XUDUZ_",",41.98) "RTN","XUMVINPU",277,0) ;**732,Story 1204309 (mko): File the Name first (Within a FILE^DIE call, "RTN","XUMVINPU",278,0) ; triggers on the .01 that in turn call FILE^DIE may cause the Filer flag to change from "E", to "". FDA must be also be namespaced) "RTN","XUMVINPU",279,0) I $D(XUFDA(200,XUDUZ_",",.01))#2 D Q:$G(XURET(0))["Unable to lock record" "RTN","XUMVINPU",280,0) . N NAMEFDA S NAMEFDA(200,XUDUZ_",",.01)=XUFDA(200,XUDUZ_",",.01) D FILER(XUDUZ,.NAMEFDA,.XURET) K XUFDA(200,XUDUZ_",",.01) "RTN","XUMVINPU",281,0) ;**732,Story 1204309 (mko): Move code to call Filer to subroutine "RTN","XUMVINPU",282,0) D FILER(XUDUZ,.XUFDA,.XURET) Q:$G(XURET(0))["Unable to lock record" "RTN","XUMVINPU",283,0) ;**732,Story 1204309 (mko): Add NPIERR to XURET(0) "RTN","XUMVINPU",284,0) S:$G(NPIERR)]"" XURET(0)=$$ADDERR(XURET(0),NPIERR) "RTN","XUMVINPU",285,0) ;Return 1 in first piece to indicate Filer/Updater calls were made. If errors, also return -1^errMsg in 2nd and 3rd pieces. "RTN","XUMVINPU",286,0) S XURET(0)=1_$S($G(XURET(0))<0:U_XURET(0),1:"") "RTN","XUMVINPU",287,0) Q "RTN","XUMVINPU",288,0) ; "RTN","XUMVINPU",289,0) FILER(XUDUZ,XUMVIFDA,XURET) ;Call the Filer "RTN","XUMVINPU",290,0) ;**732,Story 1204309 (mko): Move the code to call the Filer into a separate subroutine, since it is called multiple times. "RTN","XUMVINPU",291,0) N DIERR,DIHELP,DIMSG,XUERR "RTN","XUMVINPU",292,0) Q:'$G(XUDUZ) Q:'$D(XUMVIFDA) "RTN","XUMVINPU",293,0) L +^VA(200,XUDUZ):10 I '$T S XURET(0)="-1^Unable to lock record '"_XUDUZ_"' in file 200" Q "RTN","XUMVINPU",294,0) ;**710, Story 1100018 (jfw) - Process fields as External Values now so Input Transform checks fire "RTN","XUMVINPU",295,0) ;**732,Story 1204309 (mko): Unlock the record before checking for DIERR "RTN","XUMVINPU",296,0) D FILE^DIE("E","XUMVIFDA","XUERR") L -^VA(200,XUDUZ) "RTN","XUMVINPU",297,0) ;**732,Story 1204309 (mko): Put all error messages into XURET(0) "RTN","XUMVINPU",298,0) S:$G(DIERR) XURET(0)=$$ADDERR($G(XURET(0)),$$BLDERR("XUERR")) "RTN","XUMVINPU",299,0) Q "RTN","XUMVINPU",300,0) ; "RTN","XUMVINPU",301,0) ADDERR(RET,MSG) ;Return RET with MSG appended to it, and 1st piece equal to -1 "RTN","XUMVINPU",302,0) Q:$G(MSG)="" $G(RET) "RTN","XUMVINPU",303,0) Q $S($G(RET)]"":RET_" ",1:"-1^")_MSG "RTN","XUMVINPU",304,0) ; "RTN","XUMVINPU",305,0) BLDERR(INROOT) ;Build a string containing error messages returned by FileMan "RTN","XUMVINPU",306,0) N ERRSTR,I,XUERMSGS D MSG^DIALOG("AE",.XUERMSGS,"","",$G(INROOT)) "RTN","XUMVINPU",307,0) S ERRSTR="",I=0 F S I=$O(XUERMSGS(I)) Q:'I S:XUERMSGS(I)]"" ERRSTR=ERRSTR_$E(" ",ERRSTR]"")_XUERMSGS(I) "RTN","XUMVINPU",308,0) Q ERRSTR "RTN","XUP732") 0^2^B8347138^n/a "RTN","XUP732",1,0) XUP732 ;ALB/CMC - XU*8*732 POST-INIT ; 7/2/20 "RTN","XUP732",2,0) ;;8.0;KERNEL;**732**;Jul 10, 1995;Build 3 "RTN","XUP732",3,0) ; "RTN","XUP732",4,0) QUE ;Queue off the NPI DUPLICATE CLEANUP PROCESS "RTN","XUP732",5,0) N ZTIO,ZTSK,ZTRTN,ZTDESC,ZTSAVE,ZTDTH,Y "RTN","XUP732",6,0) S ZTIO="",ZTRTN="EN^XUP732",ZTDTH=$H "RTN","XUP732",7,0) S ZTDESC="XU*8.0*732 Post-Install NPI DUPLICATE CLEANUP PROCESS" "RTN","XUP732",8,0) D ^%ZTLOAD "RTN","XUP732",9,0) I '$G(ZTSK) D MES^XPDUTL(" **** Queuing job failed!!!") Q "RTN","XUP732",10,0) D MES^XPDUTL(" Job number #"_ZTSK_" was queued.") "RTN","XUP732",11,0) Q "RTN","XUP732",12,0) EN ; "RTN","XUP732",13,0) N NPI,CNT,CNT2,CNT3,CNT4,ISSUE,IEN,IEN2,NAME,XUARR,XURET,STRT,END "RTN","XUP732",14,0) S STRT=$$NOW^XLFDT "RTN","XUP732",15,0) S NPI="",CNT=0,CNT2=0,CNT3=0,CNT4=0 "RTN","XUP732",16,0) F S NPI=$O(^VA(200,"ANPI",NPI)) Q:NPI="" D "RTN","XUP732",17,0) .S IEN=$O(^VA(200,"ANPI",NPI,"")) S IEN2=$O(^VA(200,"ANPI",NPI,IEN)) "RTN","XUP732",18,0) .I IEN2'="" D "RTN","XUP732",19,0) ..;HAVE MORE THAN ONE DUZ FOR THE NPI "RTN","XUP732",20,0) ..S CNT=CNT+1 K XURET,XUARR "RTN","XUP732",21,0) ..;CHECK IF TITLE AND REMARKS ARE "NON-VA PROVIDER" "RTN","XUP732",22,0) ..I $$GET1^DIQ(200,IEN_",",8)="NON-VA PROVIDER"&($$GET1^DIQ(200,IEN_",",53.9)="NON-VA PROVIDER") S CNT2=CNT2+1 D "RTN","XUP732",23,0) ...;WE CREATED THE FIRST NPI CLEAN UP THE 2ND "RTN","XUP732",24,0) ...S NAME=$$GET1^DIQ(200,IEN2_",",.01) "RTN","XUP732",25,0) ...S XUARR(0)="200;IEN^DUZ^^"_IEN2_"^"_IEN2 "RTN","XUP732",26,0) ...S XUARR(1)="200;.01^NAME^ZZ"_NAME_"^ZZ"_NAME "RTN","XUP732",27,0) ...S XUARR(2)="200;41.99^NPI^@^@" "RTN","XUP732",28,0) ...S XUARR(3)="200;42^EFFECTIVE DATE/TIME^"_NPI "RTN","XUP732",29,0) ...D UPDATE^XUMVINPU(.XURET,.XUARR) "RTN","XUP732",30,0) ...I XURET(0)=1 S CNT3=CNT3+1 "RTN","XUP732",31,0) ...I XURET(0)'=1 S CNT4=CNT4+1 S ISSUE(NPI)=NPI_"^"_IEN_"^"_IEN2 "RTN","XUP732",32,0) S END=$$NOW^XLFDT "RTN","XUP732",33,0) D MAIL(CNT,CNT2,CNT3,CNT4,.ISSUE,STRT,END) ;SEND MAIL WITH STATS "RTN","XUP732",34,0) Q "RTN","XUP732",35,0) MAIL(CNT,CNT2,CNT3,CNT4,ISSUE,STRT,END) ; "RTN","XUP732",36,0) N XMDUZ,XMTEXT,XMSUB,XMY,XMZ,XUDUN,MSGXU "RTN","XUP732",37,0) S XUDUN(1)="Post-Init routine EN^XUP732 has completed NPI cleanup" "RTN","XUP732",38,0) S XUDUN(2)=" Processed Started at: "_$$FMTE^XLFDT(STRT)_" - Completed at: "_$$FMTE^XLFDT(END) "RTN","XUP732",39,0) S XUDUN(3)="",XUDUN(4)="Total Number of NPI values reviewed: "_CNT "RTN","XUP732",40,0) S XUDUN(5)="Total Number of NPI duplicates: "_CNT2 "RTN","XUP732",41,0) S XUDUN(6)="Total Number of NPI duplicates cleaned up: "_CNT3 "RTN","XUP732",42,0) S XUDUN(7)="Total Number of NPI duplicates that failed in cleanup: "_CNT4,XUDUN(8)="" "RTN","XUP732",43,0) I CNT4>0 D "RTN","XUP732",44,0) .S XUDUN(9)=" NPI ^ DUZ1 ^ DUZ2" "RTN","XUP732",45,0) .N IEN,JJ S JJ=10,IEN=0 F S IEN=$O(ISSUE(IEN)) Q:IEN="" S XUDUN(JJ)=ISSUE(IEN),JJ=JJ+1 "RTN","XUP732",46,0) S XMSUB="NPI Cleanup - XU*8*732 -SITE: "_$P($$SITE^VASITE,"^",3) "RTN","XUP732",47,0) S XMTEXT="XUDUN(",XMDUZ=.5,XMY(DUZ)="" "RTN","XUP732",48,0) S XMY("Christine.Chesney@domain.ext")="" "RTN","XUP732",49,0) S XMY("John.Williams30ec0c@domain.ext")="" "RTN","XUP732",50,0) D ^XMD "RTN","XUP732",51,0) Q "VER") 8.0^22.2 "BLD",3523,6) ^575 **END** **END**