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

ENIMPORT.m

Go to the documentation of this file.
  1. ENIMPORT ;BAH/MKN -Import Equipment Records from a tab-delimited file ; 12/19/2023@15:46:29
  1. ;;7.0;ENGINEERING;**105**;Aug 17, 1993;Build 20
  1. ;
  1. ; Reference to DD^%DT supported by #10003
  1. ; Reference to FIND^DIC supported by IA #2051
  1. ; Reference to ^DID supported by #2052
  1. ; Reference to FILE^DIE supported by #2053
  1. ; Reference to WP^DIE supported by #2053
  1. ; Reference to ^DIK supported by #10013
  1. ; Reference to ^DIR supported by #10026
  1. ; Reference to ^VA(200 supported by #10060
  1. ; Reference to $$FMTE^XLFDT,$$FMADD^XLFDT,$$NOW^XLFDT supported by #10103
  1. ; Reference to OWNSKEY^XUSRB() supported by #3277
  1. ;
  1. EN ;
  1. N %DT,DIE,DR,DTOUT,ENABORT,ENBAD,ENBADIND,ENCHKFI,ENCOL,ENDASH,ENDATA,ENDATI,ENDID,ENERR
  1. N ENERRCT,ENERRL,ENERRPRE,ENFDA,ENFILE,ENFLD,ENFLDLTH,ENFLDNA,ENFLDS,ENFNAMES,ENGOOD
  1. N ENHARD,ENHD,ENIENS,ENLI,ENMAXROW,ENNA,ENNXL,ENOUT,ENPARM,ENPATH,ENQUOT,ENRBNA,ENRECSET
  1. N ENRES,ENROWS,ENRUNTYPE,ENSERIAL,ENSET,ENT,ENXTMPNA,ENUSER,ENVAL,ENVFILE,ENVFLD,ENVNAME
  1. N ENVPTR,ENVREQ,ENVSPEC,ENVTYPE,ENWP,ENWP1,ENX,ENXTMP,ENY,X,Y,ZTQUEUED
  1. ;
  1. S (ENABORT,ENCHKFI)=0,ENQUOT=$C(34)
  1. ;
  1. ;Check if user has security key authorizing use of this utility
  1. D OWNSKEY^XUSRB(.ENX,"ENIMPORT",DUZ)
  1. I ENX(0)=0 W !!,"*** You do not own the Security Key to access this utility ***",!! Q
  1. S ENX=$$FMTE^XLFDT(DT,7)
  1. S $P(ENX,"/",2)=$E("00",1,2-$L($P(ENX,"/",2)))_$P(ENX,"/",2)
  1. S $P(ENX,"/",3)=$E("00",1,2-$L($P(ENX,"/",3)))_$P(ENX,"/",3)
  1. S ENDATI=$TR(ENX,"/")_"@"_$P($$NOW^XLFDT,".",2)
  1. ;
  1. S ENRUNTYPE=$$ASKUSER() Q:ENRUNTYPE="^"
  1. ;
  1. I $P(ENRUNTYPE,U)="ROLLBACK" D ROLLBACK Q
  1. S ENPATH=$P(ENRUNTYPE,U,2),ENFILE=$P(ENRUNTYPE,U,3),ENMAXROW=$P(ENRUNTYPE,U,4),ENRUNTYPE=$P(ENRUNTYPE,U)
  1. S:ENMAXROW="" ENMAXROW=9999999
  1. ;
  1. S ENNA=$NA(^XTMP("EN-IMPORT-"_ENDATI)),ENXTMP=$NA(^XTMP("EN-IMPORT-"_ENDATI,1)) K @ENNA
  1. S ENRBNA=$NA(^XTMP("EN-IMPORT-"_ENDATI_"-RB")) K @ENRBNA
  1. S ENUSER=$P(^VA(200,DUZ,0),U)
  1. S %DT="T",Y=$$NOW^XLFDT() D DD^%DT
  1. S ENXTMPNA=ENUSER_": "_Y_" -- EN Equipment file # 6914 - imported data"
  1. S @ENNA@(0)=$$FMADD^XLFDT(DT,90)_U_DT_U_ENXTMPNA
  1. I ENRUNTYPE="IMPORT" D
  1. . S ENCHKFI=1,ENRUNTYPE="CHECKFILE" ;If IMPORT - make sure all error free first
  1. . ;Display current LAST record in file #6914
  1. I ENRUNTYPE="CHECKFILE"!(ENRUNTYPE="IMPORT") D G:ENRUNTYPE="^" EN
  1. . S ENX=0,Y=1
  1. . I ENRUNTYPE="IMPORT" D Q:ENRUNTYPE="^"
  1. .. W !!,"The log file for this run will be: ",!,ENXTMPNA,!,"Please make a note of this, you may need it for a rollback."
  1. .. S DIR(0)="Y",DIR("B")="YES",DIR("A")="Continue?" D ^DIR I 'Y S ENRUNTYPE="^" Q
  1. .. W !,"Last record in the EQUIPMENT INV. file is: ",$O(^ENG(6914,"@"),-1)
  1. . ;The following file load will be executed for both CHECKING and IMPORT
  1. . W !!,"Loading tab-delimited file into VistA log file from ",ENPATH,ENFILE,"..."
  1. . S ENX=$$FTG^%ZISH(ENPATH,ENFILE,ENXTMP,2) ;Create XTMP file from input file
  1. . I 'ENX W !!!,"********* Unable to read file - please check file path and name **********",!! S ENRUNTYPE="^",Y=0 Q
  1. ;
  1. W ! S DIR(0)="Y",DIR("A")="Start LOGGING your screen now, and accept if you are ready to continue",DIR("B")="YES"
  1. D ^DIR G:Y=0!($D(DUOUT))!($D(DTOUT)) EN W !
  1. W !,"Log file for this run is: "_ENXTMP," ",$P(@ENNA@(0),U,3),!
  1. S ENFLDS=$$GETOVF(ENNA,3),ENERRCT=0
  1. K ENERRL,ENFNAMES
  1. ;
  1. ;Load fields from FLDS list at bottom
  1. F ENLI=1:1 S ENX=$T(FLDS+ENLI) Q:ENX=" ;//" D
  1. . S ENCOL=$P(ENX," "),ENY=$$UP($P(ENX,";",2))
  1. . S:ENY'="IGNORE" ENFNAMES(ENY)=$P(ENX,";",3,99),$P(ENFNAMES(ENY),";",10)=ENCOL
  1. ;
  1. S ENHD=$$UP($$GETOVF(ENNA,1))
  1. REENTER ;this entry point is for IMPORT after CHECKING for error free file
  1. S ENLI=3,(ENABORT,ENBAD,ENGOOD,ENRECSET,ENROWS)=0 ;Data starts at line 3
  1. F S ENLI=$O(@ENNA@(ENLI)) Q:(ENLI="")!(ENABORT) Q:$P(ENRUNTYPE,U)="CHECKING"&(ENROWS'<ENMAXROW) D
  1. . S ENX=$$GETOVF(ENNA,ENLI) I $P(ENX,$C(9))="END" S ENABORT=1 Q
  1. . S ENROWS=ENROWS+1
  1. . W:'(ENROWS#10) !,ENRUNTYPE," - Now on row #",ENLI
  1. . K ENERR,ENFDA,ENWP S ENBADIND=0
  1. . I ENX]"" F ENFLD=1:1:$L(ENX,$C(9)) D
  1. .. S ENDATA=$P(ENX,$C(9),ENFLD)
  1. .. Q:ENDATA=""
  1. .. S ENDATA=$TR(ENDATA,ENQUOT),ENDATA=$$TRIM^XLFSTR(ENDATA),ENDATA=$$UP(ENDATA)
  1. .. S ENFLDNA=$P(ENHD,$C(9),ENFLD),ENPARM=$G(ENFNAMES(ENFLDNA))
  1. .. S ENVNAME=$P(ENPARM,";",1),ENVFILE=$P(ENPARM,";",2),ENVFLD=$P(ENPARM,";",3) Q:ENVFILE'?1.N.".".N
  1. .. S ENVPTR=$P(ENPARM,";",4),ENVTYPE=$P(ENPARM,";",5),ENHARD=$P(ENPARM,";",6),ENVAL=$P(ENPARM,";",7)
  1. .. S ENCOL=$$GETCOL(ENFLD)
  1. .. K ENDID D FIELD^DID(ENVFILE,ENVFLD,"","*","ENDID")
  1. .. S ENFLDLTH=$G(ENDID("FIELD LENGTH")) S:ENFLDLTH="" ENFLDLTH=999
  1. .. S ENVSPEC=$G(ENDID("SPECIFIER"))
  1. .. I ENVTYPE="AUTO" Q
  1. .. I ENDATA["^" D Q
  1. ... S ENBADIND=1
  1. ... S ENERR=" - data contains a ""^"" character"
  1. ... S ENERRTYP="Validation Failed"
  1. ... S ENERRCT=ENERRCT+1 D ERRMSG("VALIDATION FAILURE",ENVNAME,ENERRTYP,ENERR)
  1. .. I ENVAL]"" S ENRES="" D @ENVAL I ENRES]"" D S ENBADIND=1 Q
  1. ... S ENERR=" - "_ENRES,ENERRTYP="Validation Failed",ENERRCT=ENERRCT+1
  1. ... D ERRMSG("VALIDATION FAILURE",ENVNAME,ENERRTYP,ENERR)
  1. .. I ENVSPEC?1"R".E,ENDATA="" D Q
  1. ... S ENBADIND=1
  1. ... S ENERR=" - missing required field in file #"_ENVFILE_" ("_ENVFILNA_" ) field #"_ENVFLD
  1. ... S ENERR=ENERR_" ("_ENVFLDNA_")"
  1. ... S ENERRTYP="Missing required field in file"
  1. ... S ENERRCT=ENERRCT+1 D ERRMSG("MISSING DATA",ENVNAME,ENERRTYP,ENERR)
  1. .. I ENVPTR?1"P"1N.N.".".N.E!(ENVPTR?1"RP"1N.N.".".N.E) D Q:ENBADIND
  1. ... S ENRES=$$CHKPTR() S:'ENRES ENBADIND=1
  1. .. I ENVTYPE="SET" S ENRES=$$CHKSET() I ENRES S ENBADIND=1 Q
  1. .. ;If field is regular data field, not pointer or SET, check length of data
  1. .. I ENVTYPE'="SET",ENVPTR="",$L(ENDATA)>ENFLDLTH D Q
  1. ... S ENERRTYP="Data exceeds maximum length for field"
  1. ... S ENERR=" - ["_ENDATA_"] is "_$L(ENDATA)_" chs long and exceeds the maximum length"
  1. ... S ENERR=ENERR_" for INVENTORY INV. file (#6914) field "_ENVNAME_" (#"_ENVFLD_") which is "_ENFLDLTH_" chs"
  1. ... S ENERRCT=ENERRCT+1 D ERRMSG("DATA TOO LONG",ENVNAME,ENERRTYP,ENERR)
  1. ... S ENBADIND=1
  1. .. I ENVPTR="" D ENVFDA
  1. .. I ENVSPEC?."*"1"P"1.N.N.".".N.E!(ENVSPEC?1"RP"1.N.N.".".N.E) D ENVPTR Q
  1. .. I ENVTYPE="WP" S ENWP(6914,ENVFLD,1,0)=ENDATA
  1. .. Q:ENRUNTYPE="CHECKFILE"
  1. . ;End Of row
  1. . I 'ENBADIND D SETGOOD
  1. . I ENBADIND S ENBAD=ENBAD+1
  1. . Q:ENRUNTYPE="CHECKFILE"
  1. . ;Now file if entries in ENFDA
  1. . Q:'$D(ENFDA)
  1. . S ZTQUEUED=1 ;This supresses the "Setting up new record" mesasge in ENR^ENEQ1
  1. . D ENR^ENEQ1 ;File stub for next recrd in 6914 (with lock)
  1. . I 'ENNXL W !,"Row # ",ENLI," Error while filing new Equipment Inventory record "_$G(ENERR) S DIR(0)="E" D ^DIR K DIR,ENERR Q
  1. . ; lock new record
  1. . L +^ENG(6914,ENNXL):1 I '$T D Q
  1. .. W !!,"Row # ",ENLI," Error - another user is editing Entry # ",ENNXL Q
  1. . ; populate serial #
  1. . I $G(ENSERIAL)]"" S DIE="^ENG(6914,",DR="5////"_ENSERIAL,DA=ENNXL D ^DIE
  1. . ;ENNXL is the new IEN in file #6914. Now change the FDA
  1. . M ENFDA(6914,ENNXL_",")=ENFDA(6914,"+1,") K ENFDA(6914,"+1,")
  1. . K ENERR D FILE^DIE("","ENFDA","ENERR")
  1. . I $D(ENERR) W !,"Row # ",ENLI," - error on filing - aborting run.",! S ENABORT=1 Q
  1. . S ENRECSET=ENRECSET+1,@ENRBNA@(ENRECSET)=ENNXL
  1. . I $D(ENWP(6914)) D
  1. .. S ENWP1="" F S ENWP1=$O(ENWP(6914,ENWP1)) Q:ENWP1="" D
  1. ... K ENERR D WP^DIE(6914,ENNXL_",",ENWP1,"K","ENWP(6914,"_ENWP1_")","ENERR")
  1. ... I $D(ENERR) W !,"Row # ",ENLI," - error on filing - aborting run.",! S ENABORT=1 Q
  1. . ; unlock entry
  1. . L -^ENG(6914,ENNXL)
  1. S ENDASH="",$P(ENDASH,"-",61)=""
  1. I ENCHKFI,'ENBAD S $P(ENRUNTYPE,U)="IMPORT",ENCHKFI=0 G REENTER
  1. ;
  1. I $D(ENERRL) W !!,ENDASH,!,"Summary of error types:",! S ENT=0 D W !,ENDASH,!
  1. . S ENI="" F S ENI=$O(ENERRL(ENI)) Q:ENI="" S ENT=ENT+1 W !?5,ENT,". ",ENI,": ",ENERRL(ENI)
  1. W !,"#ERROR RECORDS: ",ENBAD,!,"#GOOD RECORDS : ",ENGOOD," ",!,"Last record in the EQUIPMENT INV. file is: ",$O(^ENG(6914,"@"),-1)
  1. I $P(ENRUNTYPE,U)="CHECKFILE",'$D(ENERRL) D ENDLOG Q
  1. I $P(ENRUNTYPE,U)="CHECKFILE",$D(ENERRL),ENCHKFI W !!,"**** ERRORS FOUND **** - no updates made",! D:ENGOOD>0 GOODRECS("B") D ENDLOG Q
  1. I $P(ENRUNTYPE,U)="IMPORT" D
  1. . I ENRECSET>0 W !!,ENRECSET," record",$S(ENRECSET>1:"s were",1:" was")," added to the EQUIPMENT INV file (#6914)"
  1. . I ENRECSET=0 W !!,"No records were added to the EQUIPMENT INV file (#6914)"
  1. D ENDLOG
  1. Q
  1. ;
  1. ENDLOG ;
  1. W !!,"End the LOGGING to your screen now then press Enter" R " ",ENX:20
  1. Q
  1. ;
  1. SETGOOD ;
  1. ;Update count for good records found, even though there may be errors
  1. ;On the Import run, it first checks for any bad records anywhere in the file. If any at all
  1. ;are found, it will not update ANY records. It does this by setting the run type to CHECKFILE
  1. ;first. If there are no errors, it will then change the run type to IMPORT, and drop through
  1. ;the "Q:ENRUNTYPE="CHECKFILE"" command at appx. line 82
  1. S ENGOOD=ENGOOD+1
  1. Q
  1. ;
  1. GOODRECS(ENWH) ;
  1. I $G(ENWH)="A" W !,ENGOOD_" good record",$S(ENGOOD>1:"s",1:"")," found.",! Q
  1. I $G(ENWH)="B" W "but ",ENGOOD_" good record",$S(ENGOOD>1:"s",1:"")," found.",!
  1. Q
  1. ;
  1. ENVFDA ;Set entry into ENFDA array for this file and field
  1. N ENDA,ENI,ENX,X
  1. I ENVTYPE="" S ENFDA(ENVFILE,"+1,",ENVFLD)=ENDATA Q
  1. I ENVTYPE="DA" D Q
  1. . S X="" D DT^DILF("",ENDATA,.X)
  1. . S ENFDA(ENVFILE,"+1,",ENVFLD)=X
  1. I ENVTYPE="SET" D Q
  1. . S ENDATA=$$UP(ENDATA)
  1. . I ENHARD'="" S ENDATA=ENHARD ;Hardcoded value
  1. . D FIELD^DID(ENVFILE,ENVFLD,"","POINTER","ENOUT")
  1. . S ENSET=$G(ENOUT("POINTER"))
  1. . F ENI=1:1:$L(ENSET,";") S ENX=$P(ENSET,";",ENI) D
  1. .. I $P(ENX,":",2)=ENDATA S ENFDA(ENVFILE,"+1,",ENVFLD)=$P(ENX,":")
  1. Q
  1. ;
  1. CHKPTR() ;Check if the field is a good pointer to the file
  1. N ENERR,ENFLDLTH,ENIEN,ENOUT,ERR,ENVFILNA,ENVFLDNA,ENVPFILE
  1. S ENIEN=0
  1. S ENDATA=$$UP(ENDATA),ENVPFILE=$P(ENVPTR,"P",2)
  1. S ENFLDLTH=$$GET1^DID(ENVPFILE,.01,"","FIELD LENGTH")
  1. K ENOUT D FILE^DID(ENVPFILE,"","NAME","ENOUT")
  1. S ENVFILNA=$G(ENOUT("NAME")) S:ENVFILNA="" ENVFILNA="File Name not found in DD"
  1. I $L(ENDATA)>ENFLDLTH D Q 0
  1. . S ENERRTYP="Data exceeds maximum length for field"
  1. . S ENERR=" - ["_ENDATA_"] is "_$L(ENDATA)_" chs long and exceeds the maximum length for POINTER to "_ENVFILNA_" file (#"_ENVPFILE_")"
  1. . S ENERRCT=ENERRCT+1 D ERRMSG("DATA TOO LONG",ENVNAME,ENERRTYP,ENERR)
  1. K ENOUT,ENERR D FIND^DIC(ENVPFILE,"","","",ENDATA,"","B","","","ENOUT","ENERR")
  1. S ENIEN=+$G(ENOUT("DILIST",2,1))
  1. I 'ENIEN!($D(ERR("DIERR"))) D Q 0
  1. . S ENVFLDNA=$$GET1^DID(ENVPFILE,ENVFLD,"","LABEL")
  1. . S ENERR=" - "_ENQUOT_ENDATA_ENQUOT_" not found in "_ENVFILNA_" file (#"_ENVPFILE_")"
  1. . S ENERRTYP="Missing entries in POINTED-TO file"
  1. . S ENERRCT=ENERRCT+1,ENRES=1 D ERRMSG("MISSING DATA",ENVNAME,ENERRTYP,ENERR)
  1. Q ENIEN
  1. ;
  1. ENVPTR ;Data is a pointer to another file
  1. N ENTFILE,ENERR,ENOUT,ENX
  1. S ENTFILE=$P(ENVPTR,"P",2),ENDATA=$$UP(ENDATA)
  1. ;Check if entry exists in pointed-to file
  1. K ENOUT,ENERR D FIND^DIC(ENTFILE,"","","",ENDATA,"","B","","","ENOUT","ENERR")
  1. S ENX=+$G(ENOUT("DILIST",2,1))
  1. I ENX S ENFDA(ENVFILE,"+1,",ENVFLD)=ENX Q
  1. Q
  1. ;
  1. GETCOL(ENI) ;
  1. N EN1,EN2
  1. I ENI<27 Q $C(ENI+64)
  1. S EN1=ENI-1\26,EN2=ENI-1#26+1
  1. Q $C(EN1+64)_$C(EN2+64)
  1. ;
  1. ROLLBACK ;
  1. ;How many days to go back?
  1. N DA,DIK,ENDA,ENFN,ENI,ENL,ENN,ENX
  1. K DIR S DIR(0)="N^0:90:3",DIR("A")="How many days back (0=Today only)",DIR("B")=0 D ^DIR Q:$D(DUOUT)!($D(DTOUT))
  1. I Y=0 S ENDA=DT
  1. E S ENDA=$$FMADD^XLFDT(DT,"-"_Y)
  1. S ENX=$$FMTE^XLFDT(ENDA,7) F ENI=2,3 S $P(ENX,"/",ENI)=$E("00",1,2-$L($P(ENX,"/",ENI)))_$P(ENX,"/",ENI)
  1. S ENFN="EN-IMPORT-"_$TR(ENX,"/"),ENN=0
  1. F S ENFN=$O(^XTMP(ENFN)) Q:ENFN=""!(ENFN'?1"EN-IMPORT-".E) D
  1. . S ENX=$G(^XTMP(ENFN,0)) Q:ENX=""
  1. . S ENN=ENN+1,ENL(ENN)=ENFN
  1. . W !,ENN,". ",$P(ENX,U,3)
  1. I ENN=1 D Q:$D(DUOUT)!($D(DTOUT))
  1. . W !! K DIR S DIR(0)="Y",DIR("A")="Is this the file you need",DIR("B")="YES" D ^DIR Q:$D(DUOUT)!($D(DTOUT))
  1. . I Y=1 S ENFN=ENL(1)
  1. I ENN>1 D Q:$D(DUOUT)!($D(DTOUT))
  1. . W ! K DIR S DIR(0)="N^1:"_ENN D ^DIR Q:$D(DUOUT)!($D(DTOUT))
  1. . S ENFN=ENL(ENN)
  1. . S ENX=$G(^XTMP(ENFN,0)) W !!,$P(ENX,U,3) S DIR(0)="Y",DIR("B")="YES",DIR("A")="Please confirm" D ^DIR Q:$D(DUOUT)!($D(DTOUT))
  1. . Q:'Y
  1. W ! S DIR(0)="Y",DIR("A")="Start LOGGING your screen now, and accept if you are ready to continue",DIR("B")="YES"
  1. D ^DIR G:Y=0!($D(DUOUT))!($D(DTOUT)) ROLLBACK W !
  1. S ENFN=ENFN_"-RB",ENN="",DIK="^ENG(6914,"
  1. F S ENN=$O(^XTMP(ENFN,ENN)) Q:ENN="" S DA=^XTMP(ENFN,ENN),ENX=$P($G(^ENG(6914,DA,0)),U,2) I ENX]"" D ^DIK W !,"IEN ",DA," ",ENX," removed"
  1. D ENDLOG
  1. Q
  1. ;
  1. ASKUSER() ;
  1. N ANS,DIR
  1. ASKTYPE ;
  1. S DIR(0)="S^C:Check the input file for errors;I:Import the input file;R:Roll back an import"
  1. S DIR("B")="C" D ^DIR
  1. I $D(DUOUT)!($D(DTOUT)) S ENRUNTYPE="^" Q "^"
  1. S ANS=Y
  1. S ENRUNTYPE=$S(Y="C":"CHECKFILE",Y="I":"IMPORT",1:"ROLLBACK")
  1. ASKFPATH ;
  1. I ANS="R" Q "ROLLBACK"
  1. K DIR S DIR(0)="FU^3:60",DIR("A")="Enter PATH to file ex: /home/myfolder/"
  1. D ^DIR G:$D(DUOUT)!($D(DTOUT)) ASKTYPE
  1. S ENPATH=Y S:$E(ENPATH,$L(ENPATH))'="/" ENPATH=ENPATH_"/"
  1. S $P(ENRUNTYPE,U,2)=ENPATH
  1. ASKFNAME ;
  1. K DIR S DIR(0)="FU^3:60",DIR("A")="Enter FILE NAME ex: New_Equip.txt "
  1. D ^DIR G:$D(DUOUT)!($D(DTOUT)) ASKFPATH
  1. S $P(ENRUNTYPE,U,3)=Y
  1. ASKNUMREC ;
  1. K DUOUT,DROUT
  1. S Y=""
  1. I $P(ENRUNTYPE,U)="CHECKFILE" K DIR S DIR(0)="NO^1:999999",DIR("A")="Number of rows/records to process (Skip for complete file)" D ^DIR
  1. G:$D(DUOUT)!($D(DTOUT)) ASKFNAME
  1. S ENMAXROW=$S(Y="":"999999",1:Y)
  1. S $P(ENRUNTYPE,U,4)=ENMAXROW
  1. Q ENRUNTYPE
  1. ;
  1. CHKSET() ;Check if entry is valid for the set
  1. N ENERR,ENFLDNAM,ENI,ENRES,ENSET,ENX
  1. S ENRES=0,ENDATA=$$UP(ENDATA)
  1. S ENSET=$$GET1^DID(ENVFILE,ENVFLD,"","POINTER")
  1. S ENFLDNAM=$$GET1^DID(ENVFILE,ENVFLD,"","LABEL")
  1. S ENERR=" SET field ["_ENFLDNAM_"] does not contain "_ENQUOT_ENDATA_ENQUOT_". File #6914, "_ENFLDNAM_" (#"_ENVFLD_")"
  1. F ENI=1:1:$L(ENSET,";") Q:ENERR="" S ENX=$P(ENSET,";",ENI) Q:ENX="" D
  1. . I $P(ENX,":",2)=ENDATA S ENERR=""
  1. I ENERR]"" D
  1. . S ENERRTYP="SET field does not contain field value"
  1. . S ENERRCT=ENERRCT+1,ENRES=1 D ERRMSG("MISSING SET",ENVNAME,ENERRTYP," - "_ENERR)
  1. Q ENRES
  1. ;
  1. ERRMSG(ENERRPRE,ENVNAME,ENERRTYP,ENERR) ;Output error message
  1. W !,"Err# "_ENERRCT_" Row: ",ENLI," Col: ",ENQUOT,ENCOL,ENQUOT," (",ENVNAME,") ",ENERRPRE," ",ENERR
  1. S ENERRL(ENERRTYP)=$G(ENERRL(ENERRTYP))+1
  1. Q
  1. ;
  1. GETOVF(ENNA,ENN) ;Consolidate line to include "OVF" (Overflows)
  1. N ENI,ENOUT,ENX
  1. S ENOUT=$G(@ENNA@(ENN)) Q:ENOUT="" ""
  1. F ENI=1:1 S ENX=$G(@ENNA@(ENN,"OVF",ENI)) Q:ENX="" S ENOUT=ENOUT_ENX
  1. Q ENOUT
  1. ;
  1. VALDA ;
  1. N ENR
  1. S ENRES="" Q:$G(ENDATA)=""
  1. D DT^DILF("",ENDATA,.ENR)
  1. I ENR=-1 S ENRES=ENDATA_" is an invalid date"
  1. Q
  1. ;
  1. VALLCLID ;
  1. S ENRES=""
  1. Q ;Disabled 1/20/24 per user. DO not check for duplicate.
  1. I $G(ENDATA)]"",$D(^ENG(6914,"L",ENDATA)) S ENRES="LOCAL ID "_ENDATA_" is already in use"
  1. Q
  1. ;
  1. VALSN ;
  1. S ENRES=""
  1. Q ;Disabled 1/20/24 per user. Do not check for duplicates.
  1. I $G(ENDATA)]"",$D(^ENG(6914,"F",ENDATA)) S ENRES="Serial number "_ENDATA_" already in use"
  1. Q
  1. ;
  1. VALMAX ;maximum value 9999999 cols L and M
  1. S ENRES="" Q:ENDATA'?1.N.".".N
  1. I ENDATA>9999999 S ENRES=ENDATA_" maximum value of 9,999,999 exceeded"
  1. Q
  1. ;
  1. VALPARNT ;
  1. S ENRES="" Q:ENDATA'?1.N
  1. I '$D(^ENG(6914,ENDATA)) S ENRES=ENDATA_" Parent record does not exist in file #6914"
  1. Q
  1. ;
  1. UP(X) Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. ;
  1. FLDEXP ;The following lines are the ";" pieces in the list at label FLDS
  1. ;1=Fld name in XL
  1. ;2=VistA Fld Name
  1. ;3=VistA file #
  1. ;4=VistA field #
  1. ;5=P-VistA file pointed to
  1. ;6="AUTO" if automatically created on filing, OR "SET", OR "DA"
  1. ;7=Hardcoded value if any
  1. ;8=Validation Code
  1. ;9=Comments
  1. ;
  1. FLDS ;There are 37 columns in the input spreadsheet as follows:
  1. A ;MANUFACTURER;MANUFACTURER;6914;1;RP6912
  1. B ;SERIAL #;SERIAL #;6914;5;;;;VALSN
  1. C ;MODEL;MODEL;6914;4
  1. D ;CATEGORY STOCK NUMBER;CATEGORY STOCK NUMBER;6914;18;P6917
  1. E ;IGNORE;LIFE EXPECTANCY;6914;15;;AUTO;;;Triggered by CSN field COl D
  1. F ;MFGR. EQUIPMENT NAME;MFGR. EQUIPMENT NAME;6914;3
  1. G ;CMR;CMR;6914;19;P6914.1
  1. H ;EQUIPMENT CATEGORY;EQUIPMENT CATEGORY;6914;6;P6911
  1. I ;IGNORE;ADDITIONAL INFORMATION
  1. J ;PURCHASE ORDER #;PURCHASE ORDER #;6914;11
  1. K ;ACQUISITION METHOD;ACQUISITION METHOD;6914;20.1;;SET
  1. L ;IGNORE;VENDOR POINTER;6914;10;P440;AUTO;;;Triggered by Purchase Order # field Col J
  1. M ;LEASE COST;LEASE COST;6914;12.5;;;;VALMAX
  1. N ;TOTAL ASSET VALUE;TOTAL ASSET VALUE;6914;12;;;;VALMAX
  1. O ;ACQUISITION DATE;ACQUISITION DATE;6914;13;;DA;;VALDA
  1. P ;WARRANTY EXP. DATE;WARRANTY EXP. DATE;6914;14;;DA;;VALDA
  1. Q ;IGNORE;REPLACEMENT DATE;6914;16;;AUTO;;;Triggered by CSN field Col D
  1. R ;ACQUISITION SOURCE;ACQUISITION SOURCE;6914;13.5;P420.8
  1. S ;TYPE OF ENTRY;TYPE OF ENTRY;6914;7;;SET
  1. T ;USE STATUS;USE STATUS;6914;20;;SET
  1. U ;PARENT SYSTEM;PARENT SYSTEM;6914;2;P6914;;;VALPARNT
  1. V ;IGNORE;SERVICE POINTER;6914;21;P49;AUTO;;;;Triggered by CMR field Col G
  1. W ;IGNORE;Location of item;Col X on spreadsheet is used
  1. X ;LOCATION;LOCATION;6914;24;P6928;;;;
  1. Y ;LOCAL IDENTIFIER;LOCAL IDENTIFIER;6914;26;;;;VALLCLID
  1. Z ;STATION NUMBER;STATION NUMBER;6914;60;;;;;See OWNING STATION NUMBER on screen 1
  1. AA ;CONTROLLED ITEM?;CONTROLLED ITEM?;6914;33;;SET
  1. AB ;INVESTMENT CATEGORY;INVESTMENT CATEGORY;6914;34;;SET
  1. AC ;FUND;FUND;6914;62;P6914.6P
  1. AE ;BUDGET OBJECT CODE;BUDGET OBJECT CODE;6914;61;P6914.4
  1. AF ;IGNORE;STANDARD GENERAL LEDGER;6914;38;P6914.3;AUTO;;;Triggered by BOC field
  1. AG ;ADMINSTRATIVE OFFICE;ADMINSTRATIVE OFFICE;6914;63;P6914.7;;10
  1. AH ;EQUITY ACCOUNT;EQUITY ACCOUNT;6914;64;;SET
  1. AI ;IGNORE;ASSET TAG #
  1. AJ ;IGNORE;MACHINE TYPE
  1. AK ;COMMENTS;COMMENTS;6914;40;;WP
  1. ;//
  1. ;