Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/BAR_CODE_MED_ADMIN-ALPB-PSB/ALPBINP.m

    r613 r623  
    1 ALPBINP ;OIFO-DALLAS/SED/KC/MW  BCMA - BCBU INPT TO HL7 ;5/2/2002
    2         ;;3.0;BAR CODE MED ADMIN;**8,37**;May 2007;Build 10
    3         ;;Per VHA Directive 2004-038, this routine should not be modified.
    4         ;This routine will intercept the HL7 message that it sent from Pharmacy
    5         ;to CPRS to update order information. The message is then parsed and
    6         ;repackage so it can be sent to the BCBU workstation.
    7         ;
    8         ; Reference/IA
    9         ; EN^PSJBCBU/3876
    10         ; $$EN^VAFHLPID/263
    11         ; $$EN^VAFHAPV1/4512
    12         ; EN1^GMRADPT/10099
    13         ; EN^PSJBCMA1/2829
    14         ;
    15 IPH(MSG)        ;CAPTURE MESSAGE ARRAY FROM PHARMACY
    16         N VAIN,ALPMSG
    17         S ALPMSG=$S($L($G(MSG)):MSG,1:"MSG")
    18         I '$O(@ALPMSG@(0)) Q "0^MSG^Missing Message Array"
    19         S MSH=0
    20         F  S MSH=$O(@ALPMSG@(MSH)) Q:MSH'>0  Q:$E(@ALPMSG@(MSH),1,3)="MSH"
    21         I +MSH'>0 Q "0^MSG^Missing MSH Segment Bad Message"
    22         S MSFS=$E(@ALPMSG@(MSH),4,4)
    23         S MSCS=$E(@ALPMSG@(MSH),5,5)
    24         S MSCH=$E(@ALPMSG@(MSH),6,6)
    25         S MSCTR=$E(@ALPMSG@(MSH),4,8)
    26         ;The message is confirmed to be a Pharmacy message
    27         I $P(@ALPMSG@(MSH),MSFS,3)'="PHARMACY" Q "1^^Not a Pharmacy Message"
    28         ;A PID and PV1 segment is required for this message
    29         S PID=0
    30         F  S PID=$O(@ALPMSG@(PID)) Q:PID'>0  Q:$E(@ALPMSG@(PID),1,3)="PID"
    31         I +PID'>0 Q "0^MSG^Missing PID Segment Bad Message"
    32         ;Also the patient must have an inpatient status
    33         S PV1=0
    34         F  S PV1=$O(@ALPMSG@(PV1)) Q:PV1'>0  Q:$E(@ALPMSG@(PV1),1,3)="PV1"
    35         I +PV1'>0 Q "0^MSG^Missing PV1 Segment Bad Message"
    36         I $P(@ALPMSG@(PV1),MSFS,3)'="I" Q "1^^Not an Inpatient Pharmacy Message"
    37         S ORC=0
    38         F  S ORC=$O(@ALPMSG@(ORC)) Q:ORC'>0  Q:$E(@ALPMSG@(ORC),1,3)="ORC"
    39         I +ORC'>0 Q "0^MSG^Missing ORC Segment Bad Message"
    40         ;RE-BUILDING THE MESSAGE FOR BCBU
    41         S ALPDFN=$P(@ALPMSG@(PID),MSFS,4)
    42         I +ALPDFN'>0 Q "0^MSG^Invalid or Missing Patient - PID"
    43         S ALPORD=$P($P(@ALPMSG@(ORC),MSFS,4),MSCS,1)
    44         I ALPORD="" Q "0^MSG^Invalid or Missing Order Number - ORC"
    45         K ALPB
    46         D EN^PSJBCBU(ALPDFN,ALPORD,.ALPB)
    47 SEED    ;Entry point for ^ALPBIND
    48         N VAIN
    49         D INIT
    50         S SUB=0 F  S SUB=$O(ALPB(SUB)) Q:'SUB  D
    51         . ;convert and move the message to the HLA array for transport
    52         . S HLA("HLS",SUB)=$$CNV^ALPBUTL1(MSCTR,HLCTR,ALPB(SUB))
    53         . ;Now check for continuations
    54         . S SUB1=0
    55         . F  S SUB1=$O(ALPB(SUB,SUB1)) Q:'SUB1  D
    56         . . S HLA("HLS",SUB,SUB1)=$$CNV^ALPBUTL1(MSCTR,HLCTR,ALPB(SUB,SUB1))
    57         . I $E(HLA("HLS",SUB),1,3)="RXE" S RXE=SUB
    58         . I $E(HLA("HLS",SUB),1,3)="PID" S PID=SUB
    59         . I $E(HLA("HLS",SUB),1,3)="PV1" S PV1=SUB
    60         K HLA("HLS",MSH)
    61         I '$D(HLA("HLS",PID)) Q "0^MSG^Missing PID Segment Bad Message"
    62         S ALPDFN=$P($P(HLA("HLS",PID),HLFS,4),HLCS,1)
    63         I +ALPDFN'>0 Q "0^MSG^Invalid or Missing Patient - PID"
    64         S HLA("HLS",PID)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
    65         ;Fix RXE segement for Administration Type
    66         D RXE
    67         ;Get the Division that the patient is associated with
    68         D PDIV
    69         I ALPDIV="DOM",+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP DOM FILTER",1,"Q")>0 Q "0^^Screen of DOMICILIARY"
    70         I '$D(HLL("LINKS")) Q "0^HL7^Missing HLL Links Array Division # "_ALPDIV
    71         ;SET NEW PV1
    72         D NOW^%DTC
    73         S STRING=$$EN^VAFHAPV1(ALPDFN,%,"2,3,7,18")
    74         S HLA("HLS",PV1)=STRING
    75         I +ORC>0 D
    76         . S ALPST=$$STAT^ALPBUTL1($P(HLA("HLS",ORC),HLFS,6))
    77         . Q:ALPST=""
    78         . S $P(HLA("HLS",ORC),HLFS,6)=$P(HLA("HLS",ORC),HLFS,6)_HLCS_ALPST
    79         D AL1
    80         ;Capture message to review for testing before sending
    81         D SEND
    82 EXIT    ;EXIT and kill
    83         K HLA,SUB,SUB1,STRING,ALPLOC,HLCS,HLCTR,HLFS,MSCH,MSCS,MSCTR
    84         K MSH,ORC,PID,PV1,RXE,RXR,ALPB,ALPBY,ALPBYN,ALPC,ALPDATA,ALPDFN
    85         K ALPDT,ALPI,ALPII,ALPIV,ALPOPTS,ALPOR,ALPORD,ALPST
    86         K ALPSTN,ALPSYM,EVENT,GMRA,GMRAL
    87         Q ALPRSLT
    88 INI()   ;INTIAL SET UP ENTRY
    89         G SEED
    90 INIT    ;CALL HL7 TO INITIALIZE MESSAGE VARIABLES
    91         ;SET UP ENVIRONMENT FOR MESSAGE
    92         K HL,HLA,HLECH,HLQ,ALPRSLT,ALPOPTS
    93         S EVENT="PSB BCBU ORM SEND"
    94         D INIT^HLFNC2(EVENT,.HL,1)
    95         S HLCS=$E(HL("ECH")),HLCTR=HLFS_HL("ECH")
    96         Q
    97 SEND    ;CALL HL7 TO TRANSMIT SINGLE MESSAGE
    98         K ALPRSLT,ALPOPTS
    99         D GENERATE^HLMA(EVENT,"LM",1,.ALPRSLT,"",.ALPOPTS)
    100         Q
    101 AL1     ;ALLERGY SEGMENT BUILD
    102         ;The will build the ALP segment with the curent allergies
    103         ;for the patient to be added to the message
    104         N DFN
    105         Q:+ALPDFN'>0
    106         K GMRAL
    107         S DFN=ALPDFN
    108         S GMRA="0^0^111"  ;DEFINES WHAT ALLERGIES TO RETURN
    109         D EN1^GMRADPT
    110         Q:'$D(GMRAL)
    111         S ALPI=0,ALPC=1,ALPSYM=""
    112         F  S ALPI=$O(GMRAL(ALPI)) Q:+ALPI'>0  D
    113         . S ALPADR=""
    114         . I $P($P(GMRAL(ALPI),U,8),";",2)="P" S ALPADR="**ADR** "
    115         . S ALPDATA="AL1"_HLFS_ALPC_HLFS_$P(GMRAL(ALPI),U,7)
    116         . S ALPDATA=ALPDATA_HLFS_ALPI_HLCS_ALPADR_$E($P(GMRAL(ALPI),U,2),1,25)_HLCS_"VA120.8"
    117         . ;S ALPII=0 F  S ALPII=$O(GMRAL(ALPI,"S",ALPII)) Q:+ALPII'>0  D
    118         . ;. S ALPSYM=ALPSYM_$P(GMRAL(ALPI,"S",ALPII),";",1)_HLCS
    119         . ;S $P(ALPDATA,HLFS,6)=ALPSYM
    120         . S HLA("HLS",$O(HLA("HLS",9999999),-1)+1)=ALPDATA
    121         . S ALPC=ALPC+1
    122         K GMRAL
    123         Q
    124 RXE     ;
    125         Q:+$G(RXE)'>0
    126         K ^TMP("PSJ1",$J)
    127         Q:'$D(HLA("HLS",RXE))
    128         S DATA=HLA("HLS",RXE)
    129         D EN^PSJBCMA1(ALPDFN,ALPORD,1)
    130         S TYP=$P($G(^TMP("PSJ1",$J,4)),U,2)
    131         Q:TYP="CONTINUOUS"
    132         Q:TYP="FILL ON REQUEST"
    133         S ALP1=$P(DATA,HLFS,2),ALP2=$P(ALP1,HLCS,2)
    134         I ALP1[TYP Q
    135         I ALP2[TYP Q
    136         S $P(ALP2,"&",1)=$P(ALP2,"&",1)_" "_TYP
    137         S $P(ALP1,HLCS,2)=ALP2,$P(DATA,HLFS,2)=ALP1
    138         S HLA("HLS",RXE)=DATA
    139         K TYP,ALP1,ALP2,^TMP("PSJ1",$J)
    140         Q
    141 PDIV    ;PATIENT DIVISION
    142         ;Check ALPBMDT Variable
    143         S:+$G(ALPBMDT)'>0 ALPBMDT=0
    144         S ALPDIV=$$DIV^ALPBUTL1(ALPDFN,ALPBMDT)
    145         ;Screen Dom
    146         I ALPDIV="DOM",+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP DOM FILTER",1,"Q")>0 Q
    147         ;Now do I send the Message or not Based of Division
    148         I $D(ALPHLL("LINKS")) M HLL("LINKS")=ALPHLL("LINKS")
    149         I '$D(HLL("LINKS")) D GET^ALPBPARM(.HLL,ALPDIV)
    150         Q
    151 MEDL(ALPML)     ;Use this entry to send MedLog messages
    152         N VAIN
    153         ;ALPML is the IEN of the MedLog for file #53.79
    154         I '$D(ALPML) Q "0^ALPML^No Med-Log Number"
    155         I '$D(^PSB(53.79,ALPML,0)) Q "0^"_ALPML_"^Med - Log Number Invalid"
    156         ;First get the required HL7 Variables
    157         D INIT
    158         ;Need to build the PID, PV1 and ORC segments
    159         S ALPDFN=+$P($G(^PSB(53.79,ALPML,0)),U,1)
    160         I +ALPDFN'>0 Q "0^"_ALPML_"^Invalid or Missing Patient - Med-Log"
    161         ;Get the Division that the patient is associated with
    162         D PDIV
    163         I ALPDIV="DOM",+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP DOM FILTER",1,"Q")>0 Q "0^^Screen of DOMICILIARY"
    164         I '$D(HLL("LINKS")) Q "0^"_ALPML_"^Missing HLL Links Array Med-Log"
    165         S ALPST=$P($G(^PSB(53.79,ALPML,0)),U,9)
    166         S ALPBY=$P($G(^PSB(53.79,ALPML,0)),U,7)
    167         S ALPDT=$P($G(^PSB(53.79,ALPML,0)),U,6)
    168         S ALPOR=$P($G(^PSB(53.79,ALPML,.1)),U,1)
    169         S ALPBYN=$P($G(^VA(200,ALPBY,0)),U,1)
    170         S ALPSTN=$S($D(ALPST):$$EXTERNAL^DILFD(53.79,".09",,ALPST),1:"Non")
    171         I '$D(ALPOR) Q "0^"_ALPML_"^Invalid or Missing Pharmacy Order Number Med-Log"
    172         S PID=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
    173         I '$D(PID) Q "0^"_ALPML_"^Invalid or Missing Patient - PID Med-Log"
    174         S PV1=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
    175         I '$D(PV1) Q "0^"_ALPML_"^Invalid or Missing Patient Location - PV1 Med-Log"
    176         S HLA("HLS",1)=PID
    177         S HLA("HLS",2)=PV1
    178         ;BUILD ORC SEGMENT
    179         S ORC="ORC"_HLFS_"ML"_HLFS_ALPML_HLCS_"ML"_HLFS_ALPOR_HLCS_"PS"_HLFS
    180         S ORC=ORC_HLFS_ALPST_HLCS_ALPSTN_HLFS_HLFS_HLFS_HLFS
    181         S ORC=ORC_$$HLDATE^HLFNC(ALPDT,"TS")_HLFS_ALPBY_HLCS_ALPBYN
    182         S HLA("HLS",3)=ORC
    183         ;The Message is ready to send
    184         D SEND
    185         Q ALPRSLT
    186         ;
    187 ADMQ    ;Need to que a single patient init for admissions
    188         S ALDFN=ALPDFN
    189         S ZTDTH=$$NOW^XLFDT
    190         S ZTRTN="PAT^ALPBIND"
    191         S ZTDESC="PSB - Initialize Single Patient on Admission Contingency Workstation"
    192         S ZTIO="",ZTSAVE("ALDFN")=""
    193         D ^%ZTLOAD
    194         K ZTIO,ZTDESC,ZTRTN,ZTSK
    195         Q
    196 PMOV(ALPDFN,ALPTYP,ALPTT,ALPBMDT)       ;Entry Point to send patient movement
    197         N VAIN
    198         I +$G(ALPDFN)'>0 Q "0^^Missing Patient ID"
    199         D INIT
    200         ;Check Movement type. If not a discharge then don't pass date and time
    201         S:$G(ALPTT)'="DISCHARGE" ALPBMDT=0
    202         ;Get the Division that the patient is associated with
    203         D PDIV
    204         I ALPDIV="DOM",+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP DOM FILTER",1,"Q")>0 Q "0^^Screen of DOMICILIARY"
    205         I '$D(HLL("LINKS")) Q "0^"_ALPDFN_"^Missing HLL Links Array Pat-Move"
    206         S HLA("HLS",1)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
    207         S HLA("HLS",2)=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
    208         S:$G(ALPTT)="DISCHARGE" $P(HLA("HLS",2),HLFS,37)=$G(ALPTYP)
    209         D SEND
    210         I ALPTYP=14!(ALPTYP=41) S ALPTT="ADMISSION" ;FOR RETURN FROM ASIH
    211         I $G(ALPTT)="ADMISSION" D ADMQ
    212         ;SEND A DISCHARGE TO DIV SENDING ASIH
    213         I $G(ALPTYP)[13!($G(ALPTYP)[40) D
    214         .D INIT
    215         .S ALPWRD=$P($G(DGPMVI(5)),U,1) ;LAST WARD
    216         .I +ALPWRD'>0 S ALPRSLT="0^^Screen - No Ward" Q  ;NO WARD
    217         .S ALPBDIV=$P($G(^DIC(42,ALPWRD,0)),U,11)
    218         .D GET^ALPBPARM(.HLL,ALPBDIV)
    219         .S HLA("HLS",1)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
    220         .S HLA("HLS",2)=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
    221         .S $P(HLA("HLS",2),HLFS,37)="ASIH"
    222         .D SEND
    223         Q ALPRSLT
     1ALPBINP ;OIFO-DALLAS/SED/KC/MW  BCMA - BCBU INPT TO HL7 ;5/2/2002
     2 ;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004
     3 ;This routine will intercept the HL7 message that it sent from Pharmacy
     4 ;to CPRS to update order information. The message is then parsed and
     5 ;repackage so it can be sent to the BCBU workstation.
     6 ;
     7 ; Reference/IA
     8 ; EN^PSJBCBU/3876
     9 ; $$EN^VAFHLPID/263
     10 ; $$EN^VAFHAPV1/4512
     11 ; EN1^GMRADPT/10099
     12 ; EN^PSJBCMA1/2829
     13 ;
     14IPH(MSG) ;CAPTURE MESSAGE ARRAY FROM PHARMACY
     15 N VAIN,ALPMSG
     16 S ALPMSG=$S($L($G(MSG)):MSG,1:"MSG")
     17 I '$O(@ALPMSG@(0)) Q "0^MSG^Missing Message Array"
     18 S MSH=0
     19 F  S MSH=$O(@ALPMSG@(MSH)) Q:MSH'>0  Q:$E(@ALPMSG@(MSH),1,3)="MSH"
     20 I +MSH'>0 Q "0^MSG^Missing MSH Segment Bad Message"
     21 S MSFS=$E(@ALPMSG@(MSH),4,4)
     22 S MSCS=$E(@ALPMSG@(MSH),5,5)
     23 S MSCH=$E(@ALPMSG@(MSH),6,6)
     24 S MSCTR=$E(@ALPMSG@(MSH),4,8)
     25 ;The message is confirmed to be a Pharmacy message
     26 I $P(@ALPMSG@(MSH),MSFS,3)'="PHARMACY" Q "1^^Not a Pharmacy Message"
     27 ;A PID and PV1 segment is required for this message
     28 S PID=0
     29 F  S PID=$O(@ALPMSG@(PID)) Q:PID'>0  Q:$E(@ALPMSG@(PID),1,3)="PID"
     30 I +PID'>0 Q "0^MSG^Missing PID Segment Bad Message"
     31 ;Also the patient must have an inpatient status
     32 S PV1=0
     33 F  S PV1=$O(@ALPMSG@(PV1)) Q:PV1'>0  Q:$E(@ALPMSG@(PV1),1,3)="PV1"
     34 I +PV1'>0 Q "0^MSG^Missing PV1 Segment Bad Message"
     35 I $P(@ALPMSG@(PV1),MSFS,3)'="I" Q "1^^Not an Inpatient Pharmacy Message"
     36 S ORC=0
     37 F  S ORC=$O(@ALPMSG@(ORC)) Q:ORC'>0  Q:$E(@ALPMSG@(ORC),1,3)="ORC"
     38 I +ORC'>0 Q "0^MSG^Missing ORC Segment Bad Message"
     39 ;RE-BUILDING THE MESSAGE FOR BCBU
     40 S ALPDFN=$P(@ALPMSG@(PID),MSFS,4)
     41 I +ALPDFN'>0 Q "0^MSG^Invalid or Missing Patient - PID"
     42 S ALPORD=$P($P(@ALPMSG@(ORC),MSFS,4),MSCS,1)
     43 I ALPORD="" Q "0^MSG^Invalid or Missing Order Number - ORC"
     44 K ALPB
     45 D EN^PSJBCBU(ALPDFN,ALPORD,.ALPB)
     46SEED ;Entry point for ^ALPBIND
     47 D INIT
     48 S SUB=0 F  S SUB=$O(ALPB(SUB)) Q:'SUB  D
     49 . ;convert and move the message to the HLA array for transport
     50 . S HLA("HLS",SUB)=$$CNV^ALPBUTL1(MSCTR,HLCTR,ALPB(SUB))
     51 . ;Now check for continuations
     52 . S SUB1=0
     53 . F  S SUB1=$O(ALPB(SUB,SUB1)) Q:'SUB1  D
     54 . . S HLA("HLS",SUB,SUB1)=$$CNV^ALPBUTL1(MSCTR,HLCTR,ALPB(SUB,SUB1))
     55 . I $E(HLA("HLS",SUB),1,3)="RXE" S RXE=SUB
     56 . I $E(HLA("HLS",SUB),1,3)="PID" S PID=SUB
     57 . I $E(HLA("HLS",SUB),1,3)="PV1" S PV1=SUB
     58 K HLA("HLS",MSH)
     59 I '$D(HLA("HLS",PID)) Q "0^MSG^Missing PID Segment Bad Message"
     60 S ALPDFN=$P($P(HLA("HLS",PID),HLFS,4),HLCS,1)
     61 I +ALPDFN'>0 Q "0^MSG^Invalid or Missing Patient - PID"
     62 S HLA("HLS",PID)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
     63 ;Fix RXE segement for Administration Type
     64 D RXE
     65 ;Get the Division that the patient is associated with
     66 D PDIV
     67 I ALPDIV="DOM" Q "0^^Screen of DOMICILIARY"
     68 I '$D(HLL("LINKS")) Q "0^HL7^Missing HLL Links Array Division # "_ALPDIV
     69 ;SET NEW PV1
     70 D NOW^%DTC
     71 S STRING=$$EN^VAFHAPV1(ALPDFN,%,"2,3,7,18")
     72 S HLA("HLS",PV1)=STRING
     73 I +ORC>0 D
     74 . S ALPST=$$STAT^ALPBUTL1($P(HLA("HLS",ORC),HLFS,6))
     75 . Q:ALPST=""
     76 . S $P(HLA("HLS",ORC),HLFS,6)=$P(HLA("HLS",ORC),HLFS,6)_HLCS_ALPST
     77 D AL1
     78 ;Capture message to review for testing before sending
     79 D SEND
     80EXIT ;EXIT and kill
     81 K HLA,SUB,SUB1,STRING,ALPLOC,HLCS,HLCTR,HLFS,MSCH,MSCS,MSCTR
     82 K MSH,ORC,PID,PV1,RXE,RXR,ALPB,ALPBY,ALPBYN,ALPC,ALPDATA,ALPDFN
     83 K ALPDT,ALPI,ALPII,ALPIV,ALPOPTS,ALPOR,ALPORD,ALPST
     84 K ALPSTN,ALPSYM,EVENT,GMRA,GMRAL
     85 Q ALPRSLT
     86INI() ;INTIAL SET UP ENTRY
     87 G SEED
     88INIT ;CALL HL7 TO INITIALIZE MESSAGE VARIABLES
     89 ;SET UP ENVIRONMENT FOR MESSAGE
     90 K HL,HLA,HLECH,HLQ,ALPRSLT,ALPOPTS
     91 S EVENT="PSB BCBU ORM SEND"
     92 D INIT^HLFNC2(EVENT,.HL,1)
     93 S HLCS=$E(HL("ECH")),HLCTR=HLFS_HL("ECH")
     94 Q
     95SEND ;CALL HL7 TO TRANSMIT SINGLE MESSAGE
     96 K ALPRSLT,ALPOPTS
     97 D GENERATE^HLMA(EVENT,"LM",1,.ALPRSLT,"",.ALPOPTS)
     98 Q
     99AL1 ;ALLERGY SEGMENT BUILD
     100 ;The will build the ALP segment with the curent allergies
     101 ;for the patient to be added to the message
     102 N DFN
     103 Q:+ALPDFN'>0
     104 K GMRAL
     105 S DFN=ALPDFN
     106 S GMRA="0^0^111"  ;DEFINES WHAT ALLERGIES TO RETURN
     107 D EN1^GMRADPT
     108 Q:'$D(GMRAL)
     109 S ALPI=0,ALPC=1,ALPSYM=""
     110 F  S ALPI=$O(GMRAL(ALPI)) Q:+ALPI'>0  D
     111 . S ALPADR=""
     112 . I $P($P(GMRAL(ALPI),U,8),";",2)="P" S ALPADR="**ADR** "
     113 . S ALPDATA="AL1"_HLFS_ALPC_HLFS_$P(GMRAL(ALPI),U,7)
     114 . S ALPDATA=ALPDATA_HLFS_ALPI_HLCS_ALPADR_$E($P(GMRAL(ALPI),U,2),1,25)_HLCS_"VA120.8"
     115 . ;S ALPII=0 F  S ALPII=$O(GMRAL(ALPI,"S",ALPII)) Q:+ALPII'>0  D
     116 . ;. S ALPSYM=ALPSYM_$P(GMRAL(ALPI,"S",ALPII),";",1)_HLCS
     117 . ;S $P(ALPDATA,HLFS,6)=ALPSYM
     118 . S HLA("HLS",$O(HLA("HLS",9999999),-1)+1)=ALPDATA
     119 . S ALPC=ALPC+1
     120 K GMRAL
     121 Q
     122RXE ;
     123 Q:+$G(RXE)'>0
     124 K ^TMP("PSJ1",$J)
     125 Q:'$D(HLA("HLS",RXE))
     126 S DATA=HLA("HLS",RXE)
     127 D EN^PSJBCMA1(ALPDFN,ALPORD,1)
     128 S TYP=$P($G(^TMP("PSJ1",$J,4)),U,2)
     129 Q:TYP="CONTINUOUS"
     130 Q:TYP="FILL ON REQUEST"
     131 S ALP1=$P(DATA,HLFS,2),ALP2=$P(ALP1,HLCS,2)
     132 I ALP1[TYP Q
     133 I ALP2[TYP Q
     134 S $P(ALP2,"&",1)=$P(ALP2,"&",1)_" "_TYP
     135 S $P(ALP1,HLCS,2)=ALP2,$P(DATA,HLFS,2)=ALP1
     136 S HLA("HLS",RXE)=DATA
     137 K TYP,ALP1,ALP2,^TMP("PSJ1",$J)
     138 Q
     139PDIV ;PATIENT DIVISION
     140 ;Check ALPBMDT Variable
     141 S:+$G(ALPBMDT)'>0 ALPBMDT=0
     142 S ALPDIV=$$DIV^ALPBUTL1(ALPDFN,ALPBMDT)
     143 ;Screen Dom
     144 Q:ALPDIV="DOM"
     145 ;Now do I send the Message or not Based of Division
     146 I $D(ALPHLL("LINKS")) M HLL("LINKS")=ALPHLL("LINKS")
     147 I '$D(HLL("LINKS")) D GET^ALPBPARM(.HLL,ALPDIV)
     148 Q
     149MEDL(ALPML) ;Use this entry to send MedLog messages
     150 N VAIN
     151 ;ALPML is the IEN of the MedLog for file #53.79
     152 I '$D(ALPML) Q "0^ALPML^No Med-Log Number"
     153 I '$D(^PSB(53.79,ALPML,0)) Q "0^"_ALPML_"^Med - Log Number Invalid"
     154 ;First get the required HL7 Variables
     155 D INIT
     156 ;Need to build the PID, PV1 and ORC segments
     157 S ALPDFN=+$P($G(^PSB(53.79,ALPML,0)),U,1)
     158 I +ALPDFN'>0 Q "0^"_ALPML_"^Invalid or Missing Patient - Med-Log"
     159 ;Get the Division that the patient is associated with
     160 D PDIV
     161 I ALPDIV="DOM" Q "0^^Screen of DOMICILIARY"
     162 I '$D(HLL("LINKS")) Q "0^"_ALPML_"^Missing HLL Links Array Med-Log"
     163 S ALPST=$P($G(^PSB(53.79,ALPML,0)),U,9)
     164 S ALPBY=$P($G(^PSB(53.79,ALPML,0)),U,7)
     165 S ALPDT=$P($G(^PSB(53.79,ALPML,0)),U,6)
     166 S ALPOR=$P($G(^PSB(53.79,ALPML,.1)),U,1)
     167 S ALPBYN=$P($G(^VA(200,ALPBY,0)),U,1)
     168 S ALPSTN=$S($D(ALPST):$$EXTERNAL^DILFD(53.79,".09",,ALPST),1:"Non")
     169 I '$D(ALPOR) Q "0^"_ALPML_"^Invalid or Missing Pharmacy Order Number Med-Log"
     170 S PID=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
     171 I '$D(PID) Q "0^"_ALPML_"^Invalid or Missing Patient - PID Med-Log"
     172 S PV1=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
     173 I '$D(PV1) Q "0^"_ALPML_"^Invalid or Missing Patient Location - PV1 Med-Log"
     174 S HLA("HLS",1)=PID
     175 S HLA("HLS",2)=PV1
     176 ;BUILD ORC SEGMENT
     177 S ORC="ORC"_HLFS_"ML"_HLFS_ALPML_HLCS_"ML"_HLFS_ALPOR_HLCS_"PS"_HLFS
     178 S ORC=ORC_HLFS_ALPST_HLCS_ALPSTN_HLFS_HLFS_HLFS_HLFS
     179 S ORC=ORC_$$HLDATE^HLFNC(ALPDT,"TS")_HLFS_ALPBY_HLCS_ALPBYN
     180 S HLA("HLS",3)=ORC
     181 ;The Message is ready to send
     182 D SEND
     183 Q ALPRSLT
     184 ;
     185ADMQ ;Need to que a single patient init for admissions
     186 S ALDFN=ALPDFN
     187 S ZTDTH=$$NOW^XLFDT
     188 S ZTRTN="PAT^ALPBIND"
     189 S ZTDESC="PSB - Initialize Single Patient on Admission Contingency Workstation"
     190 S ZTIO="",ZTSAVE("ALDFN")=""
     191 D ^%ZTLOAD
     192 K ZTIO,ZTDESC,ZTRTN,ZTSK
     193 Q
     194PMOV(ALPDFN,ALPTYP,ALPTT,ALPBMDT) ;Entry Point to send patient movement
     195 N VAIN
     196 I +$G(ALPDFN)'>0 Q "0^^Missing Patient ID"
     197 D INIT
     198 ;Check Movement type. If not a discharge then don't pass date and time
     199 S:$G(ALPTT)'="DISCHARGE" ALPBMDT=0
     200 ;Get the Division that the patient is associated with
     201 D PDIV
     202 I ALPDIV="DOM" Q "0^^Screen of DOMICILIARY"
     203 I '$D(HLL("LINKS")) Q "0^"_ALPDFN_"^Missing HLL Links Array Pat-Move"
     204 S HLA("HLS",1)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
     205 S HLA("HLS",2)=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
     206 S:$G(ALPTT)="DISCHARGE" $P(HLA("HLS",2),HLFS,37)=$G(ALPTYP)
     207 D SEND
     208 I ALPTYP=14!(ALPTYP=41) S ALPTT="ADMISSION" ;FOR RETURN FROM ASIH
     209 I $G(ALPTT)="ADMISSION" D ADMQ
     210 ;SEND A DISCHARGE TO DIV SENDING ASIH
     211 I $G(ALPTYP)[13!($G(ALPTYP)[40) D
     212 .D INIT
     213 .S ALPWRD=$P($G(DGPMVI(5)),U,1) ;LAST WARD
     214 .I +ALPWRD'>0 S ALPRSLT="0^^Screen - No Ward" Q  ;NO WARD
     215 .S ALPBDIV=$P($G(^DIC(42,ALPWRD,0)),U,11)
     216 .D GET^ALPBPARM(.HLL,ALPBDIV)
     217 .S HLA("HLS",1)=$$EN^VAFHLPID(ALPDFN,"2,7,8,19")
     218 .S HLA("HLS",2)=$$EN^VAFHAPV1(ALPDFN,DT,"2,3,7,18")
     219 .S $P(HLA("HLS",2),HLFS,37)="ASIH"
     220 .D SEND
     221 Q ALPRSLT
Note: See TracChangeset for help on using the changeset viewer.