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

PSJHLERR.m

Go to the documentation of this file.
  1. PSJHLERR ;BIR/LDT-PATIENT ID AND VISIT SEGMENTS FOR ERRORS ; 20 Apr 98 / 9:58 AM
  1. ;;5.0; INPATIENT MEDICATIONS ;**1,42**;16 DEC 97
  1. ;
  1. ;Only used for error messages to OE/RR where the Pharmacy order
  1. ;number is invalid.
  1. EN1(PSJHLDFN,PSOC,RXORDER,PSREASON) ; start here
  1. ; passed in are PSJHLDFN (patient ien)
  1. ; RXORDER (order number from OE/RR)
  1. ; PSOC (order control code)
  1. ; PSREASON (text reason)
  1. START ;
  1. K ^TMP("PSJHLS",$J,"PS")
  1. N WARD,ROOMBED,FIELD,PSJI,CLERK,LIMIT,PSJHLSDT,PSJHINST,PSJHLMTN
  1. D INIT,PID,PV1,ORC
  1. D CALL^PSJHLU(PSJI)
  1. K PSJI,PSOC,PSJCLEAR,PSREASON,J,NEXT,RXORDER
  1. Q
  1. ;
  1. INIT ; initialize HL7 variables, set master file identification segment
  1. ; PSJHLMTN = message type - ORR for messages sent as a response to
  1. ; an OE/RR event; ORM for "unsolicited" messages.
  1. S PSJI=0,PSJHLMTN="ORR"
  1. D INIT^PSJHLU
  1. S LIMIT=17 X PSJCLEAR
  1. S FIELD(0)="MSH",FIELD(1)="^~\&",FIELD(2)="PHARMACY",FIELD(3)=$G(PSJHINST),FIELD(8)=PSJHLMTN
  1. D NOW^%DTC S FIELD(4)="ORDER ENTRY",FIELD(5)=FIELD(3),FIELD(6)=$$HLDATE^HLFNC(%)
  1. D SEGMENT^PSJHLU(LIMIT),DISPLAY
  1. Q
  1. ;
  1. PID ; get patient data, format PID SEGMENT
  1. S LIMIT=22 X PSJCLEAR
  1. S FIELD(0)="PID"
  1. S FIELD(3)=PSJHLDFN
  1. N DFN S DFN=PSJHLDFN D ^VADPT S FIELD(5)=VADM(1)
  1. D SEGMENT^PSJHLU(LIMIT),DISPLAY
  1. Q
  1. ;
  1. PV1 ; get patient visit information, format PV1 segment
  1. S LIMIT=50 X PSJCLEAR
  1. S FIELD(0)="PV1"
  1. I PSJHLMTN="ORR" S FIELD(3)=LOC
  1. I PSJHLMTN="ORM" D
  1. .S LOC="",WARD=$G(^DPT(PSJHLDFN,.1)),LOC=$S($G(WARD)]"":$O(^SC("B",WARD,LOC)),1:LOC)
  1. .I $G(LOC)]"" S ROOMBED=$G(^DPT(PSJHLDFN,.101)),LOC=LOC_"^"_ROOMBED
  1. .S FIELD(3)=LOC
  1. S FIELD(2)=$S($G(CLASS)]"":CLASS,1:"I")
  1. I FIELD(2)="I" N DFN S DFN=PSJHLDFN D INP^VADPT S FIELD(19)=VAIN(1)
  1. D SEGMENT^PSJHLU(LIMIT),DISPLAY
  1. Q
  1. ;
  1. ORC ; order control segment - modified for use with error messages.
  1. S LIMIT=18 X PSJCLEAR
  1. Q:'$D(RXORDER)!'$D(PSOC)
  1. S FIELD(0)="ORC"
  1. S FIELD(1)=PSOC
  1. S FIELD(2)=RXORDER_"^OR"
  1. S FIELD(3)=$S(PSOC="ZR":$G(RXON),1:"")_"^PS"
  1. S CLERK=$P($G(^VA(200,DUZ,0)),"^")
  1. S FIELD(10)=DUZ_"^"_CLERK_"^"_"99NP"
  1. ;Nature of Order is X - Rejected on error messages,unless the message
  1. ;is in response to a purge message.
  1. S FIELD(16)=$S(PSOC="ZR":U_U,1:"X"_U_"Rejected")_U_"99ORN"_U_U_$G(PSREASON)_U
  1. D SEGMENT^PSJHLU(LIMIT),DISPLAY
  1. Q
  1. ;
  1. DISPLAY ; just for testing
  1. ;W ! F NEXT=0:1:LIMIT W FIELD(NEXT)_"|"
  1. Q