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/RADIOLOGY_NUCLEAR_MEDICINE-RA/RAHLRPC.m

    r613 r623  
    1 RAHLRPC ;HIRMFO/BNT-Rad/NM HL7 Protocol calls ;05/21/99   14:50
    2         ;;5.0;Radiology/Nuclear Medicine;**12,25,54,71,82,81,84**;Mar 16, 1998;Build 13
    3         ; 03/16/2006 *71 Rem Call 124379 allow exam updates to create HL7 msg
    4         ;
    5         ;Integration Agreements
    6         ;----------------------
    7         ;$$FIND1^DIC(2051); GETS^DIQ(2056)
    8         ;all access to ^ORD(101 to maintain application specific protocols(872)
    9         ;read w/FileMan HL7 APPLICATION PARAMETER(10136)
    10         ;
    11 REG     ; register exam
    12         N X,RA101Z,RAEID
    13         S RA101Z="RA REF" ; get all protocols beginning RA REG
    14         F  S RA101Z=$O(^ORD(101,"B",RA101Z)) Q:RA101Z'["RA REG"  D
    15         .S RAEID=$O(^ORD(101,"B",RA101Z,0))
    16         .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
    17         Q
    18 CANCEL  ; cancel exam
    19         N X,RA101Z,RAEID
    20         S RA101Z="RA CANCEK" ; get all protocols beginning RA CANCEL
    21         F  S RA101Z=$O(^ORD(101,"B",RA101Z)) Q:RA101Z'["RA CANCEL"  D
    22         .S RAEID=$O(^ORD(101,"B",RA101Z,0))
    23         .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
    24         Q
    25         ;
    26 RPT     ; report verified or released/not verified
    27         N X,RA101Z,RAEID,RASSS ; RASSS subcriber array to be passed to HLL for GENERATE^HLMA
    28         ;S X="^%ET",@^%ZOSF("TRAP")
    29         S RA101Z="RA RPS" ; get all protocols beginning RA RPT
    30         F  S RA101Z=$O(^ORD(101,"B",RA101Z)) Q:RA101Z'["RA RPT"  D
    31         .S RAEID=$O(^ORD(101,"B",RA101Z,0)) K RASSS  ; RA*5*81
    32         .S:$L($G(RANOSEND)) RAEID=$$GETEID(RAEID,RANOSEND,.RASSS) ;RA*5*81
    33         .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLRPT
    34         K RANOSEND
    35         Q
    36         ;
    37 EXM     ;Examined case; called from RAUTL1 and RASTED after a case has been edited.
    38         ;
    39         ;Called from RAUTL1 and RASTED after a case's status is upgraded
    40         ; and case's 30th piece is null
    41         ;
    42         ;If this new status is :
    43         ; at a status (or higher than a status) where
    44         ; GENERATE EXAMINED HL7 MSG = Y,
    45         ; then :
    46         ; 1. send an HL7 msg re this case having reached EXAMINED status
    47         ; 2. set subfile 70.03's HL7 EXAMINED MSG SENT  to  Y
    48         ;
    49         ; RALOWER = next lower status
    50         ; RANEWST = new status ien
    51         ; RAEXEDT = Indication of editing of: proc, proc mod, req phys, CPT mod, Tech comm...
    52         ; RAGENHL7 = Indication that sending ORU is due...
    53         ; RASSSX1(IENs) = Array of subscribers from 771, the message will be sent (SCIMGE)
    54         ;
    55         N RAIMGTYI,RAIMGTYJ,RALOWER,RANEWST,RAEXMDUN,RAGENHL7,RASSSX1
    56         S RAIMGTYI=$P($G(^RADPT(RADFN,"DT",RADTI,0)),U,2),RAIMGTYJ=$P(^RA(79.2,RAIMGTYI,0),U),RANEWST=$P($G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),U,3)
    57         S:$P(^RA(72,RANEWST,0),U,8)="Y" RAGENHL7=1 ;this status has GEN HL7 marked Y
    58         ; look thru lower statuses for GEN HL7 marked Y
    59 DOWN    S RALOWER=$P($G(^RA(72,+RANEWST,0)),U,3)
    60         I '$G(RAGENHL7) F  S RALOWER=$O(^RA(72,"AA",RAIMGTYJ,RALOWER),-1) Q:RALOWER<1  S:$P(^RA(72,+$O(^RA(72,"AA",RAIMGTYJ,RALOWER,0)),0),U,8)="Y" RAGENHL7=1
    61         ;?? none of the lower status levels have GEN HL7 marked Y
    62         K:$P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,30)="Y" RAGENHL7 ;already sent
    63         ;Q:'$G(RAEXEDT)&'$G(RAGENHL7)
    64         ; Business Rule: RA*5*84 sends an examined message to ScImage unconditionally
    65         I '$G(RAEXEDT),'$G(RAGENHL7) Q:'$O(^RA(79.7,0))  D  Q:'$O(RASSSX1(0))
    66         .N X,RASSS,RASSSL S X=0 F  S X=$O(^RA(79.7,X)) Q:'X  S:$P(^(X,0),U,2) RASSS(X)=""
    67         .D:$D(RASSS) GETSUB^RAHLRS1(.RASSS,.RASSSX1,.RASSSL)
    68 1       N RAEXMDUN
    69         S RAEXMDUN=1
    70 A1      N X,RA101Z,RAEID
    71         S RA101Z="RA EXAMINEC" ; get all protocols beginning RA EXAMINED
    72         F  S RA101Z=$O(^ORD(101,"B",RA101Z)) Q:RA101Z'["RA EXAMINED"  D
    73         .N RAGENHL7 S RAEID=$O(^ORD(101,"B",RA101Z,0))
    74         .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
    75         S:$G(RAGENHL7) $P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,30)="Y"
    76         Q
    77         ;
    78 GETEID(RAEID,RANOSEND,RASSS)    ; RA*5*81   Return RAEID or 0 (zero)  = for future use.
    79         ; RAEID = IEN of regular Event driver
    80         ; RANOSEND Application name or IEN from 771 file..  don't send message to Subcr. with this application.
    81         ; RASSS Array of subcribers (IENs) associated with RANOSEND application
    82         ; 0 (zero) returned if No subscriber exist or all subscribers associated with RANOSEND application.
    83         S RAEID=$G(RAEID) Q:'RAEID!'$L($G(RANOSEND))!'$D(^ORD(101,+RAEID,0)) RAEID
    84         N RAXX,ERR,X1,Y1,YY,RAPL,RANEW,RAPIDS,RAIEDS,DIERR,RAERR
    85         S RAPL=$S(+RANOSEND:+RANOSEND,1:$$FIND1^DIC(771,"","X",RANOSEND,"","","RAERR"))
    86         Q:'RAPL!($D(RAERR)#2) RAEID
    87         D GETS^DIQ(101,RAEID_",","**","I","RAXX","ERR")
    88         Q:$D(ERR) RAEID ; Was not able get Event driver info... so just pass event driver...
    89         Q:'$D(RAXX(101.0775)) 0  ;No subcribers exist for Event driver
    90         S X1="",RANEW=0,Y1=0 F  S X1=$O(RAXX(101.0775,X1)) Q:'$L(X1)  D
    91         .S YY=$G(RAXX(101.0775,X1,.01,"I"))
    92         .I $P($G(^ORD(101,+YY,770)),U,2)=RAPL D  Q
    93         ..S Y1=Y1+1,RASSS("EXCLUDE SUBSCRIBER",Y1)=YY ;Y1= 1,2,3...
    94         .S RANEW=1
    95         Q:'RANEW 0  ;All subscribers are associated with application RANOSEND..  Don't send the message.
    96         Q RAEID
     1RAHLRPC ;HIRMFO/BNT-Rad/NM HL7 Protocol calls ;05/21/99   14:50
     2 ;;5.0;Radiology/Nuclear Medicine;**12,25,54,71,82,81**;Mar 16, 1998;Build 12
     3 ; 03/16/2006 *71 Rem Call 124379 allow exam updates to create HL7 msg
     4REG ; register exam
     5 N X,RAPID,RAEID
     6 S RAPID="RA REF" ; get all protocols beginning RA REG
     7 F  S RAPID=$O(^ORD(101,"B",RAPID)) Q:RAPID'["RA REG"  D
     8 .S RAEID=$O(^ORD(101,"B",RAPID,0))
     9 .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
     10 Q
     11CANCEL ; cancel exam
     12 N X,RAPID,RAEID
     13 S RAPID="RA CANCEK" ; get all protocols beginning RA CANCEL
     14 F  S RAPID=$O(^ORD(101,"B",RAPID)) Q:RAPID'["RA CANCEL"  D
     15 .S RAEID=$O(^ORD(101,"B",RAPID,0))
     16 .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
     17 Q
     18 ;
     19RPT ; report verified or released/not verified
     20 N X,RAPID,RAEID,RASSS ; RASSS subcriber array to be passed to HLL for GENERATE^HLMA
     21 ;S X="^%ET",@^%ZOSF("TRAP")
     22 S RAPID="RA RPS" ; get all protocols beginning RA RPT
     23 F  S RAPID=$O(^ORD(101,"B",RAPID)) Q:RAPID'["RA RPT"  D
     24 .S RAEID=$O(^ORD(101,"B",RAPID,0)) K RASSS  ; RA*5*81
     25 .S:$L($G(RANOSEND)) RAEID=$$GETEID(RAEID,RANOSEND,.RASSS) ;RA*5*81
     26 .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLRPT
     27 K RANOSEND
     28 Q
     29 ;
     30EXM ;Examined case; called from RAUTL1 and RASTED after a case has been edited.
     31 ;
     32 ;Called from RAUTL1 and RASTED after a case's status is upgraded
     33 ; and case's 30th piece is null
     34 ;
     35 ;If this new status is :
     36 ; at a status (or higher than a status) where
     37 ; GENERATE EXAMINED HL7 MSG = Y,
     38 ; then :
     39 ; 1. send an HL7 msg re this case having reached EXAMINED status
     40 ; 2. set subfile 70.03's HL7 EXAMINED MSG SENT  to  Y
     41 ;
     42 ; RALOWER = next lower status
     43 ; RANEWST = new status ien
     44 ; RAEXEDT = Indication of editing of: proc, proc mod, req phys, CPT mod, Tech comm...
     45 ; RAGENHL7 = Indication that sending ORU is due...
     46 ;
     47 N RAIMGTYI,RAIMGTYJ,RALOWER,RANEWST,RAEXMDUN,RAGENHL7
     48 S RAIMGTYI=$P($G(^RADPT(RADFN,"DT",RADTI,0)),U,2),RAIMGTYJ=$P(^RA(79.2,RAIMGTYI,0),U),RANEWST=$P($G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),U,3)
     49 S:$P(^RA(72,RANEWST,0),U,8)="Y" RAGENHL7=1 ;this status has GEN HL7 marked Y
     50 ; look thru lower statuses for GEN HL7 marked Y
     51DOWN S RALOWER=$P($G(^RA(72,+RANEWST,0)),U,3)
     52 I '$G(RAGENHL7) F  S RALOWER=$O(^RA(72,"AA",RAIMGTYJ,RALOWER),-1) Q:RALOWER<1  S:$P(^RA(72,+$O(^RA(72,"AA",RAIMGTYJ,RALOWER,0)),0),U,8)="Y" RAGENHL7=1
     53 ;?? none of the lower status levels have GEN HL7 marked Y
     54 K:$P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,30)="Y" RAGENHL7 ;already sent
     55 Q:'$G(RAEXEDT)&'$G(RAGENHL7)
     56 ;
     571 N RAEXMDUN
     58 S RAEXMDUN=1
     59A1 N X,RAPID,RAEID
     60 S RAPID="RA EXAMINEC" ; get all protocols beginning RA EXAMINED
     61 F  S RAPID=$O(^ORD(101,"B",RAPID)) Q:RAPID'["RA EXAMINED"  D
     62 .N RAGENHL7 S RAEID=$O(^ORD(101,"B",RAPID,0))
     63 .I RAEID,'$L($P(^ORD(101,RAEID,0),"^",3)) D EN^RAHLR
     64 S:$G(RAGENHL7) $P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),U,30)="Y"
     65 Q
     66 ;
     67GETEID(RAEID,RANOSEND,RASSS) ; RA*5*81   Return RAEID or 0 (zero)  = for future use.
     68 ; RAEID = IEN of regular Event driver
     69 ; RANOSEND Application name or IEN from 771 file..  don't send message to Subcr. with this application.
     70 ; RASSS Array of subcribers (IENs) associated with RANOSEND application
     71 ; 0 (zero) returned if No subscriber exist or all subscribers associated with RANOSEND application.
     72 S RAEID=$G(RAEID) Q:'RAEID!'$L($G(RANOSEND))!'$D(^ORD(101,+RAEID,0)) RAEID
     73 N RAXX,ERR,X1,Y1,YY,RAPL,RANEW,RAPIDS,RAIEDS
     74 S RAPL=$S(+RANOSEND:+RANOSEND,1:$O(^HL(771,"B",RANOSEND,0))) Q:'RAPL RAEID
     75 D GETS^DIQ(101,RAEID_",","**","I","RAXX","ERR")
     76 Q:$D(ERR) RAEID ; Was not able get Event driver info... so just pass event driver...
     77 Q:'$D(RAXX(101.0775)) 0  ;No subcribers exist for Event driver
     78 S X1="",RANEW=0,Y1=0 F  S X1=$O(RAXX(101.0775,X1)) Q:'$L(X1)  D
     79 .S YY=$G(RAXX(101.0775,X1,.01,"I"))
     80 .I $P($G(^ORD(101,+YY,770)),U,2)=RAPL D  Q
     81 ..S Y1=Y1+1,RASSS("EXCLUDE SUBSCRIBER",Y1)=YY ;Y1= 1,2,3...
     82 .S RANEW=1
     83 Q:'RANEW 0  ;All subscribers are associated with application RANOSEND..  Don't send the message.
     84 Q RAEID
Note: See TracChangeset for help on using the changeset viewer.