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

ORQQVI2.m

Go to the documentation of this file.
ORQQVI2 ;SLC/dee- RPC calls to GMRVPCE0, Vitals data event drivers ;2/2/98
 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10**;Dec 17, 1997
 ;
 Q
 ;
 ; ORQDATA is in the format
 ;   ORQDATA(i)="VST^DT^encounter date"                       required
 ;   ORQDATA(i)="VST^PT^pointer to patient"                   required
 ;   ORQDATA(i)="VST^HL^pointer to Hospital Location"         required
 ;   ORQDATA(i)="VIT^vital type^^^value^provider^units^date/time"
 ; ORVITALS is the array passed to GMRV in the PCE Device Interface
 ;   format.
 ; ORQVIT is an array subscipted by the index in ORVITALS that contains
 ;   the subscript of the data gotten from ORQDATA.  This is used to tell
 ;   the caller which item had an ERROR or WARNING.
 ; ORRETURN(0) is 1 if no ERRORs or WARNINGs
 ;              0 if there are WARNING(s) but no ERRORs
 ;             -1 if there are ERROR(s)
 ; ORRETURN(n) where n>0 is an error or warning in validating the data
 ;   1 piece:  subscript of ORQDATA that the error or warning is on
 ;   2 piece:  "ERROR" or "WARNING"
 ;   3 piece:  text message about error or warning
 ;   4 piece:  data item that generated the error or warning
 ;
VALIDATE(ORRETURN,ORQDATA) ;
 ; Given the array ORQDATA passed in by PCE Device Interface whose
 ; format is described in the PCE Device Interface documentation, this
 ; procedure will validate the Vitals data.  If the data is invalid,
 ; the procedure will return the errors in the form given above.
 ;
 N ORVITALS,ORQVIT
 ;Initialize RETURN to no errors
 K ORRETURN
 S ORRETURN(0)=1
 D PREVITAL(.ORRETURN,.ORVITALS,.ORQVIT,.ORQDATA)
 D VALIDATE^GMRVPCE0(.ORVITALS)
 D POSTVIT(.ORRETURN,.ORQVIT,.ORVITALS)
 Q
 ;
VALSTORE(ORRETURN,ORQDATA) ;Calls VALIDATE and if no errors calls STORE
 ; Given the array ORQDATA passed in by PCE Device Interface whose
 ; format is described in the PCE Device Interface documentation, this
 ; procedure will validate the Vitals data.  If the data is invalid,
 ; the procedure will return the errors in the form given above.
 ; If there are no errors then this procedure will call 
 ; Vitals/Measurements to store the data in the GMRV's 
 ; Patient Measurements (120.5) file.
 ;
 N ORVITALS,ORQVIT
 ;Initialize RETURN to no errors
 K ORRETURN
 S ORRETURN(0)=1
 D PREVITAL(.ORRETURN,.ORVITALS,.ORQVIT,.ORQDATA)
 D VALIDATE^GMRVPCE0(.ORVITALS)
 D POSTVIT(.ORRETURN,.ORQVIT,.ORVITALS)
 I ORRETURN(0)=1 D STORE^GMRVPCE0(.ORVITALS)
 Q
 ;
