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

VIAAEAD.m

Go to the documentation of this file.
  1. VIAAEAD ;ALB/CR - RTLS Multiple RPCs for Engineering ;5/4/16 10:08am
  1. ;;1.0;RTLS;**3**;April 22, 2013;Build 20
  1. ;
  1. Q
  1. ; Access to file #6914 covered by IA #5913
  1. ; Access to file #6911 covered by IA #5914
  1. ; Access to file #6928 covered by IA #5915
  1. ; Access to file #6917 covered by IA #5916
  1. ; Access to file #6914.1 covered by IA #5917
  1. ; Access to file #6912 covered by IA #5918
  1. ; Access to file #6910 covered by IA #5920
  1. ;
  1. EQMVUPD(RETSTA,AEMSID,ROOMNUM,TMSTMP) ; Equipment move into AEMS
  1. ; RPC [VIAA ENG ASSET MOVE]
  1. ;
  1. ; When equipment moves to a new location this function updates the
  1. ; following fields in file 6914:
  1. ; LOCATION (24)
  1. ; PHYSICAL INVENTORY DATE (23)
  1. ;
  1. ; Input:
  1. ; RETSTA is the name of the return array
  1. ; AEMSID is equipment ID (IEN in 6914)
  1. ; ROOMNUM is the room number for the location the equipment was
  1. ; moved to
  1. ; TMSTMP is timestamp in ISO format but time is optional
  1. ; Output:
  1. ; "1^update successful" if update succeeds, otherwise
  1. ; "-###^" concatenated with a failure message, where '###' is a 3-digit code
  1. ;
  1. I $G(AEMSID)="" S RETSTA(0)="-400^AEMS IEN not specified for look up in the EQUIPMENT INV. file, #6914" Q
  1. I '$D(^ENG(6914,"EE",AEMSID)) S RETSTA(0)="-404^AEMS IEN "_AEMSID_" was not found in the EQUIPMENT INV. file, #6914" Q
  1. I $G(ROOMNUM)="" S RETSTA(0)="-400^Room Number not specified for look up in the ENG SPACE file, #6928" Q
  1. I '$D(^ENG("SP","B",ROOMNUM)) S RETSTA(0)="-404^Room number "_ROOMNUM_" not found in the ENG SPACE file, #6928" Q
  1. I $G(TMSTMP)="" S RETSTA(0)="-400^Time Stamp of equipment move not specified" Q
  1. N FDA,ERR,RECCT,ROOMIEN
  1. K ^TMP("VIAADUP",$J)
  1. S RECCT=0
  1. ; if the room number is a duplicate in file #6928, reject the move and inform RTLS
  1. S ROOMIEN=0 F S ROOMIEN=$O(^ENG("SP","B",ROOMNUM,ROOMIEN)) Q:'ROOMIEN S ^TMP("VIAADUP",$J,ROOMIEN)="",RECCT=$G(RECCT)+1
  1. I $D(^TMP("VIAADUP",$J))&(RECCT>1) D Q
  1. . S RETSTA(0)="-409^Move Failed - Duplicate Room Number ("_ROOMNUM_") Detected."
  1. . K ^TMP("VIAADUP",$J)
  1. ;
  1. ; convert timestamp from ISO format to FileMan internal format
  1. S TMSTMP=$$ISO2FM(TMSTMP)
  1. I TMSTMP=-1 S RETSTA(0)="-400^Time Stamp not valid" Q
  1. S AEMSID=$O(^ENG(6914,"EE",AEMSID,""))
  1. S ROOMIEN=+$O(^ENG("SP","B",ROOMNUM,""))
  1. ;
  1. S FDA(6914,AEMSID_",",23)=TMSTMP
  1. S FDA(6914,AEMSID_",",24)=ROOMIEN
  1. D UPDATE^DIE(,"FDA",,"ERR")
  1. I $D(ERR) S RETSTA(0)="-500^Update of EQUIPMENT INV. file, #6914, failed" Q
  1. S RETSTA(0)="1^Update of EQUIPMENT INV. file, #6914, successful"
  1. Q
  1. ;
  1. RTLSDTEX(RETSTA,REQDATA,DATAID) ; Extract AEMS-RTLS DATA
  1. ; RPC [VIAA ENG GET DATA]
  1. ;
  1. ; This RPC allows retrieval of one or all entries from the following
  1. ; files:
  1. ; EQUIPMENT INV. (6914)
  1. ; EQUIPMENT CATEGORY (6911)
  1. ; ENG SPACE (6928)
  1. ;
  1. ; Input:
  1. ; RETSTA is the name of the return array
  1. ; REQDATA identifies the type of data that is required
  1. ; "EQUIPMENT" for equipment
  1. ; "CATEGORY" for categories
  1. ; "LOCATION" for locations
  1. ; DATAID identifies which data is to be returned for REQDATA
  1. ; "ALL" for all data for a given REQDATA
  1. ; AEMSID for individual equipment item
  1. ; CATID for an individual category
  1. ; LOCID (IEN) for an individual location
  1. ; Output:
  1. ; Global ^TMP("VIAA"_REQDATA,$J)
  1. ; Contains data for REQDATA and DATAID,
  1. ; (if REQDATA="EQUIPMENT" and DATAID="ALL"
  1. ; then just AEMSIDs are returned)
  1. ; otherwise
  1. ; "-###^" concatenated with reason for failure message, where
  1. ; '###' is a 3-digit code
  1. ;
  1. ;
  1. N RNS
  1. S RNS="VIAA"_REQDATA
  1. I $G(REQDATA)="" S RNS="VIAAEQUIPMENT",^TMP(RNS,$J,0)="-400^REQDATA parameter not specified" D EX1 Q
  1. I $G(DATAID)="" S ^TMP(RNS,$J,0)="-400^DATA ID parameter not specified" D EX1 Q
  1. ;
  1. I ("^EQUIPMENT^CATEGORY^LOCATION^"'[("^"_REQDATA_"^")) D Q
  1. . S ^TMP(RNS,$J,0)="-400^REQDATA parameter not recognized" D EX1
  1. ;
  1. ; scan appropriate file and save data in ^TMP
  1. K ^TMP(RNS,$J)
  1. I REQDATA="EQUIPMENT" D GETEQPD(REQDATA,DATAID)
  1. I REQDATA="CATEGORY" D GETCATD(REQDATA,DATAID)
  1. I REQDATA="LOCATION" D GETSPCD(REQDATA,DATAID)
  1. ;
  1. EX1 S RETSTA=$S($D(^TMP(RNS,$J)):$NA(^TMP(RNS,$J)),RETSTA'="":RETSTA,1:"-404^No data found")
  1. Q
  1. ;
  1. GETEQPD(REQDATA,DATAID) ; get equipment data
  1. ;
  1. ; check that asset is on file if info for single asset requested
  1. I DATAID'="ALL",'$D(^ENG(6914,"EE",DATAID)) D Q
  1. . S ^TMP(RNS,$J,0)="-404^AEMS IEN "_DATAID_" was not found in the EQUIPMENT INV. file, #6914"
  1. ;
  1. N RECCT
  1. S RECCT=0
  1. ; return info for a single asset
  1. I DATAID'="ALL" D Q
  1. . D GETEQPD1(DATAID)
  1. ;
  1. ; return info for all assets 'IN USE'
  1. N AEMSID
  1. S AEMSID=""
  1. F S AEMSID=$O(^ENG(6914,"EE",AEMSID)) Q:AEMSID="" D
  1. . S EIEN=$O(^ENG(6914,"EE",AEMSID,""))
  1. . I $$GET1^DIQ(6914,EIEN,20,"I")'=1 Q
  1. . S RECCT=RECCT+1
  1. . S ^TMP(RNS,$J,RECCT,0)=AEMSID
  1. I RECCT=0 S ^TMP(RNS,$J,0)="-404^No data found"
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETEQPD1(AEMSID) ; get data for one item
  1. ;
  1. N EIEN,LOCID,MODEL,MANUF,CATDET,CATDET2,CATEG,SERNO,USESTAT,VALUE
  1. N ENTDAT,MOVDAT,EQNAM,CMRDESC,CMRPTR,SERVICE,CSTKNO,CSTKDESC,CSTKIEN
  1. N ACQDATE,CMRNAM,PASYST,DATA,FSYNON,DISPDATE
  1. N PURCHORD,RESPSHOP,TYPENTRY,SITEID,DEFSITE
  1. ;
  1. S EIEN=$O(^ENG(6914,"EE",AEMSID,"")) ; equipment IEN
  1. S LOCID=$$GET1^DIQ(6914,EIEN,24) ; location
  1. S MANUF=$$GET1^DIQ(6914,EIEN,1) ; manufacturer
  1. S PASYST=$$GET1^DIQ(6914,EIEN,2) ; parent system
  1. S EQNAM=$$GET1^DIQ(6914,EIEN,3) ; mfgr. equipment name
  1. S MODEL=$$GET1^DIQ(6914,EIEN,4) ; model
  1. S SERNO=$$GET1^DIQ(6914,EIEN,5) ; serial number
  1. ;
  1. ; use category IEN to get cat desc and first record of the synonym
  1. S CATEG=$$GET1^DIQ(6914,EIEN,6,"I") ; equipment category ien
  1. I $G(CATEG)="" S CATDET="^" ; category does not exist in entry
  1. ; get category description and first synonym
  1. I CATEG]"" D
  1. . S CATDESC=$P($G(^ENG(6911,CATEG,0)),U)
  1. . S FSYNON=$P($G(^ENG(6911,CATEG,1,1,0)),U)
  1. . S CATDET=CATDESC_U_FSYNON
  1. . ; get the rest of synonyms (if any)
  1. . S CATDET2=$$SYN(CATEG)
  1. . S CATDET=CATDET_CATDET2 ; category description and all synonyms
  1. . I CATDET2="" S CATDET=CATDET_"" ; no synonym found
  1. ;
  1. S TYPENTRY=$$GET1^DIQ(6914,EIEN,7) ; type of entry
  1. S PURCHORD=$$GET1^DIQ(6914,EIEN,11) ; purchase order #
  1. S VALUE=$$GET1^DIQ(6914,EIEN,12) ; asset value
  1. S ACQDATE=$$GET1^DIQ(6914,EIEN,13,"I") ; acquisition date
  1. ;
  1. ; get category stock # and brief description
  1. S CSTKNO=$$GET1^DIQ(6914,EIEN,18)
  1. I $G(CSTKNO)="" S CSTKDESC=""
  1. I CSTKNO]"" D
  1. . S CSTKIEN=+$O(^ENCSN(6917,"B",CSTKNO,""))
  1. . S CSTKDESC=$$GET1^DIQ(6917,CSTKIEN,2,"E")
  1. ;
  1. S CMRPTR=$$GET1^DIQ(6914,EIEN,19,"I") ; cmr pointer
  1. S CMRNAM=$$GET1^DIQ(6914.1,CMRPTR,.01) ; cmr name
  1. I CMRPTR>0 S CMRDESC=$P($G(^ENG(6914.1,CMRPTR,0)),U,8) ; brief description
  1. I '$D(CMRDESC) S CMRDESC=""
  1. S USESTAT=$$GET1^DIQ(6914,EIEN,20) ; use status
  1. S SERVICE=$$GET1^DIQ(6914,EIEN,21) ; service pointer
  1. S ENTDAT=$$GET1^DIQ(6914,EIEN,.6,"I") ; date asset entered in AEMS
  1. S MOVDAT=$$GET1^DIQ(6914,EIEN,23,"I") ; physical inventory date
  1. S RESPSHOP=$$GET1^DIQ(6914.04,"1,"_EIEN_",",.01) ; responsible shop
  1. S SITEID=$$GET1^DIQ(6914,EIEN,60) ; station number for eqmt
  1. S DEFSITE=$$GET1^DIQ(6910,1,1,"I") ; default station number
  1. S DISPDATE=$$GET1^DIQ(6914,EIEN,22,"I") ; disposition date
  1. S DATA=AEMSID_U_LOCID_U_MODEL_U_MANUF_U_CATDET_U_USESTAT
  1. S DATA=DATA_U_SERNO_U_VALUE_U_ENTDAT_U_MOVDAT_U_EQNAM_U_CMRDESC_U_CMRNAM ; added CMRNAM per VA change 9/23/13
  1. S DATA=DATA_U_SERVICE_U_CSTKNO_U_CSTKDESC_U_PASYST_U_TYPENTRY
  1. S DATA=DATA_U_PURCHORD_U_ACQDATE_U_RESPSHOP_U_SITEID_U_DEFSITE_U_DISPDATE
  1. S RECCT=RECCT+1
  1. S ^TMP(RNS,$J,RECCT,0)=DATA
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETCATD(REQDATA,DATAID) ; retrieve AEMS category data from file 6911
  1. ;
  1. ; if name is longer than 30 characters, use special handling
  1. N RECCT
  1. S RECCT=0
  1. I $L(DATAID)>30 D Q
  1. . N DATAID1,EIEN
  1. . S DATAID1=$E(DATAID,1,30)
  1. . I '$D(^ENG(6911,"B",DATAID1)) S ^TMP(RNS,$J,0)="-404^"_DATAID_" was not found in the EQUIPMENT CATEGORY file, #6911" Q
  1. . F EIEN=0:0 S EIEN=$O(^ENG(6911,"B",DATAID1,EIEN)) Q:'EIEN I $P(^ENG(6911,EIEN,0),"^",1)=DATAID S ^TMP(RNS,$J,RECCT+1,0)=EIEN_"^"_$P(^ENG(6911,EIEN,0),"^",1)
  1. ;
  1. ; check that asset is on file if info for single asset requested
  1. I DATAID'="ALL",'$D(^ENG(6911,"B",DATAID)) D Q
  1. . S ^TMP(RNS,$J,0)="-404^"_DATAID_" is not a recognized category in the EQUIPMENT CATEGORY file, #6911"
  1. ;
  1. ; return info for a single category
  1. I DATAID'="ALL" D Q
  1. . D GETCATD1(DATAID)
  1. ;
  1. ; return info for all categories
  1. N CATID
  1. F CATID=0:0 S CATID=$O(^ENG(6911,CATID)) Q:'CATID D
  1. . S RECCT=RECCT+1
  1. . S CATDESC=$P($G(^ENG(6911,CATID,0)),U,1) ; category description
  1. . S DATA=CATID_U_CATDESC
  1. . S ^TMP(RNS,$J,RECCT,0)=CATID_U_CATDESC
  1. I RECCT=0 S ^TMP(RNS,$J,0)="-404^No data found"
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETCATD1(CATID) ; get data for one category
  1. N CIEN,DATA,CATDESC
  1. I '$D(^ENG(6911,"B",CATID)) S ^TMP(RNS,$J,0)="-404^"_CATID_" was not found in the EQUIPMENT CATEGORY file, #6911" Q
  1. S CIEN=$O(^ENG(6911,"B",CATID,""))
  1. S CATDESC=$P($G(^ENG(6911,CIEN,0)),U,1) ; category description
  1. S DATA=CIEN_U_CATDESC
  1. S RECCT=RECCT+1
  1. S ^TMP(RNS,$J,RECCT,0)=DATA
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETSPCD(REQDATA,DATAID) ; retrieve AEMS space/location data from file 6928
  1. ;
  1. ; check asset is on file if info for single space/location requested
  1. I DATAID'="ALL",'$D(^ENG("SP",DATAID)) D Q
  1. . S ^TMP(RNS,$J,0)="-404^"_DATAID_" is not a recognized location in the ENG SPACE file, #6928"
  1. ;
  1. N RECCT
  1. S RECCT=0
  1. ; return info for a single space/location
  1. I DATAID'="ALL" D Q
  1. . D GETSPCD1(DATAID)
  1. ;
  1. ; return info for all spaces/locations
  1. N LOCDESC ; location description
  1. S LOCDESC=""
  1. F S LOCDESC=$O(^ENG("SP","B",LOCDESC)) Q:LOCDESC="" D
  1. . D GETSPCD2(LOCDESC)
  1. I RECCT=0 S ^TMP(RNS,$J,0)="-404^No data found"
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETSPCD1(LOCID) ; get data for one location
  1. N DATA,LOCDESC
  1. I +LOCID=0 S ^TMP(RNS,$J,0)="-404^"_LOCID_" is not a valid Location ID in the ENG SPACE file, #6928" Q
  1. S LOCDESC=$P(^ENG("SP",LOCID,0),U,1)
  1. S DATA=LOCID_U_LOCDESC
  1. S RECCT=RECCT+1
  1. S ^TMP(RNS,$J,RECCT,0)=DATA
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETSPCD2(LOCDESC) ; get data for all locations
  1. N DATA,LOCIEN
  1. S LOCIEN=$O(^ENG("SP","B",LOCDESC,""))
  1. S DATA=LOCIEN_U_LOCDESC
  1. S RECCT=RECCT+1
  1. S ^TMP(RNS,$J,RECCT,0)=DATA
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. GETNEENS(RETSTA,AEMSID,NUMBER) ; Get a number of AEMSID's
  1. ;
  1. S AEMSID=$G(AEMSID)
  1. S NUMBER=$G(NUMBER,50)
  1. I NUMBER'=+NUMBER S RETSTA="Number must be numeric" Q
  1. S RNS="VIAAENR",REQDATA="EQUIPMENT"
  1. K ^TMP(RNS,$J)
  1. S RECCT=0
  1. F S AEMSID=$O(^ENG(6914,"EE",AEMSID)) Q:AEMSID="" Q:RECCT=NUMBER D
  1. . S RECCT=RECCT+1
  1. . S ^TMP(RNS,$J,RECCT,0)=AEMSID
  1. I RECCT=0 S ^TMP(RNS,$J,0)="-404^No data found"
  1. S RETSTA=$NA(^TMP(RNS,$J))
  1. Q
  1. ;
  1. EQSEED(RETSTA,AEMSID,LOCID,TMSTMP) ; RPC to save an equipment move into AEMS
  1. ; When equipment moves to a new location
  1. ; this function updates the following fields in file 6914:
  1. ; LOCATION
  1. ;
  1. ; RETSTA is the name of the return array
  1. ; AEMSID is equipment ID (IEN in 6914)
  1. ; LOCID is the identity of the location at which the equipment is arriving
  1. ; TMSTMP is timestamp in ISO format
  1. ;
  1. S RETSTA=1
  1. I $G(AEMSID)="" S RETSTA="-400^AEMS ID "_AEMSID_" not specified for EQUIPMENT INV. file, #6914" Q
  1. I $G(LOCID)="" S RETSTA="-400^Location ID not specified for ENG SPACE file, #6928" Q
  1. I $G(TMSTMP)="" S RETSTA="-400^timestamp not specified" Q
  1. I '$D(^ENG(6914,"EE",AEMSID)) S RETSTA="-404^"_AEMSID_" AEMS IEN was not found in the EQUIPMENT INV. file, #6914" Q
  1. N FDA,ERR
  1. ; convert timestamp from ISO format to FileMan internal format
  1. S TMSTMP=$$ISO2FM(TMSTMP)
  1. S AEMSID=$O(^ENG(6914,"EE",AEMSID,""))
  1. ; need to establish LOCID format
  1. S FDA(6914,AEMSID_",",23)=TMSTMP
  1. S FDA(6914,AEMSID_",",24)=LOCID
  1. D UPDATE^DIE(,"FDA",,"ERR")
  1. I $D(ERR) S RETSTA="-500^update failed" Q
  1. S RETSTA="1^update successful"
  1. Q
  1. ;
  1. ISO2FM(TMSTMP) ; External date to FM date
  1. ; incoming format yyyy-mm-dd<space>hh:MM:ss
  1. ; e.g. 2012-02-07 09:08:06
  1. N D,P,DTTM,DTTT
  1. S D="-",P="."
  1. ; first convert incoming date to an HL7 format
  1. S DTTT=$P(TMSTMP,D,4)
  1. S DTTM=$TR($P(TMSTMP,D,1,3),":- ")
  1. S $P(DTTM,D,2)=$E(10000+DTTT,2,5)
  1. ; then convert HL7 date to FM date
  1. S DTTM=$$HL7TFM^XLFDT(DTTM)
  1. Q DTTM
  1. ;
  1. FM2ISO(DATE) ; convert FM date to ISO date
  1. N DTTM,D,P,C
  1. S C=":",D="-",P="."
  1. S DATE=$$FMTHL7^XLFDT(DATE)
  1. S DTTM=$E(DATE,1,4)_D_$E(DATE,5,6)_D_$E(DATE,7,8)
  1. S DTTM=DTTM_"T"
  1. S DTTM=DTTM_$E(DATE,9,10)_C_$E(DATE,11,12)_C_$E(DATE,13,14)_P_"000"
  1. S DTTM=DTTM_D_$E(DATE,16,17)_C_$E(DATE,18,19)
  1. Q DTTM
  1. ;
  1. SYN(CATEG) ; get all synonyms for a given category in a piece of equipment
  1. N I,COUNT,RECDEL,SYNON
  1. S RECDEL="|" ; record delimiter
  1. ;
  1. S COUNT=+$P($G(^ENG(6911,CATEG,1,0)),U,4)
  1. I $G(COUNT)=0!($G(COUNT)=1) S CATDET2="" Q CATDET2 ; no synonyms found
  1. F I=2:1:COUNT D
  1. . S SYNON=$G(SYNON)_RECDEL_$P($G(^ENG(6911,CATEG,1,I,0)),U)
  1. S CATDET2=SYNON ; remaining category synonyms
  1. Q CATDET2