Ignore:
Timestamp:
Jan 25, 2011, 5:58:58 AM (13 years ago)
Author:
Sam Habiel
Message:

Final checkin. Completed ability to be able to remove appointments that have been checked in. Also, fixed not being able to make an appointment at midnight issue.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Scheduling/trunk/m/BSDXAPI.m

    r1076 r1080  
    1 BSDXAPI ; IHS/ANMC/LJF - SCHEDULING APIs ; 12/6/10 5:50pm
     1BSDXAPI ; IHS/ANMC/LJF - SCHEDULING APIs ; 1/25/11 1:00pm
    22        ;;1.42;BSDX;;Dec 07, 2010;Build 7
    33        ;Orignal routine is BSDAPI by IHS/LJF, HMW, and MAW
     
    55        ;Move to BSDX namespace as BSDXAPI from BSDAPI by WV/SMH
    66        ; Change History:
    7         ; 2010-11-5:
     7        ; 2010-11-5: (1.42)
    88        ; - Fixed errors having to do uncanceling patient appointments if it was a patient cancelled appointment.
    99        ; - Use new style Fileman API for storing appointments in file 44 in $$MAKE due to problems with legacy API.
    10         ; 2010-11-12:
     10        ; 2010-11-12: (1.42)
    1111        ; - Changed ="C" to ["C" in SCIEN. Cancelled appointments can be "PC" as well.
    12         ; 2010-12-5
     12        ; 2010-12-5 (1.42)
    1313        ; Added an entry point to update the patient note in file 44.
    14         ; 2010-12-6
     14        ; 2010-12-6 (1.42)
    1515        ; MAKE1 incorrectly put info field in BSDR("INFO") rather than BSDR("OI")
    16         ; 2010-12-8
     16        ; 2010-12-8 (1.42)
    1717        ; Removed restriction on max appt length. Even though this restriction
    1818        ; exists in fileman (120 minutes), PIMS ignores it. Therefore, I
    1919        ; will ignore it here too.
     20        ; 2011-01-25 (v.1.5)
     21        ; Added entry point $$RMCI to remove checked in appointments.
     22        ; In $$CANCEL, if the appointment is checked in, delete check-in rather than
     23        ;  spitting an error message to the user saying 'Delete the check-in'
     24        ; Changed all lines that look like this:
     25        ;  I $G(BSDR("ADT"))'?7N1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
     26        ; to:
     27        ;  I $G(BSDR("ADT"))'?7N.1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
     28        ; to allow for date at midnight which does not have a dot at the end.
     29        ; 
    2030        ;
    2131MAKE1(DFN,CLIN,TYP,DATE,LEN,INFO)       ; Simplified PEP w/ parameters for $$MAKE - making appointment
     
    5464        I ($G(BSDR("TYP"))<3)!($G(BSDR("TYP"))>4) Q 1_U_"Appt Type error: "_$G(BSDR("TYP"))
    5565        I $G(BSDR("ADT")) S BSDR("ADT")=+$E(BSDR("ADT"),1,12)  ;remove seconds
    56         I $G(BSDR("ADT"))'?7N1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
     66        I $G(BSDR("ADT"))'?7N.1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
    5767        ;
    5868        ;I ($G(BSDR("LEN"))<5)!($G(BSDR("LEN"))>240) Q 1_U_"Appt Length error: "_$G(BSDR("LEN")) ; v 1.42 - no check on length is done anymore. see top comments for details.
     
    150160        I '$D(^SC(+$G(BSDR("CLN")),0)) Q 1_U_"Clinic not on file: "_$G(BSDR("CLN"))
    151161        I $G(BSDR("ADT")) S BSDR("ADT")=+$E(BSDR("ADT"),1,12)  ;remove seconds
    152         I $G(BSDR("ADT"))'?7N1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
     162        I $G(BSDR("ADT"))'?7N.1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
    153163        I $G(BSDR("CDT")) S BSDR("CDT")=+$E(BSDR("CDT"),1,12)  ;remove seconds
    154         I $G(BSDR("CDT"))'?7N1".".4N Q 1_U_"Checkin Date/Time error: "_$G(BSDR("CDT"))
     164        I $G(BSDR("CDT"))'?7N.1".".4N Q 1_U_"Checkin Date/Time error: "_$G(BSDR("CDT"))
    155165        I '$D(^VA(200,+$G(BSDR("USR")),0)) Q 1_U_"User Who Made Appt Error: "_$G(BSDR("USR"))
    156166        ;
     
    219229        I ($G(BSDR("TYP"))'="C"),($G(BSDR("TYP"))'="PC") Q 1_U_"Cancel Status error: "_$G(BSDR("TYP"))
    220230        I $G(BSDR("ADT")) S BSDR("ADT")=+$E(BSDR("ADT"),1,12)  ;remove seconds
    221         I $G(BSDR("ADT"))'?7N1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
     231        I $G(BSDR("ADT"))'?7N.1".".4N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT"))
    222232        I $G(BSDR("CDT")) S BSDR("CDT")=+$E(BSDR("CDT"),1,12)  ;remove seconds
    223         I $G(BSDR("CDT"))'?7N1".".4N Q 1_U_"Cancel Date/Time error: "_$G(BSDR("CDT"))
     233        I $G(BSDR("CDT"))'?7N.1".".4N Q 1_U_"Cancel Date/Time error: "_$G(BSDR("CDT"))
    224234        I '$D(^VA(200,+$G(BSDR("USR")),0)) Q 1_U_"User Who Canceled Appt Error: "_$G(BSDR("USR"))
    225235        I '$D(^SD(409.2,+$G(BSDR("CR")))) Q 1_U_"Cancel Reason error: "_$G(BSDR("CR"))
     
    229239        I 'IEN Q 1_U_"Error trying to find appointment for cancel: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT")
    230240        ;
    231         I $$CI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) Q 1_U_"Patient already checked in; cannot cancel until checkin deleted: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT")
     241        ; BSDX 1.5 3110125
     242        ; UJO/SMH - Add ability to remove check-in if the patient is checked in
     243        ; I $$CI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) Q 1_U_"Patient already checked in; cannot cancel until checkin deleted: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT")
     244        ; Remove check-in if the patient is checked in.
     245        N BSDXRESULT S BSDXRESULT=0 ; Result; should be zero if success; -1 + message if failure
     246        I $$CI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) SET BSDXRESULT=$$RMCI(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"))
     247        I BSDXRESULT Q BSDXRESULT
    232248        ;
    233249        ; remember before status
     
    276292        ; -1 if failure
    277293        ;
    278         ; remember before status
     294        ; Call like this: $$RMCI(233,33,3110102.1130)
     295        ;
     296        ; Move my variables into the ones used by SDAPIs (just a convenience)
    279297        NEW SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL
    280298        S DFN=PAT,SDT=DATE,SDCL=CLINIC,SDMODE=2,SDDA=$$SCIEN(DFN,SDCL,SDT)
     
    282300        I SDDA<1 QUIT 0    ; Appt cancelled; cancelled appts rm'ed from file 44
    283301        ;
     302        ; remember before status
    284303        S SDCIHDL=$$HANDLE^SDAMEVT(1),SDATA=SDDA_U_DFN_U_SDT_U_SDCL
    285304        D BEFORE^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCIHDL)
     
    322341        ;
    323342UPDATENOTE(PAT,CLINIC,DATE,NOTE)        ; PEP; Update Note in ^SC for patient's appointment @ DATE
    324            ; PAT = DFN
    325            ; CLINIC = SC IEN
    326            ; DATE = FM Date/Time of Appointment
    327            ;
    328            ; Returns:
    329            ; 0 if okay
    330            ; -1 if failure
    331            N SCIEN S SCIEN=$$SCIEN(PAT,CLINIC,DATE) ; ien of appt in ^SC
    332            I SCIEN<1 QUIT 0    ; Appt cancelled; cancelled appts rm'ed from file 44
    333            N BSDXIENS S BSDXIENS=SCIEN_","_DATE_","_CLINIC_","
    334            S BSDXFDA(44.003,BSDXIENS,3)=$E(NOTE,1,150)
    335            N BSDXERR
    336            D FILE^DIE("","BSDXFDA","BSDXERR")
    337            I $D(BSDXERR) QUIT "-1~Can't file for Pat "_PAT_" in Clinic "_CLINIC_" at "_DATE_". Fileman reported an error: "_BSDXERR("DIERR",1,"TEXT",1)
    338            QUIT 0
     343        ; PAT = DFN
     344        ; CLINIC = SC IEN
     345        ; DATE = FM Date/Time of Appointment
     346        ;
     347        ; Returns:
     348        ; 0 if okay
     349        ; -1 if failure
     350        N SCIEN S SCIEN=$$SCIEN(PAT,CLINIC,DATE) ; ien of appt in ^SC
     351        I SCIEN<1 QUIT 0    ; Appt cancelled; cancelled appts rm'ed from file 44
     352        N BSDXIENS S BSDXIENS=SCIEN_","_DATE_","_CLINIC_","
     353        S BSDXFDA(44.003,BSDXIENS,3)=$E(NOTE,1,150)
     354        N BSDXERR
     355        D FILE^DIE("","BSDXFDA","BSDXERR")
     356        I $D(BSDXERR) QUIT "-1~Can't file for Pat "_PAT_" in Clinic "_CLINIC_" at "_DATE_". Fileman reported an error: "_BSDXERR("DIERR",1,"TEXT",1)
     357        QUIT 0
Note: See TracChangeset for help on using the changeset viewer.