PREVITAL(ORRETURN,ORVITALS,ORQVIT,ORQDATA) ;format array for call to Vitlals
 N ORQTYPE,ORQCODE,ORINDEX1,ORINDEX2,ORRETINX,ORQITEM
 N ORQNODT,ORQNOPT,ORQNOHL
 S (ORQNODT,ORQNOPT,ORQNOHL)=1
 S ORVITALS("SOURCE")="^"_DUZ
 S ORINDEX2=0
 S ORRETINX=$O(ORRETURN(""),-1)
 S ORINDEX1=""
 F  S ORINDEX1=$O(ORQDATA(ORINDEX1)) Q:'ORINDEX1  D
 . S ORQDATAX=ORQDATA(ORINDEX1),ORQTYPE=$P(ORQDATAX,"^"),ORQCODE=$P(ORQDATAX,"^",2)
 . I ORQTYPE="PRV" S ORVITALS("PROVIDER",1)=ORQCODE Q
 . I ORQTYPE="VST" D  Q
 .. I ORQCODE="DT" D  Q
 ... S ORQNODT=0
 ... S ORQITEM=$P(ORQDATAX,"^",3)
 ... S $P(ORVITALS("ENCOUNTER"),"^",1)=ORQITEM
 ... I ORQITEM>$$NOW^XLFDT D
 .... S ORRETINX=ORRETINX+1
 .... S ORRETURN(ORRETINX)=ORINDEX1_"^ERROR^Date/Time entered cannot be in the future^"_$$FMTE^XLFDT(ORQITEM)
 .... S ORRETURN(0)=-1
 ... I ORQITEM'>1800000 D
 .... S ORRETINX=ORRETINX+1
 .... S ORRETURN(ORRETINX)=ORINDEX1_"^ERROR^Encounter Date/Time not valid^"_ORQITEM
 .... S ORRETURN(0)=-1
 .. I ORQCODE="PT" D  Q
 ... S ORQNOPT=0
 ... S ORQITEM=$P(ORQDATAX,"^",3)
 ... S $P(ORVITALS("ENCOUNTER"),"^",2)=ORQITEM
 ... I '($D(^DPT(+ORQITEM,0))#2) D
 .... S ORRETINX=ORRETINX+1
 .... S ORRETURN(ORRETINX)=ORINDEX1_"^ERROR^Patient missing or invalid in file 2^"_ORQITEM
 .... S ORRETURN(0)=-1
 .. I ORQCODE="HL" D  Q
 ... S ORQNOHL=0
 ... S ORQITEM=$P(ORQDATAX,"^",3)
 ... S $P(ORVITALS("ENCOUNTER"),"^",3)=ORQITEM
 ... I '$D(^SC(ORQITEM,0)) D
 .... S ORRETINX=ORRETINX+1
 .... S ORRETURN(ORRETINX)=ORINDEX1_"^ERROR^HOSPITAL LOCATION Missing is not in file 44^"_ORQITEM
 .... S ORRETURN(0)=-1
 ...; I $D(^PX(815,1,"DHL","B",ORQITEM)) D
 ...;. S ORRETINX=ORRETINX+1
 ...;. S ORRETURN(ORRETINX)=ORINDEX1_"^ERROR^HOSPITAL LOCATION Can not be a disposition clinic^"_ORQITEM
 ...;. S ORRETURN(0)=-1
 . I ORQTYPE="VIT" D  Q
 .. S ORINDEX2=ORINDEX2+1
 .. S ORQVIT(ORINDEX2)=ORINDEX1
 .. S ORVITALS("VITALS",+$P(ORQDATAX,"^",6),ORINDEX2)=ORQCODE_"^"_$P(ORQDATAX,"^",5)_"^"_$P(ORQDATAX,"^",7,8)
 I ORQNODT D
 . S ORRETINX=ORRETINX+1
 . S ORRETURN(ORRETINX)="^ERROR^Required data item, ENCOUNTER DATE/TIME, is missing^"
 . S ORRETURN(0)=-1
 I ORQNOPT D
 . S ORRETINX=ORRETINX+1
 . S ORRETURN(ORRETINX)="^ERROR^Required data item, PATIENT, is missing^"
 . S ORRETURN(0)=-1
 I ORQNOHL D
 . S ORRETINX=ORRETINX+1
 . S ORRETURN(ORRETINX)="^ERROR^Required data item, HOSPITAL LOCATION, is missing^"
 . S ORRETURN(0)=-1
 Q
 ;
POSTVIT(ORRETURN,ORQVIT,ORVITALS) ;return errors and warnings
 N ORVAR,ORINDEX,ORQTYPE
 S ORINDEX=$O(ORRETURN(""),-1)
 F ORQTYPE="WARNING","ERROR" D
 . S ORVAR="ORVITALS("""_ORQTYPE_""")"
 . F  S ORVAR=$Q(@ORVAR) Q:ORVAR'[("ORVITALS("""_ORQTYPE_"""")  D
 .. S ORINDEX=ORINDEX+1
 .. S ORRETURN(ORINDEX)=$G(ORQVIT($P(ORVAR,",",4)))_"^"_ORQTYPE_"^"_@ORVAR
 .. I ORQTYPE="WARNING" S:ORRETURN(0)>0 ORRETURN(0)=0
 .. E  S ORRETURN(0)=-1
 Q
 ;
HELP(ORQLST,ORQTYPE) ; This procedure will return help for a particular
 ; measurement type in an array.
 ;   Input
 ;   Variables:  ORQTYPE=Type of measurement (abbreviation
 ;               (req.)  from PCE Device Interface Specification).
 ;               ORQLST=Array root to store help text in
 ;
 D HELP^GMRVPCE0(ORQTYPE,"ORQLST")
 Q
 ;
RATECHK(ORRETURN,ORQTYPE,ORQRATE,ORQUNIT) ;
 ; Extrinsic function to validate the
 ; rate for a particular measurement
 ;   Input
 ;   Variables:  ORQTYPE=Type of measurement (abbreviation
 ;               (req.)  from PCE Device Interface Specification).
 ;               ORQRATE=Measurement rate to be validated.
 ;               (req.)
 ;               ORQUNIT=Unit of measurement for rate, if specified.
 ;               (opt.)
 ;   Return value:  1 if rate is valid.
 ;                  0 if rate is invalid.
 ;
 S ORRETURN=$$RATECHK^GMRVPCE0(ORQTYPE,ORQRATE,$G(ORQUNIT))
 Q
 ;
VMTYPES(ORRETURN,ORQTYPE) ;
 ; This function returns one if ORQTYPE is a valid type abbrev.
 ; from the PCE Device Interface Specification.
 S ORRETURN=$$VMTYPES^GMRVPCE0(ORQTYPE)
 Q